Cartopy:如何添加ArcGIS磁贴和调整set_extent而不扭曲图像

时间:2019-05-21 14:42:58

标签: python matplotlib cartopy

我正在将ArcGIS瓷砖添加到Python中的Cartopy图中,但是当我调整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:在美国和大西洋上缩放的Lambert保形图像上,瓷砖也可以按预期工作:

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:在本初子午线以西放大的Plate Carree时,瓷砖不起作用:

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:图块在此Lambert适形范围内不起作用:

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

0 个答案:

没有答案