• 联合matlab和Arcgis进行netcdf格式的雪覆盖数据的重新投影栅格


    图片摘要

    本专栏目的是将netcdf格式的雪覆盖数据进行重新投影,需要使用的工具包括matlab和Arcgis,下面进入正题。

    1.数据的下载与读取---matlab

    最近我需要读取北半球的冰雪覆盖数据,下载的是MODIS/Terra Snow Cover Monthly L3 Global 0.05Deg CMG, Version 61,文件格式为netcdf,在matlab中读取发现其为polar_stereographic极坐标投影。

    matlab读取程序

    1. file = 'D:\文件\研究内容\Kakhovskoye\RAW_data\EUROPE_SNOW\ims2021281_4km_v1.3.nc';
    2. ncdisp(file)
    3. lon = ncread(file,'x');lat = ncread(file,'y');snow = ncread(file,'IMS_Surface_Values');
    4. O.rg = snow';
    5. imshow(O.rg),caxis([0,4])

    绘图显示与官网提供的数据与投影方式一致。但是在matlab中读取netcdf文件的经纬度坐标没有办法进行后续的处理与计算,因此需要进行重新投影转换。

    2.数据的投影栅格---arcgis

    下面我们将NetCDF文件导入arcgis中,使用arcgis工具箱中的“多维工具”下的“创建NetCDF栅格图层”导入,得到以下的结果:

    接下来选择【数据管理工具】->【投影和变换】下的【栅格】->【投影栅格】,选择输出坐标系为GCS_WGS_1984,点击确定,注意需要将结果导出后新建空白地图,再把文件重新导入arcgis中,即可得到正确的投影,此时再把这个文件导出成NetCDF文件。选择【多维工具】下的【栅格转NetCDF】。

    再在matlab中读取即可得到正确的结果。

    程序代码:

    1. %% oringal
    2. file = 'D:\文件\研究内容\Kakhovskoye\RAW_data\EUROPE_SNOW\ims2021281_4km_v1.3.nc';
    3. ncdisp(file)
    4. lon = ncread(file,'x');lat = ncread(file,'y');snow = ncread(file,'IMS_Surface_Values');
    5. O.rg = snow';subplot(1,2,1)
    6. imshow(O.rg),caxis([0,4])
    7. %% reproject
    8. file = 'D:\文件\研究内容\Kakhovskoye\RAW_data\EUROPE_SNOW\sd.nc';
    9. ncdisp(file)
    10. lon = ncread(file,'lon');lat = ncread(file,'lat');snow = ncread(file,'IMS_Surface_Values_Layer_Pro1.tif');
    11. [lon,lat] = meshgrid(lon,lat);
    12. O.lon = lon;O.lat = lat;O.rg = snow';
    13. subplot(1,2,2),rg_plot(O)
    14. caxis([0,4])

    得到最终的结果:

    后续有新的方法将更新!欢迎交流学习!

  • 相关阅读:
    《QT从基础到进阶·三十二》Q指针和D指针用法
    Python学习:if else对缩进的要求
    【JavaSE】Collections集合工具类专题
    C#面:.NET Remoting 的⼯作原理是什么
    19.Feign 的工程化实例:eureka,ribbon,feign,hystrix(springcloud)
    程序员都看不懂的代码
    无人机/FPV穿越机的遥控器/接收机等配件厂商
    mysql自带的性能测试工具mysqlslap执行压力测试
    阿里云ACP云计算的实验考的是什么?
    java学习笔记 day03-Java基础语法
  • 原文地址:https://blog.csdn.net/weixin_43047707/article/details/132908635