Как установить смещение для геометрии python cartopy? - PullRequest
0 голосов
/ 16 сентября 2018

Таким образом, проблема заключается в том, что когда я добавляю геометрию из файла .shp к рисунку в виде карт, есть смещение, и я не знаю, как установить смещение.

Я новичок в Python, поэтому любойпомощь приветствуется.

изображение здесь

import numpy as np
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as cfeature
#from cartopy.feature import GSHHSFeature 

from cartopy.io.shapereader import Reader


canada_east = -63
canada_west = -123
canada_north = 75
canada_south = 37

standard_parallels = (49, 77)
central_longitude = -(91 + 52 / 60)

data = Reader('icitw_wgs84')

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1,
                     projection=ccrs.LambertConformal(central_longitude=central_longitude,
                                                      standard_parallels=standard_parallels))
ax.set_extent([-79.65, -79.1, 43.57, 43.87])


ax.add_feature(cfeature.LAKES.with_scale('10m'))
ax.add_feature(cfeature.LAND.with_scale('10m'))
ax.add_feature(cfeature.RIVERS.with_scale('10m'))


ax.add_geometries(data.geometries(), crs=ccrs.Geodetic(), edgecolor='k', facecolor='none')

1 Ответ

0 голосов
/ 19 сентября 2018

Я думаю, что вы видите из-за набора данных низкого разрешения земли / озера. Для карт такого масштаба вам, вероятно, лучше использовать плитки карт вместо элемента NaturalEarth land. Есть несколько вариантов, уже доступных в картопы, Stamen Terrain или Open Street Map могут быть хорошими вариантами:

import numpy as np
import matplotlib.pyplot as plt
import cartopy.crs as ccrs

from cartopy.io.shapereader import Reader
from cartopy.io.img_tiles import StamenTerrain, OSM

standard_parallels = (49, 77)
central_longitude = -(91 + 52 / 60)

data = Reader('citygcs')

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1,                  
                     projection=ccrs.LambertConformal(central_longitude=central_longitude,                                     
                                                      standard_parallels=standard_parallels))
ax.set_extent([-79.65, -79.1, 43.57, 43.87])

tiler = OSM()
ax.add_image(tiler, 10)

ax.add_geometries(data.geometries(), crs=ccrs.Geodetic(), edgecolor='k', 
facecolor='none')
plt.show()

Totornto OSM

Или используя StamenTerrain:

Toronto Stamen

Могут быть и другие проблемы, связанные со ссылкой на эллипс (я заметил WGS84 в названии шейп-файла), здесь есть хорошая ссылка: https://scitools.org.uk/cartopy/docs/v0.16/gallery/effects_of_the_ellipse.html.

В будущем будет полезно, если ваш пример кода будет минимальным и все данные будут доступны (мне пришлось самостоятельно найти подобный шейп-файл для воспроизведения), см. Здесь руководство: https://stackoverflow.com/help/mcve.

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