paper009 2023-04-28 22:19 采纳率: 50%
浏览 92

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()

  • 写回答

1条回答 默认 最新

  • 喵叔哟 领域专家: 后端开发技术领域 2023-05-02 23:10
    关注

    你提到的报错是因为在执行 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()
    

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

    评论

报告相同问题?

问题事件

  • 创建了问题 4月28日