• 保姆级教程:python读取并绘制nc数据


     1.读取nc数据相关信息

    1. import netCDF4
    2. from netCDF4 import Dataset
    3. ncfile = Dataset("/home/hsy/wrf-workstation/wrf-version4.4/WPS/geo_em.d01.nc")
    4. ncfile
    5. print(ncfile.variables.keys())
    6. import matplotlib.pyplot as plt
    7. long = ncfile["XLONG_M"][:]
    8. long
    9. lat = ncfile["XLAT_M"][:]
    10. lat
    11. HGT=ncfile["HGT_M"][:]
    12. HGT.shape
    13. long.shape
    14. lat.shape
    15. plt.contourf(HGT[0])
    16. plt.colorbar(label="HGT_M", orientation="horizontal")
    17. plt.show()

    2.利用basemap绘图 

    1. #利用basemap绘图
    2. import netCDF4
    3. from netCDF4 import Dataset
    4. from mpl_toolkits.basemap import Basemap
    5. import matplotlib.pyplot as plt
    6. import numpy as np
    7. ncfile = Dataset("/home/hsy/wrf-workstation/wrf-version4.4/WPS/geo_em.d01.nc")
    8. ncfile
    9. import matplotlib.pyplot as plt
    10. #开始绘图
    11. fig = plt.figure(figsize=(10,8))
    12. ax = fig.add_subplot(111)
    13. #设定标题
    14. titleName = "geo land use"
    15. #ax.set_title(titleName, pad=6, fontproperties = prop)
    16. # 设置投影方式:cyl为圆柱投影、还可设置merc为mercator投影,lcc兰伯特投影等。
    17. # 参数 "resolution" 用于控制地图面积边缘的精细程度,有 'crude', 'low' and'intermediate' resolution datasets are installed by default.
    18. #如果需要'high' or 'full' resolution dataset,需要`conda install -c conda-forge basemap-data-hires`.
    19. m = Basemap(lat_1=30, lat_2=62, lon_0=103,projection='lcc',resolution='i',
    20. llcrnrlon=80, llcrnrlat=10, urcrnrlon=145, urcrnrlat=55)
    21. # 设置经纬度
    22. # 绘制纬度坐标,纬度每隔10度画一条线,且左侧和右侧标注纬度。
    23. m.drawparallels(np.arange(10., 55., 10.), labels=[1, 1, 0, 0], fontsize=10)
    24. # 绘制经度坐标,经度每隔10度画一条线,且上侧和下侧标注经度。
    25. m.drawmeridians(np.arange(70., 160., 10.), labels=[0, 0, 1, 1], fontsize=10)
    26. #添加中国地图图层
    27. m.readshapefile("/home/hsy/03-datadownload/shpdata/china/china", "China_shp")
    28. #添加大陆地图图层
    29. m.fillcontinents(color = "coral", lake_color="blue")
    30. #设定海洋的颜色
    31. m.drawmapboundary(fill_color="aqua")
    32. #在指定位置绘制坐标点
    33. lon_me = long.mean()
    34. lat_me = lat.mean()
    35. lon_do, lat_do = np.meshgrid(lon_me, lat_me) #生成网格点坐标矩阵
    36. #print(lon,lat)
    37. xi, yi = m(lon_do, lat_do)
    38. #print(xi,yi)
    39. m.plot(xi, yi, "go") #绘制绿色点
    40. #在指定位置标注文字
    41. plt.text(xi, yi, "A1(%5.1fW, %3.1fN)" %(lon_do, lat_do))

     

    3、利用cartopy绘图

    利用cartopy绘图的详细内容,可以参考此链接: http://t.csdnimg.cn/GjYUb

    1. import cartopy.crs as ccrs
    2. import cartopy.io.shapereader as shpreader
    3. import cartopy.feature as cfeat
    4. #import reader
    5. #创建画布
    6. proj = ccrs.LambertConformal()
    7. fig = plt.figure(figsize=(15,7))
    8. #创建投影轴
    9. fig, ax = plt.subplots(1,1,subplot_kw={"projection":proj})
    10. lat1=ncfile.variables["XLAT_M"][:]
    11. lon1=ncfile.variables["XLONG_M"][:]
    12. print(lon1[0].shape, lat1[0].shape)
    13. ax.contourf(lon1[0], lat1[0],HGT[0])
    14. filepath = "/home/hsy/03-datadownload/shpdata/china/china.shp"
    15. readershp = shpreader.Reader(filepath)
    16. readershp
    17. geoms = readershp.geometries()
    18. ax.add_geometries(geoms, proj, lw=0.5, fc="none") #facecolor="none"前景色无。
    19. readershp.close()
    20. plt.show()

  • 相关阅读:
    上周热点回顾(8.29-9.4)
    ChatGPT在工业领域的研究与应用探索-数据与工况认知
    (Note)在Excel中选中某一行至最后一行的快捷键操作
    speaker-test报错问题解决方法
    PHP - 各版本对比 - 整理
    Qt图形视图、动画框架
    15c++呵呵老师【使用UMG的用户界面】
    boot issue
    机器学习/算法工程师面试题目与答案-数学基础部分
    UE5富文本框学习(用途:A(名字)用刀(图片)击杀B(名字))
  • 原文地址:https://blog.csdn.net/A18040554844/article/details/127654490