我想将包含地理熊猫的低分辨率世界地图(请参见here)用作我的数据的背景。只要我使用例如“ PlateCarree”投影。

如果我现在想使用极地立体影像

ccrs.NorthPolarStereo()


要么

ccrs.SouthPolarStereo()


这是行不通的。

我的代码如下所示(使用python 3)

import geopandas as gpd
import cartopy.crs as ccrs

crs = ccrs.NorthPolarStereo()
crs_proj4 = crs.proj4_init
world = gpd.read_file(gpd.datasets.get_path("naturalearth_lowres"))
w = world.to_crs(crs_proj4)
w.plot(facecolor='sandybrown', edgecolor='black',)


是否知道极地立体投影根本无法在该地图上使用(如果可以,为什么?),或者我做错了什么?

最佳答案

使用特定的Cartopy投影进行绘图时,最好使用Cartopy实际创建matplotlib图形和轴,以确保它知道该投影(在技术上:确保它是GeoAxes,请参见https://scitools.org.uk/cartopy/docs/latest/matplotlib/intro.html ):

crs = ccrs.SouthPolarStereo()
crs_proj4 = crs.proj4_init
w = world.to_crs(crs_proj4)

fig, ax = plt.subplots(subplot_kw=dict(projection=crs))
w.plot(ax=ax, facecolor='sandybrown', edgecolor='black')


但是,这似乎仍在绘制超出范围的形状。使用cartopy add_geometries方法,可以更好地考虑范围:

fig, ax = plt.subplots(subplot_kw=dict(projection=crs))
ax.add_geometries(w['geometry'], crs=crs, facecolor='sandybrown', edgecolor='black')


python - Geopandas世界地图的极地立体投影-LMLPHP

乍一看,这看起来有些奇怪(中间的南极洲很小),但这似乎是可以预期的(请参见https://scitools.org.uk/cartopy/docs/latest/crs/projections.html#southpolarstereo)。

通常,请参见文档中有关结合GeoPandas和Cartopy的示例:https://geopandas.readthedocs.io/en/latest/gallery/cartopy_convert.html

关于python - Geopandas世界地图的极地立体投影,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55646598/

10-12 16:52