Python 3.x 在geopandas中溶解后删除多边形的内线

Python 3.x 在geopandas中溶解后删除多边形的内线,python-3.x,gis,geopandas,Python 3.x,Gis,Geopandas,我正在使用一个城市的地理数据框架,其中每个单位都是一个地区(行政区划)。其情节如下所示: import geopandas as gpd df = gpd.read_file('districts_lima.geojson') df.plot() 然后,我使用一个名为zone的变量将一些地理单元合并成更大的组。结果是: df2 = df.dissolve(by='zone', aggfunc='sum') df2.plot(column='population', legend=True,

我正在使用一个城市的地理数据框架,其中每个单位都是一个地区(行政区划)。其情节如下所示:

import geopandas as gpd
df = gpd.read_file('districts_lima.geojson')
df.plot()

然后,我使用一个名为
zone
的变量将一些地理单元合并成更大的组。结果是:

df2 = df.dissolve(by='zone', aggfunc='sum')
df2.plot(column='population', legend=True, cmap='Blues')

我唯一的问题是,当我用较暗的边界复制相同的绘图时,很明显,一些合并的多边形(区域)具有内线,这些内线是原始地理数据框的内部区域边界。此图清楚地显示了这一点:

df2.plot(column='population', legend=True, cmap='Blues', edgecolor='black')

有没有一种方法可以使用地理坐标板删除多边形的内线,这样它们就不会出现在最后一个绘图中

可以找到我的数据。

使用轴(ax1)可以在公共轴上绘制多个图层。还可以使用zorder来排列图层,较高的值会将图层置于较低值的图层之上

fig, ax1 = plt.subplots(1, 1)
...
# bottom layer (has thick black lines)
df2.plot(column='population', legend=True, cmap='Blues', edgecolor='black', ax=ax1, zorder=5, lw=6)
# top layers (thin boundary lines)
df2.plot(column='population', legend=True, cmap='Blues', ax=ax1, zorder=6)

希望顶层将隐藏几乎所有底层,但部分外部边界线。

我实际上找到了一个很好的解决方案,该解决方案特别适用于我的问题是在应用
geopandas
dissole()
属性后创建的。显然,这个问题是由相邻内部单元的边界线的不明显差异造成的,这些差异阻止了折叠以删除生成多边形的内部线

这可以通过添加一个小缓冲区来加宽多边形线来解决,这样就可以消除那些不明显的差异,并且初始多边形的每条内线实际上都重叠。具体而言,我需要补充:

df2['geometry']=df2['geometry'].缓冲区(0.0001)

以前

df2=df.dissole(by='zone',aggfunc='sum')

现在是plot命令

df2.plot(column='population',legend=True,cmap='Blues',edgecolor='Black')

收益率:


它适用于绘图。你可以在这本笔记本的最后一张图上看到:尽管如此,我肯定需要对结果进行一些GIS分析,所以我仍然需要找到一种方法来删除内部数据lines@Luise使用
df3=df2。溶解(通过='?')
。使用“by”的适当值,您将在
df3
中获得作为单个多边形的组合区域,这将消除内部边界。感谢您的跟进,并为没有提前回复表示歉意。我实际上找到了一个解决办法,在溶解多糖之前设置一个缓冲区。我在
df2=df.dissole(by='zone',aggfunc='sum')
之前添加了行
df2['geometry']=df2['geometry'].buffer(0.0001)
,效果非常好。@Luise如果你找到了一个好的解决方案,请回答你自己的问题并将其标记为接受答案。这是我们经常做的事。你将给读者一个投票的机会。