如何以灰度转换 Cartopy 瓦片 (2022)
How to convert Cartopy tiles in gray scale (2022)
我正在尝试将地形数据显示为背景,以便将我拥有的一些洪水数据放在最上面。而且我想以某种颜色比例(灰色似乎很流行)显示此地形,以避免在我的颜色条中为洪水数据使用该颜色以避免混淆。
我正在使用 Cartopy 的 img_tiles,同样的问题实际上在 4 年前就已经被问过 ()。但是现在解决方案(添加 cmap="...")似乎不再适用于较新版本的 Cartopy。尝试“cmap”时出现以下错误:
error。那么,有没有其他方法可以将图像转换为灰度以进行绘图?
我的代码如下:
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.io.img_tiles as cimgt
fig = plt.figure(figsize=(10,7.5))
ax = plt.axes(projection=ccrs.PlateCarree())
[lon0,lat0,lon1,lat1] = [102., 11., 107., 15.]
ax.set_extent([lon0, lon1, lat0, lat1])
stamen_terrain = cimgt.Stamen(desired_tile_form="L", style="terrain-background")
ax.add_image(stamen_terrain, 8, cmap='gray')
没有 cmap='gray',代码可以工作,但它会给我一个固定的颜色:
default color
编辑 1:我对 ShadeReliefESRI 有同样的问题,问题似乎不是我如何获取地形数据,而是我如何显示它,轴 (ax) 的创建方式或功能 ax.add_image() 工作。当我添加 cmap 时,结果是一样的。代码如下:
from cartopy.io.img_tiles import GoogleTiles
class ShadedReliefESRI(GoogleTiles):
# shaded relief
def _image_url(self, tile):
x, y, z = tile
url = ('https://server.arcgisonline.com/ArcGIS/rest/services/' \
'World_Shaded_Relief/MapServer/tile/{z}/{y}/{x}.jpg').format(
z=z, y=y, x=x)
return url
ax.add_image(ShadedReliefESRI(), 8, cmap ='gray')
编辑 2:尝试用 Spyder 绘图,有趣的是,图形仍然显示,看起来不错,但错误也出现并且阻止我使用 savefig()。
我没有问题 运行 你的代码。我用cartopy版本0.19.0.post1.
如果您更喜欢 B/W 图片作为背景,可以从 ref 中选择“碳粉”贴图。例如,使用此代码片段
stamen_terrain = cimgt.Stamen(desired_tile_form='RGB', style="toner")
ax.add_image(stamen_terrain, 8, alpha=0.4)
你可以得到这个情节:
我正在尝试将地形数据显示为背景,以便将我拥有的一些洪水数据放在最上面。而且我想以某种颜色比例(灰色似乎很流行)显示此地形,以避免在我的颜色条中为洪水数据使用该颜色以避免混淆。
我正在使用 Cartopy 的 img_tiles,同样的问题实际上在 4 年前就已经被问过 (
我的代码如下:
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.io.img_tiles as cimgt
fig = plt.figure(figsize=(10,7.5))
ax = plt.axes(projection=ccrs.PlateCarree())
[lon0,lat0,lon1,lat1] = [102., 11., 107., 15.]
ax.set_extent([lon0, lon1, lat0, lat1])
stamen_terrain = cimgt.Stamen(desired_tile_form="L", style="terrain-background")
ax.add_image(stamen_terrain, 8, cmap='gray')
没有 cmap='gray',代码可以工作,但它会给我一个固定的颜色: default color
编辑 1:我对 ShadeReliefESRI 有同样的问题,问题似乎不是我如何获取地形数据,而是我如何显示它,轴 (ax) 的创建方式或功能 ax.add_image() 工作。当我添加 cmap 时,结果是一样的。代码如下:
from cartopy.io.img_tiles import GoogleTiles
class ShadedReliefESRI(GoogleTiles):
# shaded relief
def _image_url(self, tile):
x, y, z = tile
url = ('https://server.arcgisonline.com/ArcGIS/rest/services/' \
'World_Shaded_Relief/MapServer/tile/{z}/{y}/{x}.jpg').format(
z=z, y=y, x=x)
return url
ax.add_image(ShadedReliefESRI(), 8, cmap ='gray')
编辑 2:尝试用 Spyder 绘图,有趣的是,图形仍然显示,看起来不错,但错误也出现并且阻止我使用 savefig()。
我没有问题 运行 你的代码。我用cartopy版本0.19.0.post1.
如果您更喜欢 B/W 图片作为背景,可以从 ref 中选择“碳粉”贴图。例如,使用此代码片段
stamen_terrain = cimgt.Stamen(desired_tile_form='RGB', style="toner")
ax.add_image(stamen_terrain, 8, alpha=0.4)
你可以得到这个情节: