Cartopy: Как добавить плитки ArcGIS и настроить set_extent без искажения изображения - PullRequest
0 голосов
/ 21 мая 2019

Я добавляю плитки ArcGIS к картографическому графику в Python, но когда я настраиваю ax.set_extent, чтобы увеличить фигуру для меньшего региона, плитки искажаются для определенных экстентов.Различные проекции с разной степенью вызывают проблему, и я не понимаю шаблон, но я подозреваю, что это связано с основным меридианом.Несколько примеров показаны ниже. Есть ли способ предотвратить искажение изображений листов при настройке экстента карты?

Начните с этого:

import cartopy.crs as ccrs
import cartopy.io.img_tiles as cimgt

arcgis_url = 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Shaded_Relief/MapServer/tile/{z}/{y}/{x}.jpg'
tiles = cimgt.GoogleTiles(url=arcgis_url)

Пример 1: плитки работают должным образом наполное изображение PlateCarree:

fig = plt.figure(figsize=(10,5))
ax = fig.add_subplot(1,1,1, projection=ccrs.PlateCarree())
ax.coastlines()
ax.add_image(tiles,1)

enter image description here

Пример 2: плитки также работают, как и ожидалось, с Ламбертом Конформное изображение, увеличенное для США и Атлантического океана:

fig = plt.figure(figsize=(10,5))
ax = fig.add_subplot(1,1,1, projection=ccrs.LambertConformal(central_longitude=-100))
ax.coastlines()
ax.add_image(tiles,1)
ax.set_extent([-130, -10, 10, 50], crs=ccrs.PlateCarree())

enter image description here

Пример 3: плитки НЕ работают при увеличении плиты Карри к западу от основного меридиана:

fig = plt.figure(figsize=(10,5))
ax = fig.add_subplot(1,1,1, projection=ccrs.PlateCarree())
ax.coastlines()
ax.add_image(tiles,1)
ax.set_extent([-130, -10, 10, 50], crs=ccrs.PlateCarree())

enter image description here

Пример 4. Плитки НЕ работают для этого Ламберта. Конформная степень:

fig = plt.figure(figsize=(10,5))
ax = fig.add_subplot(1,1,1, projection=ccrs.LambertConformal(central_longitude=-100))
ax.coastlines()
ax.add_image(tiles,1)
ax.set_extent([-130, -40, 20, 50], crs=ccrs.PlateCarree())

enter image description here

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