python绘图:cnmaps下的get_adm_maps无法实现地图边界合并

用的是cnmaps的官网案例绘制,但仍然出现报错:unsupported operand type(s) for +: 'MultiPolygon' and 'MultiPolygon',请问是geometry.MultiPolygon的原因吗?需要怎么解决呢

import cartopy.crs as ccrs
import matplotlib.pyplot as plt
from cnmaps import get_adm_maps, draw_map

beijing = get_adm_maps(province='北京市', only_polygon=True, record='first')
tianjin = get_adm_maps(province='天津市', only_polygon=True, record='first')
hebei = get_adm_maps(province='河北省', only_polygon=True, record='first')

jingjinji = beijing + tianjin + hebei

fig = plt.figure(figsize=(5,5))
ax = fig.add_subplot(111, projection=ccrs.PlateCarree())
draw_map(jingjinji)

plt.show()

你提到的报错是因为在执行 beijing + tianjin + hebei 时,尝试将 MultiPolygon 对象相加,但是这是不支持的操作。

可以将 beijing, tianjin, 和 hebei 合并成一个 MultiPolygon 对象,然后再进行地图绘制。你可以使用 shapely 库中的 MultiPolygon 方法来将多个 Polygon 对象合并为一个 MultiPolygon 对象。示例代码如下:

from shapely.geometry import MultiPolygon

beijing = get_adm_maps(province='北京市', only_polygon=True, record='first')
tianjin = get_adm_maps(province='天津市', only_polygon=True, record='first')
hebei = get_adm_maps(province='河北省', only_polygon=True, record='first')

# 合并成一个 MultiPolygon 对象
jingjinji = MultiPolygon([beijing, tianjin, hebei])

fig = plt.figure(figsize=(5,5))
ax = fig.add_subplot(111, projection=ccrs.PlateCarree())
draw_map(jingjinji)
 
plt.show()

这样应该可以解决报错问题。