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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python Cartopy地图投影【2】

發布時間:2023/12/10 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python Cartopy地图投影【2】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上期文章見:Python Cartopy地圖投影【1】
上期文章內容綱要:

step1: 開始地圖投影
step2: GeoAxes 的常用方法
2.1 add_feature:添加海岸線、河流、湖泊等地理特征
2.2 gridlines:添加網格線以及相應標簽等

這期內容繼續

2.3 set_extent:設置地理邊界

這個方法是用于設置GeoAxes的范圍(上下左右邊界)。
語法格式:

axes.gridlines(extents, crs=None)

在這里
extents:范圍,格式為(x0, x1, y0, y1) ,分別對應左右下上的經緯度邊界
crs: 投影。若不設置則默認為ax1的投影
設置邊界范圍的圖【代碼見最后】

2.4 set_boundary:裁剪子圖形狀

語法格式:

axes.set_boundary(path, transform=None)

關于這個函數的使用,我們將在接下來的蘭伯特投影和極地投影中舉例介紹。

3 三種常見地圖投影與實用技巧

我們針對不同的研究范圍需要使用不同的地圖投影,以保證關注范圍的圖形變形最小。比如我們關注北極地區,那我們則通常使用極地投影,比如我們關注全球范圍,則我們更多使用最基礎的等距投影。所以我們要掌握這些常見投用的使用方法來應對不同的情況。

3.1 等距網格投影 PlateCarree

語法:

cartopy.crs.PlateCarree(central_longitude=0.0)
  • central_longitude:中心經度。默認為 0°
    見下圖,中心經度分別為0度(左)和180度(右)【代碼見最后】

需要說明的是,如果我們同時使用了 set_extent 方法來規定地圖的范圍(左右邊界),那么我們實際上無需通過 central_longitude 來設置中心經度,因為會自動計算左右邊界的中心值。
當我們沒有特殊需求時,我們一般都是用這個投影方式來進行繪制的。

3.2 蘭伯特投影 LambertConformal

蘭伯特投影一般用于展示中高緯度區域的圖形,因為中高緯度區域在這種投影下變形較小。
語法:

cartopy.crs.LambertConformal(central_longitude=- 96.0, central_latitude=39.0, cutoff=- 30)
  • central_longitude,central_latitude:投影中心的經度和緯度,默認分別為 96°W 和 39°N
  • cutoff:最南的緯度,默認為 30°S

這張圖其實也是360度,
這時候設置邊界不能用set_extent 函數,可用set_boundary,上圖提到

3.3 NorthPolarStereo (北)極地投影

如果我們需要關注整個經度范圍的高緯度區域時,我們會選擇極地投影,特別是研究海冰,南北極氣候的讀者會非常頻繁地運用到這個投影。這里我們以北極極地投影為例,若需調整為南極極地投影,只需將 North 關鍵字替換為 South。

語法:

cartopy.crs.NorthPolarStereo(central_longitude=0.0)

此時圓了【代碼見最后】

代碼

2.3

# 繪制東北半球地圖 # 導入庫 import matplotlib.pyplot as plt # 調用matplotlib.pyplot模塊,用于調用基礎繪圖函數 import cartopy.crs as ccrs # 調用cartopy.crs模塊,用于創建投影 import cartopy.feature as cfeature # 調用cartopy.feature模塊,引入默認地理信息 # 創建圖形 fig = plt.figure(figsize=[10, 5]) # 設置圖片大小10x5 # 創建1行1列的1個子圖,使用等距網格投影 ax1 = fig.add_subplot(1, 1, 1, projection=ccrs.PlateCarree()) ax1.add_feature(cfeature.COASTLINE) # 添加海岸線 gl = ax1.gridlines(draw_labels=True,dms=True,x_inline=False,y_inline=False) # 繪制網格線 gl.top_labels = False # 通過對gridliner對象,這里即為gl變量進行設置,關閉頂部標簽 gl.right_labels = False # 通過對gridliner對象,這里即為gl變量進行設置,關閉右側標簽 ax1.set_extent([0, 180, 0, 90]) # 將圖形范圍設置為東北半球 plt.show()

3.1

# 不同中心經度的等距網格投影 # 導入庫 import matplotlib.pyplot as plt # 調用matplotlib.pyplot模塊,用于調用基礎繪圖 import cartopy.crs as ccrs # 調用cartopy.crs模塊,用于創建投影 import cartopy.feature as cfeature # 調用cartopy.feature模塊,引入默認地理信息 import cartopy.mpl.ticker as cticker # 調用cartopy.mpl.ticker模塊,用于修改經緯度刻度格式# 創建圖形 fig = plt.figure(figsize=[10, 5]) # 設置圖片大小10x5 # 創建一個默認的等距網格投影子圖 ax1 = fig.add_subplot(1, 2, 1, projection=ccrs.PlateCarree(central_longitude=0)) # 創建1行2列的1個子圖,使用等距網格投影,中心經度0° ax1.add_feature(cfeature.COASTLINE) # 添加海岸線 # 創建一個中心經度為120°E的等距網格投影子圖 ax2 = fig.add_subplot(1, 2, 2, projection=ccrs.PlateCarree(central_longitude=180)) # 創建1行1列的1個子圖,使用等距網格投影,中心經度180° ax2.add_feature(cfeature.COASTLINE) # 添加海岸線 plt.show()

3.2

# 繪制蘭伯特投影 # 導入庫 import matplotlib.pyplot as plt # 調用matplotlib.pyplot模塊,用于調用基礎繪圖函數 import cartopy.crs as ccrs # 調用cartopy.crs模塊,用于創建投影 import cartopy.feature as cfeature # 調用cartopy.feature模塊,引入默認地理信息# 創建圖形 fig = plt.figure(figsize=[10, 5]) # 設置圖片大小10x5 ax1 = fig.add_subplot(1, 1, 1, projection=ccrs.LambertConformal(central_longitude=120, cutoff=20)) # 創建蘭伯特投影子圖 ax1.add_feature(cfeature.COASTLINE) # 添加海岸線 gl = ax1.gridlines(draw_labels=True,dms=True,x_inline=False,y_inline=False) # 添加網格線 gl.top_labels = False # 通過對gridliner對象,這里即為gl變量進行設置,關閉頂部標簽 plt.show()

3.3

# 基礎北極、南極極地投影繪制 # 導入庫 import matplotlib.pyplot as plt # 調用matplotlib.pyplot模塊,用于調用基礎繪圖函數 import cartopy.crs as ccrs # 調用cartopy.crs模塊,用于創建投影fig = plt.figure(figsize=[10, 5]) # 設置圖片大小10x5# 北極極地投影 # 創建1行2列的1個子圖,使用北極地投影 ax1 = fig.add_subplot(1, 2, 1, projection=ccrs.NorthPolarStereo()) ax1.add_feature(cfeature.COASTLINE) # 添加海岸線 gl1 = ax1.gridlines(draw_labels=True, x_inline=False, y_inline=True) # 添加網格柵格線 ax1.set_title('NorthPolarStereo')# 南極極地投影 # 創建1行2列的1個子圖,使用南極地投影 ax2 = fig.add_subplot(1, 2, 2, projection=ccrs.SouthPolarStereo()) ax2.add_feature(cfeature.COASTLINE) # 添加海岸線 gl2 = ax2.gridlines(draw_labels=True, x_inline=False, y_inline=True) # 添加網格柵格線 ax2.set_title('SouthPolarStereo') plt.show()

總結

以上是生活随笔為你收集整理的Python Cartopy地图投影【2】的全部內容,希望文章能夠幫你解決所遇到的問題。

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