(三)理解Cartopy中投影關鍵字

2022-07-07 12:21:09 字數 2597 閱讀 8423

首先使用numpy建立一些需要繪製的資料點(共25*25個),**如下:

import

numpy as np

lon = 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)

print(data.shape)

不設定資料投影型別,繪製這些資料點,**如下:

#

the projection keyword determines how the plot will look

plt.figure(figsize=(6, 3))

ax = plt.axes(projection=ccrs.platecarree()) # axes的projection引數最好設定,此處選擇platecarree()

ax.set_global() 

ax.coastlines()

ax.contourf(lon, lat, data)

#此處不設定資料點投影型別

從繪製結果可以看出,結果是正確的,實質為預設資料投影與platecarree()保持一致。下面設定資料投影型別,**如下:

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)

使用transform關鍵字設定資料投影,請謹記:在任何情況下,請務必設定axes的projection引數與資料點的transform引數。

當改變axes的投影時,資料的transform必須與資料本身的投影保持一致,這樣繪製的圖才是正確的,**如下:

data_crs =ccrs.platecarree()

#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,transform=data_crs) #

此處必須和資料本身投影保持一致

可以看到,資料會「自動按照」axes的投影,進行轉換,已被正確繪製在地圖上。

可以看出,只要transform關鍵字設定正確,資料就可以在任意投影下顯示正確。如果要設定資料顯示範圍,set_extent同樣需要正確設定投影引數crs。

java中this關鍵字的理解

this關鍵字 1 呼叫本類中的屬性 成員變數 2 呼叫本類中的方法 3 呼叫本類中的其他構造方法,呼叫時要放在構造方法的首行。例 public class person private string name private string phone public void setname str...

理解golang中關鍵字 chan select

channel直譯過來就是管道,chan關鍵字定義了goroutine中的管道通訊,乙個goroutine可以和另乙個goroutine進行通訊。chan的讀寫和定義如下 define a chan type variable var ch chan int make chan int,10 or ...

Java中 this 和 super 關鍵字理解

首先還是來看一下例子 package thi ample public class student public student long id public student long id,string name public void print package thi ample public...