#python #function #command-line #feature-extraction #cartopy
#python #функция #командная строка #функция-извлечение #картография
Вопрос:
Здесь запутался аспирант. Я хочу добавить строки для канадских провинций так же, как ax.add_feature(feature.STATES)
и строка, но только для провинций. Кто-нибудь знает, как это сделать? Я приложил свой код ниже и карту, которую он создает.
fig, ax = plt.subplots(1, 1, figsize=(10,8))
ax = plt.axes(projection=ccrs.PlateCarree())
ax.set_global()
ax.set_extent([-140,-60,40,75], crs=ccrs.PlateCarree())
ax.coastlines()
ax.stock_img()
ax.set_xticks([-150, -140, -130, -120, -110, -100, -90, -80, -70, -60],crs=ccrs.PlateCarree())
ax.set_yticks([75, 70, 65, 60, 55, 50, 45],crs=ccrs.PlateCarree())
ax.add_feature(feature.BORDERS)
ax.add_feature(feature.STATES)
ax.set_title('Map of Areas with Projected Viable Summer Temperatures in 2020', size = 'xx-large')
ax.add_feature(feature.LAND)
ax.add_feature(feature.COASTLINE)
# plot data
pc = ax.pcolormesh(lon,lat,tempsummer2020viable,cmap="OrRd")
cax,kw = mpl.colorbar.make_axes(ax,location='bottom',pad=0.05,shrink=0.7)
out=fig.colorbar(pc,cax=cax,extend='both',**kw)
out.set_label('Temperature Within Viable Limit (°C))',size=10)
Комментарии:
1. Нет необходимости. Мы, канадцы, — это один огромный неотличимый народ, который ест кленовый сироп и пьет социалистические шланги. Мы не «делаем» деления. 😉
2. Возможно, это может помочь? КАРТОГРАФИЯ И КАРТОГРАФИРОВАНИЕ В PYTHON
3. Я действительно придумал свое собственное решение!!! Вот как я сделал для всех, у кого есть подобный вопрос! states_provinces = cfeature. Естественная особенность земли (категория = ‘cultural’, имя =’admin_1_states_provinces_lines’, масштаб = ’50m’, facecolor =’none’) ax.add_feature(особенность. LAND) ax.add_feature(функция. БЕРЕГОВАЯ ЛИНИЯ) ax.add_feature(states_provinces, edgecolor=’черный’)
Ответ №1:
Вот пример кода для построения карты Канады, которая имеет некоторые основные функции, включая границы провинций, а также пример тематического слоя.
# for Canada
import matplotlib.pyplot as plt
import cartopy
import cartopy.feature as cfeature
import cartopy.crs as ccrs
import numpy as np
extent = [-130, -55, 36.5, 75]
central_lon = np.mean(extent[:2])
central_lat = np.mean(extent[2:])
plt.figure(figsize=(12, 8))
ax = plt.axes(projection=ccrs.AlbersEqualArea(central_lon, central_lat))
ax.set_extent(extent)
# data resolution
resol = '50m'
# country boundaries
country_bodr = cartopy.feature.NaturalEarthFeature(category='cultural',
name='admin_0_boundary_lines_land', scale=resol, facecolor='none', edgecolor='k')
# province boundaries
provinc_bodr = cartopy.feature.NaturalEarthFeature(category='cultural',
name='admin_1_states_provinces_lines', scale=resol, facecolor='none', edgecolor='k')
# land areas
land = cartopy.feature.NaturalEarthFeature('physical', 'land',
scale=resol, edgecolor='k', facecolor=cfeature.COLORS['land'])
# Ocean/seas
ocean = cartopy.feature.NaturalEarthFeature('physical', 'ocean',
scale=resol, edgecolor='none', facecolor=cfeature.COLORS['water'])
# Lakes
lakes = cartopy.feature.NaturalEarthFeature('physical', 'lakes',
scale=resol, edgecolor='b', facecolor=cfeature.COLORS['water'])
# Rivers
rivers = cartopy.feature.NaturalEarthFeature('physical', 'rivers_lake_centerlines',
scale=resol, edgecolor='b', facecolor='none')
# Add all features to the map
ax.add_feature(land, facecolor='beige', zorder=4)
ax.add_feature(ocean, linewidth=0.2 )
ax.add_feature(lakes, zorder=5)
ax.add_feature(rivers, linewidth=0.5, zorder=6)
ax.add_feature(country_bodr, linestyle='--', linewidth=0.8, edgecolor="k", zorder=10) #USA/Canada
ax.add_feature(provinc_bodr, linestyle='--', linewidth=0.6, edgecolor="k", zorder=10)
# --- Begin: plot some raster-thematic layer
# simulate a spatial pattern across the map
xlims = (-130, -55)
ylims = (40, 70)
resolution = 0.2
y, x = np.mgrid[slice(ylims[0], ylims[1] resolution, resolution),
slice(xlims[0], xlims[1] resolution, resolution)]
z = -x np.sin(x)**2 np.cos(y)
im = ax.pcolormesh(x, y, z, cmap='viridis_r', zorder=7, alpha=0.2, transform=ccrs.PlateCarree())
plt.colorbar(im, ax=ax, shrink=0.5) #sample colorbar
# --- End: thematic layer plotting.
ax.gridlines(draw_labels=True, lw=1.2, edgecolor="darkblue", zorder=12)
plt.show()
И пример карты: