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()的预期输出,而不是不正确的缓冲区距离。当输出特性计数为1时,我错误地得出了缓冲区距离是错误的结论。在前面手动运行Buffer_analysis()时,我没有仔细查看输出,只是以图形方式查看了它。我以为我在看多个多边形,但实际上它是一个有多个外环的单一多边形。因此,添加一个调用MultipartToSinglepart_management()来将外环转换为多边形解决了我的问题。

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

0.荣誉
4回复
DavidPike
经过 MVP频繁的贡献者
MVP频繁的贡献者

我相信当你从桌面运行它时,Planar参数是从地图/数据帧的CRS中获取的,如果不是已经在平面CRS中。当在桌面外运行时,它将十进制度等同于平面度量单位,并使您的缓冲区很大。这不是福音,只是我的记忆/经验的解释。

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

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

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

谢谢,Davidpike。

我现在这样做:

Degrees_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.荣誉
DavidPike
经过 MVP频繁的贡献者
MVP频繁的贡献者

忘掉degrees_per_meter,让软件做它设计的事情。

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

例如'10米'

distance = '{0} Meters'.format(float(bin_radius)) arcpy。(fc_photo, fc_buffer, distance, dissolve_option='ALL', method='GEODESIC')
0.荣誉
AlanStewart
经过
偶尔的贡献者

谢谢,Davidpike。

事实证明,真正的问题是我误解了Buffer_analysis()的预期输出,而不是不正确的缓冲区距离。当输出特性计数为1时,我错误地得出了缓冲区距离是错误的结论。在前面手动运行Buffer_analysis()时,我没有仔细查看输出,只是以图形方式查看了它。我以为我在看多个多边形,但实际上它是一个有多个外环的单一多边形。因此,添加一个调用MultipartToSinglepart_management()来将外环转换为多边形解决了我的问题。

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

0.荣誉