Карта мира геопанд в полярной стереографической проекции с цветными океанами - PullRequest
1 голос
/ 12 апреля 2019

Добавив дополнительное требование к этому вопросу , мне также нужно иметь океаны синего (или любого другого цвета).

Для проекции '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')

А теперь добавим цвет океана

g.set_facecolor('#A8C5DD')

Если я теперь хочу использовать полярную стереографическую проекцию

ccrs.NorthPolarStereo()

или

ccrs.SouthPolarStereo()

проекция не работает.При применении ответа на этот вопрос я не могу раскрасить океаны

1 Ответ

1 голос
/ 12 апреля 2019

Вам необходимо нанести на карту Cartopy геометрию карты geoaxes и использовать cartopy.feature.OCEAN для построения океана. Вот рабочий код, который вы можете попробовать. Прочитайте комментарии в коде для уточнения.

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

Выходной участок будет:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...