arcgis读取NetCDF格式的数据(c#读取数据)

news2024/12/24 20:19:04

项目里面要用到降雨的数据,正好是.NC格式的,以前也没用过,正好记录下,大家也可以参考下,首先是arcgis是如何处理NC数据的,在arcgis软件里面有个多维工具箱,我用的是汉化版本的,英文版应该叫Multidimension Tools,在这个工具箱下面有个——创建NetCDF栅格图层,双击这个工具,就可以看见如下这个界面:

 第一个你的NC文件,这个文件你可以直接拖进来就行,但是有个小问题,你的NC文件的路径不要出现中文的字符串,很多人在拖进来之后发现除了第一个框有东西,下面的几个文本框是没有东西的,就是因为你的数据存储路径有中文的字符串导致的,正常你把数据拖进来,这几个文本框就会有默认的东西,变量,维度,输出栅格图层这些,当然在“变量”本文框里,你是可以选择别的变量的,我这个是降雨的数据,我这里选择的是apcp_10min,就是10分钟一次的意思,里面还有1小时,3小时,6小时等。下面的是“维度”,有x维度,y维度,这两个文本框要跟你的NC格式数据的xy(有的是经纬度)对应上,之后是“输出栅格图层”名称,这个就随意,剩下的都是可选的就不说了,之后点击“确定”按钮,这个数据就如图:

 这个数据其中的一个,NC格式的数据是多维的,这个时候你可以打开图层的“图层属性”,如下,在纬度值有个维度“first _hour_time”,后边的值有0123456,上面展示的是默认的值,是0,你可以选择1或者2分别查看,数据都是不同的,因为我这个是降雨的数据,间隔是10分钟,0就是开始的时候,1就是间隔10分钟之后的数据,2就是再过了10分钟的数据,以此类推,如图:

在选择2的时候,如图:

 这个NC的数据就是这么查看,但是如果你想要这份数据还需要一步,就是导出到本地,目录树上,右键点击数据,选择——导出数据,如图,选择导出的格式,填写名称就可以了,就可以导出到本地了。

 上面就是通过arcgis软件来处理NC数据,QGIS软件也是可以处理的,貌似比arcgis要方便些,但是我对QGIS不是太熟悉就不说了,下面我用代码对NC数据进行读取,我用的是C# ,Arcengine的形式,代码:

   /// <summary>
        /// 读取nc数据
        /// </summary>
        private void Open_NetCDF()
        {
            try
            {
            IWorkspaceFactory wsf = new NetCDFWorkspaceFactoryClass();
           // string file = filepath + filename;
            string nc = @“C:\Users\Desktop\data\059\01.nc”;
            string filePath = System.IO.Path.GetDirectoryName(nc);
            string ncName = System.IO.Path.GetFileNameWithoutExtension(nc);
            //string 
            IWorkspaceFactory pWKSF = new RasterWorkspaceFactoryClass();
            string outputName = Application.StartupPath + @"\temp\cdf.tif";
            string fileName = System.IO.Path.GetDirectoryName(outputName);  
            IWorkspace pWorkspace = pWKSF.OpenFromFile(filePath, 0);
            //保存栅格数据的工作空间
            IWorkspace pWorkspaceRaster = pWKSF.OpenFromFile(fileName, 0);
            INetCDFWorkspace netws = (INetCDFWorkspace)wsf.OpenFromFile(nc, 0);
          IMDRasterDatasetView mdrasview = new NetCDFRasterDatasetNameClass();

            //对应arcgis里面的x维度,y维度,变量
             rasterView.XDimension = "x";
              rasterView.YDimension = "y";
              rasterView.Variable = "apcp_10min";

 IMDWorkspace mdwksp = netws as IMDWorkspace;
            IRasterDataset rasterds = mdwksp.CreateView("cdfRaster", (IMDDatasetView)mdrasview) as IRasterDataset;
          
            IRasterLayer rl = new RasterLayerClass();
            rl.CreateFromDataset(rasterds);

           //rl接口可以转到ISaveAs接口,就可以保存到本地了,下面的代码我就不写了。
            }
            catch (Exception ex)
            {

            }
        }

上面的代码就可以读取NC数据,但是上面的代码只可以读取位置“0”的数据,就是维度值“first_hour_time”,值等于0的时候的数据,如果我想取位置是3或者4的时候,还需要加一段代码,这个问题也困扰我几天,代码不多,但是就是好使啊,下面是核心的代码:

IMDRasterDatasetView rasterView = new NetCDFRasterDatasetNameClass();
                rasterView.XDimension = "x";
                rasterView.YDimension = "y";
                rasterView.Variable = "apcp_10min";
                IMDDatasetView datasetView = rasterView as IMDDatasetView;
                IMDWorkspace kk = netws as IMDWorkspace;
                IDataset result = kk.CreateView("sdf", datasetView);
                datasetView = result.FullName as IMDDatasetView;
                datasetView.SelectDimensionByValue("first_hour_time", 3);
                IDataset result1 = kk.CreateView("sdf", datasetView);
                IRasterDataset rasterDataset = result1 as IRasterDataset;
                IRasterLayer rl = new RasterLayerClass();
                rl.CreateFromDataset(rasterDataset);

加了这几句,其实就是选择了维度值,然后再重新创建了视图,

                datasetView = result.FullName as IMDDatasetView;
                datasetView.SelectDimensionByValue("first_hour_time", 3);
                IDataset result1 = kk.CreateView("sdf", datasetView);

这样就可以按照特定的维度值来选择数据了。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/102596.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]计算机毕业设计Python的剧本杀管理系统(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

Verilog 简易单周期CPU

目录 本实验包含&#xff1a; 简易结构图&#xff1a; 各部件代码或实现&#xff1a; 控制器&#xff1a; 寄存器堆&#xff1a; ALU&#xff1a; 数据存储器&#xff1a; 指令存储器&#xff1a; CPU&#xff1a; tp&#xff08;仿真文件&#xff09;&#xff1a; 仿真…

如何去掉idea的诸多警告

File->setting->Editor->inspections 选择漏斗&#xff0c;选中warning&#xff0c;筛选出所有警告级别&#xff0c;然后去掉勾选&#xff0c;然后重启idea即可

重构物理Entity架构,支持更多的形状

上一节实战如何编译BEPUphysicsint源码到自己的项目, 如何整合物理引擎与Unity图形渲染。本节来从新调整设计,让物理的Entity基本操作与物理的形状分离,支持更多的物理形状,支持物理entity与Unity物体位移与旋转同步。主要分成以下3个部分: 1: 设计PhyBaseEntity&#xff0c;让…

学到一招!PyCharm连接MySQL竟如此简单!

在 PyCharm 中是可以通过内置的工具来连接、操作数据库的&#xff0c;并且对于市面上大多数主流数据库都是支持的。 连接 MySQL 首先打开 PyCharm &#xff0c;点击菜单栏的 View --> Tool Windows --> Database 或者直接点击 PyCharm 右侧的 Database 然后就会在 PyCh…

【QT开发笔记-基础篇】| 第五章 绘图QPainter | 5.6 矩形、圆角矩形

本节对应的视频讲解&#xff1a;B_站_视_频 https://www.bilibili.com/video/BV1mg411J7u5 本节讲解如何绘制矩形、圆角矩形 1. 相关的 API 直接查看官方的帮助文档&#xff0c;可以看到有多个重载的方法用于绘制矩形、圆角矩形 1.1 矩形 // 带 F 表示参数为浮点数&#x…

【电商】电商系统---合同管理

说一下合同管理部分&#xff0c;希望对大家有帮助&#xff0c;如果大家觉得简单可以直接略过&#xff0c;谢谢&#xff01; 合同分类 合同主要分为采购类合同、销售类合同、其他合同。 采购合同和销售合同分别与采购订单和销售订单建立对应关系&#xff0c;通过采购订单和销售…

ChatGDP:人类未来世界的主宰

先简单介绍一下今天的主角——ChatGPT。 ChatGPT是一款由OpenAI开发的聊天机器人&#xff0c;它具有出色的自然语言处理能力&#xff0c;能够与人类进行真实的对话。它的核心技术是GPT-3语言模型&#xff0c;能够自动学习语言特征&#xff0c;并进行语义理解、文本生成等任务。…

HCL与Pipe、Autoit和MobaXterm的组合使用

我们平时做实验一般会用到真机或者是模拟器&#xff0c;因为我主要接触的都是一些H3C的产品和技术&#xff0c;所以模拟器用HCL会多一些。为了呈现出相对好一些的视觉效果&#xff0c;我一般会使用MobaXterm工具进行命令操作&#xff0c;所以大家看到的回显一般是这样的&#x…

哈工大视听觉信号处理——听觉部分报告——一种智能家居命令词识别系统的设计

题 目 听觉部分 专 业 软件工程 学   号 120L0219XX 班   级 2037101 姓 名 李启明 报 告 日 期 2022.12.20 一、基频 &#xff08;一&#xff…

肝了一周总结的SpringBoot常用注解大全,一目了然~

平时使用SpringBoot开发项目&#xff0c;少不了要使用到它的注解。这些注解让我们摆脱了繁琐的传统Spring XML配置&#xff0c;让我们开发项目更加高效&#xff0c;今天我们就来聊聊SpringBoot中常用的注解&#xff01; SpringBoot实战电商项目mall&#xff08;50kstar&#xf…

《c专家编程》读书笔记

《c专家编程》第一章 C&#xff1a;穿越时空的迷雾第二章 这不是Bug&#xff0c;而是语言特性gets实验第三章 分析C语言的声明const实验第四章 令人震惊的事实&#xff1a;数组和指针并不相同指针与数组实验第五章 对链接的思考简单静态库动态库实验第六章 运动的诗章&#xff…

python-(6-5-3)爬虫---修改代码

文章目录一 事件背景二 系统给的代码三 改进措施四 改进后的代码一 事件背景 本篇主要是生活分享。 公司研究了一个比较好玩的人工智能狗&#xff0c;我就想偷懒让它帮我写个代码&#xff0c;得到的漂亮小姐姐的照片&#xff0c;然后它还真的给我把代码弄出来了。 二 系统给的…

​九州一轨通过注册:计划募资6.57亿 京投公司为大股东

雷递网 雷建平 12月19日北京九州一轨环境科技股份有限公司(简称&#xff1a;“九州一轨”&#xff09;日前通过注册&#xff0c;准备在科创板上市。九州一轨计划募资6.57亿元&#xff0c;其中&#xff0c;2.79亿元用于噪声与振动综合控制产研基地建设项目&#xff0c;1.43亿元用…

[附源码]计算机毕业设计Python飞越青少儿兴趣培训机构管理系统(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等…

我的一周年创作纪念日

机缘 第一次写文章的时候&#xff0c;CSDN还是我平时课程设计的救星&#xff1b;第一次写文章的时候&#xff0c;还不知道有什么拿得出手、可以和大家分享的&#xff1b;第一次写文章的时候&#xff0c;幻想着自己一觉醒来就坐拥10w粉丝&#xff0c;哈哈哈。感谢自己曾经冒出的…

【实践】推荐、搜索、广告多业务多场景统一预估引擎实践与思考

省时查报告-专业、及时、全面的行研报告库省时查方案-专业、及时、全面的营销策划方案库【免费下载】2022年11月份热门报告盘点《底层逻辑》高清配图‍基于深度学习的个性化推荐系统实时化改造与升级.pdf推荐技术在vivo互联网商业化业务中的实践.pdf推荐系统基本问题及系统优化…

元认知神经网络与在线序贯学习(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 文章包含用于实现自适应识别和控制的在线顺序学习算法、元认知神经网络和前馈神经网络的代码。这些方法也用于解决分类和时间序…

[附源码]计算机毕业设计Node.js仓库管理系统(程序+LW)

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

【docker】CMD和ENTRYPOINT的区别

1、测试cmd #编写 dockerfile 文件 [rootkuangshen docekrfile]# vim dockerfile-cmd-test FROM centos CMD ["ls","-a"] #构建镜像 [rootkuangshen dockerfile]# docker build -f dockerfile-cmd-test -t cmdtest . #run运行&#xff0c;发现我们的ls -a …