簡體   English   中英

如何以灰度轉換 Cartopy 瓦片 (2022)

[英]How to convert Cartopy tiles in gray scale (2022)

我正在嘗試將地形數據顯示為背景,以將我擁有的一些洪水數據放在最上面。 而且我想以特定的色標(灰色似乎很流行)顯示此地形,以避免在我的顏色條中為洪水數據使用該顏色以避免混淆。

我正在使用 Cartopy 的 img_tiles,實際上 4 年前就有人問過同樣的問題( How to convert Cartopy tiles in grayscale? )。 但是現在解決方案(添加 cmap="...")似乎不再適用於較新版本的 Cartopy。 嘗試“cmap”時出現以下錯誤:錯誤 那么,是否有不同的方法將圖像轉換為灰度以進行繪圖?

我的代碼如下:

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',代碼可以工作,但它會給我一個固定的顏色:默認顏色

編輯 1:我對 ShadeReliefESRI 有同樣的問題,似乎問題不是來自我如何獲取地形數據,而是來自我如何顯示它,軸 (ax) 的創建方式或 function 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 嘗試 plot,有趣的是,圖形仍然顯示,看起來不錯,但錯誤也出現了,它阻止我使用 savefig()。

我沒有問題運行你的代碼。 我使用 cartopy 版本 0.19.0.post1。

灰色背景

如果您更喜歡背景的黑白圖像,可以從ref中選擇“碳粉”貼圖。 例如,使用此代碼片段

stamen_terrain = cimgt.Stamen(desired_tile_form='RGB', style="toner")
ax.add_image(stamen_terrain, 8, alpha=0.4)

你可以得到這個 plot:

灰色2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM