日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Cartopy理解变换和投影关键字

發布時間:2024/1/8 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Cartopy理解变换和投影关键字 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

翻譯一下官網說明,為了幫助和我一樣英語不好的人。
Understanding the transform and projection keywords — cartopy 0.20.0 documentation

很容易混淆投影和變換關鍵字參數的實際含義。在這里,我們將使用一些簡單的例子來說明每種方法的效果。

核心概念是子圖(或軸?zxes)的投影獨立于定義數據的坐標系。“投影”參數用于創建繪圖并確定結果繪圖的投影(即繪圖的外觀)。plotting函數transform參數告訴Cartopy數據在哪個坐標系中定義。

首先,我們將創建一些在常規緯度/經度網格上定義的虛擬數據:

import numpy as nplon = np.linspace(-80, 80, 25) lat = np.linspace(30, 70, 25) lon2d, lat2d = np.meshgrid(lon, lat)data = np.cos(np.deg2rad(lat2d) * 4) + np.sin(np.deg2rad(lon2d) * 4)

讓我們嘗試在PlateCarree投影中繪制一個圖,而不指定transform參數。由于數據恰好是在我們正在繪制的同一坐標系中定義的,因此這實際上是正確的:

import cartopy.crs as ccrs import matplotlib.pyplot as plt# The projection keyword determines how the plot will look plt.figure(figsize=(6, 3)) ax = plt.axes(projection=ccrs.PlateCarree()) ax.set_global() ax.coastlines()ax.contourf(lon, lat, data) # didn't use transform, but looks ok... plt.show()

?下面我們加入?transform關鍵字:

# The data are defined in lat/lon coordinate system, so PlateCarree() # is the appropriate choice: data_crs = ccrs.PlateCarree()# The projection keyword determines how the plot will look plt.figure(figsize=(6, 3)) ax = plt.axes(projection=ccrs.PlateCarree()) ax.set_global() ax.coastlines()ax.contourf(lon, lat, data, transform=data_crs) plt.show()

?

?看到畫的圖沒有改變嗎?這是因為未提供transform參數時的默認假設是坐標系與投影匹配,到目前為止一直如此。

現在,我們將再次嘗試此操作,但對繪圖使用不同的投影。我們將繪制到旋轉的極點投影上,我們將省略transform參數以查看發生了什么:

# Now we plot a rotated pole projection projection = ccrs.RotatedPole(pole_longitude=-177.5, pole_latitude=37.5) plt.figure(figsize=(6, 3)) ax = plt.axes(projection=projection) ax.set_global() ax.coastlines()ax.contourf(lon, lat, data) # didn't use transform, uh oh! plt.show()

?結果圖不正確!我們沒有告訴Cartopy我們的數據是在什么坐標系中定義的,所以它假設它與我們正在繪制的投影相同,并且數據繪制在錯誤的位置。

我們可以通過提供transform參數來解決此問題,該參數與以前相同,因為數據的坐標系沒有更改:

# A rotated pole projection again... projection = ccrs.RotatedPole(pole_longitude=-177.5, pole_latitude=37.5) data_crs = ccrs.PlateCarree() plt.figure(figsize=(6, 3)) ax = plt.axes(projection=projection) ax.set_global() ax.coastlines()# ...but now using the transform argument ax.contourf(lon, lat, data, transform=data_crs) plt.show()

最安全的做法是始終提供transform關鍵字,而不考慮使用的投影,并避免讓Cartopy對數據的坐標系進行假設。這樣做允許您為繪圖選擇任何地圖投影,并允許Cartopy在數據應位于的位置繪制數據:

# We can choose any projection we like... projection = ccrs.InterruptedGoodeHomolosine() plt.figure(figsize=(6, 7)) ax1 = plt.subplot(211, projection=projection) ax1.set_global() ax1.coastlines() ax2 = plt.subplot(212, projection=ccrs.NorthPolarStereo()) ax2.set_extent([-180, 180, 20, 90], crs=ccrs.PlateCarree()) ax2.coastlines()# ...as long as we provide the correct transform, the plot will be correct ax1.contourf(lon, lat, data, transform=data_crs) ax2.contourf(lon, lat, data, transform=data_crs) plt.show()

?

?

總結

以上是生活随笔為你收集整理的Cartopy理解变换和投影关键字的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。