溶解在大熊猫中后删除多边形的内线

时间:2020-01-18 03:30:32

标签: python-3.x gis geopandas

我正在处理一个城市的地理数据框,其中每个单元都是一个区域(行政区划)。它的情节看起来像这样:

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

districts

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

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

population by zones

我的唯一问题是,当我用较暗的边界重现相同的图时,很明显,某些合并的多边形(区域)具有内部线,这些内部线是原始地理数据框的内部区域边界。在该图中可以清楚地看到:

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

population by zones with borders

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

可以在here上找到我的数据。

2 个答案:

答案 0 :(得分:3)

实际上,我找到了一个很好的解决方案,特别适用于以下事实:我的问题是在应用dissolve()的{​​{1}}属性之后创建的。显然,该问题是由于相邻内部单元的边界线之间的明显差异而导致的,该差异阻止了折叠以删除生成的多边形的内部线。

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

geopandas

之前

df2['geometry'] = df2['geometry'].buffer(0.0001)

所以现在绘图命令

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

产量:

the result I was looking for

答案 1 :(得分:1)

使用轴(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)

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

相关问题