在使用cnmaps时参考使用手册里的例程,但是直接报错了,请问这是为啥
代码如下:
fig = plt.figure(figsize=(10,10))
ax = fig.add_subplot(111, projection=ccrs.PlateCarree())
province = get_adm_maps(province='河南省', record='first', only_polygon=True)
city = get_adm_maps(city='南阳市', record='first', only_polygon=True)
ax.add_geometries(province, crs=ccrs.PlateCarree(), edgecolor='grey', facecolor='grey')
ax.add_geometries(city, crs=ccrs.PlateCarree(), edgecolor='r', facecolor='r')
draw_maps(get_adm_maps(province='河南省', level='市'), color='w', linewidth=0.8)
ax.set_extent(province.get_extent(buffer=0.5))
plt.show()
报错信息如下:
Traceback (most recent call last):
File "C:\Users\28578\Desktop\pythonProject\map.py", line 28, in <module>
ax.set_extent(province.get_extent(buffer=0.5))
File "D:\Anaconda\lib\site-packages\cartopy\mpl\geoaxes.py", line 865, in set_extent
x1, y1, x2, y2 = projected.bounds
File "D:\Anaconda\lib\site-packages\shapely\geometry\base.py", line 475, in bounds
return self.impl['bounds'](self)
File "D:\Anaconda\lib\site-packages\shapely\coords.py", line 187, in __call__
env = this.envelope
File "D:\Anaconda\lib\site-packages\shapely\geometry\base.py", line 500, in envelope
return geom_factory(self.impl['envelope'](self))
File "D:\Anaconda\lib\site-packages\shapely\topology.py", line 81, in __call__
return self.fn(this._geom, *args)
OSError: exception: access violation reading 0x0000000000000010
Exception ignored in: <function BaseGeometry.__del__ at 0x000002DD942FD670>
Traceback (most recent call last):
File "D:\Anaconda\lib\site-packages\shapely\geometry\base.py", line 209, in __del__
self._empty(val=None)
File "D:\Anaconda\lib\site-packages\shapely\geometry\base.py", line 194, in _empty
self._lgeos.GEOSGeom_destroy(self.__geom__)
OSError: exception: access violation reading 0xFFFFFFFFFFFFFFFF
Process finished with exit code 1
这个问题可能是由于获取到的地图数据类型不正确而导致的异常。有时候,使用cnmaps库提供的示例代码并不一定适用于您要绘制的具体区域,需要根据自己的需求进行调整。
您可以尝试在获取地图数据时,指定其crs参数为ccrs.PlateCarree(),即:
province = get_adm_maps(province='河南省', record='first', only_polygon=True, crs=ccrs.PlateCarree())
city = get_adm_maps(city='南阳市', record='first', only_polygon=True, crs=ccrs.PlateCarree())
此外,也建议您检查一下安装的所有库是否版本冲突或者存在其他异常情况,例如shapely库等。
如果您还遇到困难,请提供更多关于您的运行环境和完整的错误信息以便更好地帮助您解决问题。