網站首頁 編程語言 正文
獲取nc數據的相關信息
from netCDF4 import Dataset
import numpy as np
import pandas as pd
import os
import matplotlib.pyplot as plt
path = "F:\\OCO2.SIF.all.daily.2001.nc"
csv_path = "F:\\test.csv"
dst = Dataset(path, mode='r', format="netCDF4")
print(dst.variables.keys())
data = dst.variables['all_daily_sif'][:]
print(data.shape)
# 輸出結果如下:
# dict_keys(['lat', 'lon', 'doy', 'all_daily_sif'])
# (92, 360, 720)
#可見有92個時間序列,經度(lon)、緯度(lat)的取值有720,360個
# # 查看數據經緯度范圍,經度-179.75~179.75,其中負值為西經,正值為東經;緯度正為北緯,負為南緯
# # 格點分辨率為0.5度
long = dst.variables['lon'][:]
lati = dst.variables['lat'][:]
print(long[0], long[-1], lati[0], lati[-1])
print(long.shape, lati.shape)
繪圖
用matplotlib繪圖
參考文獻1
# plt對某個doy的全球sif值作圖。左半部分為西半球,右邊是東半球
# 選了doy為10的sif數據作圖
plt.contourf(long, lati, data[10, :, :] )
plt.colorbar(label="Sif", orientation="horizontal")
plt.show()
運行結果:
用Basemap繪圖
參考文獻2
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
lat = dst.variables['lat'][:]
lon = dst.variables['lon'][:]
data = dst.variables['all_daily_sif'][:]
data[10] = data[10]
# use .shape function to check that arrays have
# the correct size.
# e.g. lon.shape
print(data[10].shape)
lon0 = lon.mean()
lat0 = lat.mean()
# 設置投影方式:cyl為圓柱投影、還可設置merc為mercator投影 llcrnrlat為起始lat;urcrnrlat為終止lat
# m = Basemap(projection='merc', llcrnrlat=lat[0], urcrnrlat=lat[-1], \
# llcrnrlon=lon[0], urcrnrlon=lon[-1], ax=ax1)
# 參數 "resolution" 用于控制地圖面積邊緣的精細程度,有'l'和'h'兩種取值
m = Basemap(lat_0=lat0, lon_0=lon0,projection='cyl',resolution='l')
# 繪制等經緯度線 緯度每隔20度畫一條線,且標注經緯度
m.drawparallels(np.arange(-90., 91., 20.), labels=[1, 0, 0, 0], fontsize=10)
m.drawmeridians(np.arange(-180., 181., 40.), labels=[0, 0, 0, 1], fontsize=10)
m.drawcoastlines()# 繪制海岸線
# m.drawcountries(linewidth=0.25) # 繪制國界線
# m.readshapefile('F:\E\data\grass_yield\shp\quhua\\省', 'states') # 讀取中國各省邊界,并繪圖
lon, lat = np.meshgrid(lon, lat)
xi, yi = m(lon, lat)
# cmap是顏色,還可選‘jet'、‘spring'、‘winter'、'summer'、'autumn'
cs = m.contourf(xi, yi, data[10], cmap='summer')
# pad指位置,
cbar = m.colorbar(cs, location='bottom', pad="10%",format='%.1f')
# cbar = m.colorbar(C, 'right', ticks=np.arange(-128, 128, 40), format='%.1f')
font1 = {'family': 'DejaVu Sans', 'weight': 'normal', 'size': 16}
plt.title('CSIF', font1)
plt.show()
運行效果:
用Cartopy繪圖
參考文獻3
此前 Python 最常用的地圖包是 Basemap,然而它將于 2020 年被棄用,官方推薦使用 Cartopy 包作為替代。Cartopy 是英國氣象局開發的地圖繪圖包,實現了 Basemap 的大部分功能,還可以通過 Matplotlib 的 API 實現豐富的自定義效果。
安裝Cartopy包
下載安裝OSGeo4W4
參考文獻:https://zhuanlan.zhihu.com/p/129351199?
參考文獻:https://blog.csdn.net/weixin_39618339的plt畫圖像圖例的位置怎么寫代碼_用basemap畫氣象圖?
參考文獻: https://zhajiman.github.io/?
https://trac.osgeo.org/osgeo4w/
總結
原文鏈接:https://blog.csdn.net/suexisang/article/details/122768900
相關推薦
- 2022-09-27 React?函數式組件和類式組件詳情_React
- 2023-05-22 pycharm中執行.sh文件的方法步驟_python
- 2023-10-10 uniapp省市區選擇 支持微信小程序 支持回顯 支持一列兩列三列
- 2023-05-16 golang-gorm自動建表問題_Golang
- 2022-07-29 Ubuntu中的sudo和su命令介紹_linux shell
- 2022-11-12 Kotlin中的惰性操作容器Sequence序列使用原理詳解_Android
- 2021-11-12 C/C++?Qt?StatusBar底部狀態欄應用教程_C 語言
- 2022-08-04 python?pdb調試器及使用方法_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支