buffer_analysis buffer_distance_or字段参数不起作用

155.
4.
跳到解决方案
周二
alanstewart.
经过
偶尔的贡献者

我似乎无法让Buffer_Analy分析缓冲我想要的距离。我正在编写一个Python工具,需要缓冲到多边形的点并将它们作为工作流的一部分溶解。来自ArcMap 10.8 UI,Buffer_Analysis工具工作时,我希望它可以在相同的输入数据和参数上工作,我正在测试我的工具。文档似乎表明我可以在从工具中调用它时为'buffer_distance_or_orf'指定'10米',但实际缓冲距离我得到很多,更大。输入要素类是地理(WGS84),但是当我使用UI的工具时,这似乎并不是问题。我收到输出中的预期缓冲距离。我在两种情况下将“方法”参数传递为“平面”。

我能做错什么?

TIA,

艾伦

0.荣誉
1解决方案

接受的解决方案
alanstewart.
经过
偶尔的贡献者

谢谢,Davidpike。

结果证明了真正的问题是我对Buffer_Analysis()的预期输出的误解,而不是不正确的缓冲距离。我错误地跳到了结论时,当输出特征计数是一个时,缓冲距离处于故障。当我早些时候ran buffer_analysis()手动时,我在输出时看起来不够紧密,只看看图形上。我以为我正在看多个多边形,但实际上它是一个单个多边形,具有多个外圈。因此,添加对MultiPartTinglePart_management()的调用将外圈转换为多边形解决了我的问题。

在原始帖子中查看解决方案

0.荣誉
4回复
戴维克斯
经过 MVP频繁的贡献者
MVP频繁的贡献者

我相信从桌面运行它时,如果尚未处于Proberimetric CRS,则从地图/ dataframe的CRS中取出平面参数。在桌面外部运行时,它将十进制度等同于平面测量单位,并使缓冲区巨大。这不是福音,只是我对记忆/体验的解释。

您最好的选择将是设置方法='Geodesic',因为我认为没有理由不到,这将解决我认为的问题。

否则,您可以将您的功能纳入适当的Planimetric CRS,然后使用先前的参数集运行该工具。

0.荣誉
alanstewart.
经过
偶尔的贡献者

谢谢,Davidpike。

我现在在这样做:

deplees_per_meter = 360.0 / 40075000.0

距离='{0} decimaldegrees'.format(float(bin_radius)* deples_per_meter)

Arcpy.buffer_Analysis(fc_photo,fc_buffer,距离,dissolve_option ='全部',方法='geodesic')

然而,缓冲距离仍然大于我期望的基础,基于我喂它的点。脚本是对ESRI的适应地理标记opTostopoints_management,因此输入点来自地理标记的JPEG文件。我正在使用多个照片添加能力将点集群合并成单点。我在ArcMap 10.8会话中运行了我的工具,一个新的完全空的地图。除了缓冲距离的情况外,一切都在外面工作。

0.荣誉
戴维克斯
经过 MVP频繁的贡献者
MVP频繁的贡献者

忘记Degle_Per_Meter,让软件执行它设计的内容。

您只需要将缓冲区_distance_or_field参数更改为'meters'

例如'10米'

距离='{0}米'.Format(Float(Bin_radius))Arcpy.buffer_Analysis(FC_Photo,FC_Buffer,距离,Dissolve_Option ='全部',方法='Geodesic')
0.荣誉
alanstewart.
经过
偶尔的贡献者

谢谢,Davidpike。

结果证明了真正的问题是我对Buffer_Analysis()的预期输出的误解,而不是不正确的缓冲距离。我错误地跳到了结论时,当输出特征计数是一个时,缓冲距离处于故障。当我早些时候ran buffer_analysis()手动时,我在输出时看起来不够紧密,只看看图形上。我以为我正在看多个多边形,但实际上它是一个单个多边形,具有多个外圈。因此,添加对MultiPartTinglePart_management()的调用将外圈转换为多边形解决了我的问题。

在原始帖子中查看解决方案

0.荣誉