【发布时间】:2018-07-14 05:14:42
【问题描述】:
关于我的工作的一些信息:
我有一个形状文件,其中包含从 ARC GIS 导出的县土壤 ssurgo 数据。它被读入 GeoDataFrame (Gdf1)。
我有一个形状文件,其中包含从 SMS AgLeader 导出的农场各个字段的边界。它已被读取为 DataFrame 并转换为 GeoDataFrame (Gdf2)。
当我执行子图时:
aa = Gdf1.plot()
Gdf2.plot(ax=aa)
我可以看到 Gdf2 落在 Gdf1 中。
这是我卡住的地方:
我正在尝试从 R 复制“裁剪”功能。Python 似乎具有应该可以工作的“叠加”功能,但我的代码从未完成运行。覆盖在这种情况下要么过慢要么根本不起作用(混淆,而不是声明 annnnnnnnd 我的沮丧点)。
R 代码示例(有效):
result <- crop(Gdf1, Gdf2)
永远不会完成执行的 Python 代码示例:
result = overlay(Gdf1, Gdf2, how='intersection')
我不确定的其他尝试:
*1。 result = Gdf1.geometry.intersects(Gdf2.geometry) # result.plot() 生成带有水平线的绘图。
*2。 result = Gdf1[Gdf1.within(Gdf2)] # result.plot() 给出错误:“cannot reindex from a duplicate axis”。
*3。 result = Gdf1['geometry'] & Gdf2['geometry'] # result.plot() 生成空白图。
【问题讨论】:
-
overlay的性能不佳目前是一个已知问题。在这方面有一些工作,在这里你可以看到一个可能的新实现发布,你可以尝试:github.com/geopandas/geopandas/pull/338#issuecomment-290303715 -
感谢您的指点。只需用“spatial_overlays”函数替换“overlay”就可以满足我的需求。当我在各个字段上迭代绘图时它仍然很慢,但至少我知道它现在可以工作。 # 有效的代码:result = spatial_overlays(Gdf1, Gdf2, how='intersection') result.plot()
标签: r python-3.x geospatial arcgis geopandas