简体   繁体   English

Geopandas 世界地图在极地立体投影与彩色海洋

[英]Geopandas world map in Polar Stereographic projection with coloured oceans

Adding a further requirement to this question , I also need to have the oceans in blue (or any other colour).向这个问题添加进一步的要求,我还需要将海洋设为蓝色(或任何其他颜色)。

For the 'PlateCarree' projection I can simply do this对于“PlateCarree”投影,我可以简单地做到这一点

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

And now adding the ocean colour现在添加海洋颜色

g.set_facecolor('#A8C5DD')

If I now want to use a polar stereographic peojection如果我现在想使用极坐标立体投影

ccrs.NorthPolarStereo()

or或者

ccrs.SouthPolarStereo()

the projection does not work.投影不起作用。 When applying the answer to this question , I cannot get the oceans coloured在回答这个问题时,我无法将海洋染上颜色

You need to plot the map geometries on Cartopy geoaxes , and use cartopy.feature.OCEAN to plot the ocean.您需要在 Cartopy geoaxes上绘制地图几何图形,并使用cartopy.feature.OCEAN绘制海洋。 Here is the working code that you may try.这是您可以尝试的工作代码。 Read the comments in the code for clarification.阅读代码中的注释以进行澄清。

import geopandas as gpd
import cartopy.crs as ccrs
import matplotlib.pyplot as plt
import cartopy

facecolor = 'sandybrown'
edgecolor = 'black'
ocean_color = '#A8C5DD'

#crs1 = ccrs.SouthPolarStereo()
crs1 = ccrs.NorthPolarStereo()

world = gpd.read_file(gpd.datasets.get_path("naturalearth_lowres"))
w1 = world.to_crs(crs1.proj4_init)

fig1, ax1 = plt.subplots(figsize=(7,7), subplot_kw={'projection': crs1})

# useful code to set map extent,
# --- if you want maximum extent, comment out the next line of code ---
ax1.set_extent([-60.14, 130.4, -13.12, -24.59], crs=ccrs.PlateCarree())

# at maximum extent, the circular bound trims map features nicely
ax1.add_geometries(w1['geometry'], crs=crs1, \
                facecolor=facecolor, \
                edgecolor=edgecolor, \
                linewidth=0.5)

# this adds the ocean coloring
ax1.add_feature(cartopy.feature.OCEAN, facecolor=ocean_color, edgecolor='none')

plt.show()

The output plot will be:输出图将是:

在此处输入图片说明

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM