我对另一个问题使用了差集操作,但在用geodataframe中的差替换多边形时,我会得到一个空的geodataframe或None类型。我发现这是因为有了不相交的多边形并进行了差集运算。我想知道这是正常的行为还是应该保持df1的几何图形?此行为在版本0.10和版本0.9之间有所不同
例如:
import geopandas
polys1 = geopandas.GeoSeries([Polygon([(0,0), (2,0), (2,2), (0,2)])])
polys2 = geopandas.GeoSeries([Polygon([(3,3), (5,3), (5,5), (3,5)])])
df1 = geopandas.GeoDataFrame({'geometry': polys1, 'df1':[1]})
df2 = geopandas.GeoDataFrame({'geometry': polys2, 'df2':[1]})
ax = df1.plot(color='red');
df2.plot(ax=ax, color='green', alpha=0.5);
显示两个不相交的多边形
如您所见,这些多边形不相交。所以当我做差集运算时
res_difference = df1.overlay(df2, how='difference')
print(res_difference)
ax = res_difference.plot(cmap='tab10')
df1.plot(ax=ax, facecolor='none', edgecolor='k');
df2.plot(ax=ax, facecolor='none', edgecolor='k');
那么输出就是这个,
我希望看到df1几何体显示在res_difference变量中。这就是差异应该起的作用吗
我希望df1几何体显示在res_差异中的原因是基于geopandas 0.9中的行为。当我使用geopandas0.9而不是geopandas0.10运行以下代码时
# I use the function vs method since it seems the method isn't
# implemented in geopandas 0.9
res_difference = geopandas.overlay(df1, df2, how='difference')
print(res_difference)
ax = res_difference.plot(cmap='tab10')
df1.plot(ax=ax, facecolor='none', edgecolor='k');
df2.plot(ax=ax, facecolor='none', edgecolor='k');
你得到这个输出
这是我希望在geopandas 0.10中看到的行为,但如果多边形不相交,则会得到一个空的GeopataFrame。这是应该发生的还是实施空间索引的结果
这是0.10版本中的回归。对不起!我们会尽快把它修好的。同时,我建议坚持0.9
相关问题 更多 >
编程相关推荐