C#读取矢量栅格文件

Posted GIS前沿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#读取矢量栅格文件相关的知识,希望对你有一定的参考价值。


很多同学使用ArcGIS很熟练,但是对于其中的一些实现原理却不知道,今天小编就带大家用大白话(很多代码都有详细注释哦!)谈谈最简单的实现读取栅格和矢量文件吧!


1

读取栅格文件


1.创建windows窗体应用程序,设置相关控件(坡向,坡度,打开文件)。


C#读取矢量栅格文件

C#读取矢量栅格文件 

2.定义一些全局变量,为方法函数的实现服务。


C#读取矢量栅格文件

C#读取矢量栅格文件 

3.将读取的栅格文件在窗口显示出来需要为绘制图形设置相关属性,比如画布规格,画笔大小,特别是颜色的调节更为重要。下面就是具体如何去对栅格数据进行按行循环读取判断,定义一些字段表示读取的栅格数据。栅格文件里面的数据显示如下图,有明显的文件头,里面包含了许多的重要信息,比如行数,列数,最值等等。

C#读取矢量栅格文件 

C#读取矢量栅格文件

C#读取矢量栅格文件

C#读取矢量栅格文件

C#读取矢量栅格文件

C#读取矢量栅格文件


5.最后在设置好的控件方法里面调用已经写好的方法,包括坡度,坡向以及展示成果。


C#读取矢量栅格文件

C#读取矢量栅格文件 

6. 结果展示


原始DEM图像

C#读取矢量栅格文件 

C#读取矢量栅格文件


基于DEM数据进行的坡度提取

C#读取矢量栅格文件 

C#读取矢量栅格文件


基于DEM数据进行的坡向提取


C#读取矢量栅格文件

C#读取矢量栅格文件 


2

读取矢量文件


这是官方对矢量数据的一些相关定义,对其的读取都将围绕这些规则来展开。


这个表很重要

C#读取矢量栅格文件

C#读取矢量栅格文件 

(1)首先对矢量文件进行搜索读取进来分析处理。


C#读取矢量栅格文件

C#读取矢量栅格文件 

(2)定义一些结构成员用来存储文件头里面的重要信息,后面数据的提取都要利用这些作为条件去执行。


C#读取矢量栅格文件

C#读取矢量栅格文件 

(3)对提取的矢量文件参数进行定义,比如该矢量文件有多少个面组成,每个面有多少个点,哪个是起始点,哪个是终结点以及点的坐标等相关属性信息。


C#读取矢量栅格文件



(4)由前面官方对矢量数据的一些相关定义可知,在其中有些字节上面需要反转字节顺序再转换数据类型。


C#读取矢量栅格文件

C#读取矢量栅格文件 

(5)由于矢量文件是由无数的点及其X,Y坐标构成的,所以每一个坐标的读取都不可以出现任何问题,为此需要对其进行异常处理,并把每一个点的坐标存储到一个数组里面去。


C#读取矢量栅格文件

C#读取矢量栅格文件 

(6)文件读取完毕就要显示到窗口,下面就对窗口相关数据进行设置,包括画布,画笔(红色),不过在显示之前需要进行坐标转换,毕竟是从地理坐标显示到窗口这种平面坐标嘛,否则显示的图形就会越界无法正常显示。


C#读取矢量栅格文件

C#读取矢量栅格文件 

读取结果展示

C#读取矢量栅格文件 

C#读取矢量栅格文件


- END -








戳原文,更有料!

以上是关于C#读取矢量栅格文件的主要内容,如果未能解决你的问题,请参考以下文章

R矢量地图栅格化(将shapefile转换成raster)

Python中使用面状矢量裁剪栅格影像,并依据Value值更改矢量属性

Arcgis之栅格数据范围导出到矢量文件

arcgis 里矢量数据批量转栅格数据步骤

有人说矢量数据的实质还是栅格数据,怎么理解这句话???

Globalmapper之矢量数据获取栅格高程值