【随笔】我的学术摸索:初涉GIS与ArcGIS

 

最近对计算流体力学、网格地形很感兴趣。玩了玩相关的软件和算法代码。做个简单记录。

 


如何模拟地形:数字高程模型(参考

希望构建如下图的地理模型

颇似游戏里面的3D建模,顺藤摸瓜找到了网格地形绘制涉及到结构网格和非结构网格:

这里涉及到几个概念:

数字高程模型(Digital Elevation Model, DEM),DEM是表示地形空间分布的一个三维向量系列{X, Y, Z},其中(X, Y) 表示平面坐标,Z表示对应点的高程值,它是以离散分布的点在平面点上的高程。DEM有三种主要的表示模型:规则格网模型,等高线模型和不规则三角网。

格网(GRID)DEM在地形平坦的地方,存在大量的数据冗余,在不改变格网大小情况下,难以表达复杂地形的突变现象,在某些计算,如通视问题,过分强调网格的轴方向。
不规则三角网(Triangulated Irregular Network, TIN)是另外一种表示数字高程模型的的方法(Peuker等,1978),它既减少了规则格网带来的数据冗余,同时在计算(如坡度)效率方面又优于纯粹基于等高线的方法。不规则三角网能随地形起伏变化的复杂性而改变采样点的密度和决定采样点的位置,因而它能够避免地形起伏平坦时的数据冗余,又能按地形特征点如山脊,山谷线,地形变化线等表示数字高程特征。

 在TIN中,满足最佳三角形的条件为:尽可能的保证三角形的三个角都是锐角,三角形的三条边近似相等,最小角最大化。

        TIN 是基于矢量的数字地理数据的一种形式,通过将一系列折点(点)组成三角形来构建。形成这些三角形的插值方法有很多种,例如 Delaunay 三角测量法或距离排序法。ArcGIS 支持 Delaunay 三角测量方法。

        TIN 的单位是英尺或米等长度单位,而不是度分秒。当使用地理坐标系的角度坐标进行构建时,Delaunay 三角测量无效。创建 TIN 时,应使用投影坐标系(PCS)。

        TIN 模型的适用范围不及栅格表面模型那么广泛,且构建和处理所需的开销更大。获得优良源数据的成本可能会很高,并且,由于数据结构非常复杂,处理 TIN 的效率要比处理栅格数据低。

        TIN 通常用于较小区域的高精度建模(如在工程应用中),此时 TIN 非常有用,因为它们允许计算平面面积、表面积和体积。


小插曲

上两幅图我发给导师看,试图给ta解释格网和三角网的区别。导师发了长长的一段话过来,大概是说,“你要清楚你是计算机博士,不是地理学博士“,并点出我要研究的重点,不希望我舍本逐末。我答应会按ta说的做,ta似乎很高兴,很快把上篇文章的proof发给我核验,准备给我投出去了,还夸我改的有进步。

虽然导师给了一盆冷水,仍没有完全浇灭我在GIS大门口玩耍的兴趣。因为总感觉是课题研究的一部分。不过我既然答应了ta,就不浪费过多时间在不相关的调研,而把关注点放在地形生成图的部分。

早八点到十一点,晚五点半到七点半,我玩了许多github上的terrain生成代码。我发现的第一个能跑通的代码是terrain-mesh-threejs-master,用到了threejs,展示了amazing的效果,但是我不熟悉threejs,改造有点难度。第二个能跑通的代码是Random-Terrain-master,能绘制简单的地形。还有一个让我印象深刻的是Simple-Terrain-Generator的主人,虽然他的代码因为bpy模块内部报错没跑通,但是我很喜欢代码主人的声明,他是这样说的

If you wish to use this code for any reason, educational, commercial, etc, feel free to use it in anyway you see fit. No need to credit me unless you wish.

不论你因为什么原因想用这个代码,比如教育、商业等等,不要紧张,尽管拿去用。没必要称赞表扬我,除非你愿意。

很感动有没有。计算机学科发展如此迅速,学术到工业应用的转换如此迅速,与知识和代码的分享密不可分。希望以后多写点原创博客,别只把博客当成收藏夹用。


选择ArcGIS作为实验工具

我最终决定用ArcGIS,并且已经成功安装。如果有需要资源的读者,在回复里留下邮箱。

ArcGIS安装成功后一共有三款软件:ArcMap、ArcGlobe、ArcScene是ArcGIS。三者关系类似Office中的word、Excel、Access的关系。区别是:

ArcMap一般用于处理2维数据。Globe和Scene处理3维数据。

ArcScene将所有数据投影到当前场景所定义的空间参考中,很占内容,所以适合小数据量小场景精细展示。ArcScene的一个重要优势是支持TIN(Triangulated Irregular Network),即三角网。

ArcGlobe将所有数据投影到球体表面上,使场景显示更接近现实世界,适合海量数据。打开ArcGlobe就会显示一个地球,可以上下左右360度旋转,还能放大看细节地貌。我找了找我的城市,也没看到房子什么的,想着他们应该是对地貌做了修复。所以这个地球看上去像原始社会的地球,被森林密密覆盖着,有种神奇的感觉。ArcGlobe不支持TIN,但是支持Terrain数据集而ArcScene不支持。

 在ArcGIS中,TIN 主要是通过矢量数据、栅格数据、Terrain数据集来创建。

矢量数据:最常用的一种方法。可以通过点、线、面来构建TIN,比如:离散多点(Mass Point)、隔断线(Breakline)、多边形(Polygon)。

栅格数据:可以转换为 TIN,用于简化地表模型。在ArcGIS中主要是通过 Raster to TIN 工具进行显示。

其他数据:可以使用工具 terrain to TIN来转化 ArcGIS terrain dataset 数据,用工具LAS Dataset to TIN转化LAS Dataset数据,用工具 LandXML to TIN转化LandXML 数据,得到TIN。


ARGIS的基本文件格式参考

Shapefile是ArcView GIS 3.x的原生数据格式,属于简单要素类,用点、线、多边形存储要素的形状,却不能存储拓扑关系,具有简单、快速显示的优点。一个shapefile是由若干个文件组成的,空间信息和属性信息分离存储,所以称之为“基于文件”。

每个shapefile,都至少有这三个文件组成,其中:

*.shp 存储的是几何要素的的空间信息,也就是XY坐标。在ArcGIS-ArcMap中打开.shp文件可查看内容:

*.shx 存储的是有关*.shp存储的索引信息。它记录了在*.shp中,空间数据是如何存储的,XY坐标的输入点在哪里,有多少XY坐标对等信息

*.dbf 存储地理数据的属性信息的dBase表

这三个文件是一个shapefile的基本文件,shapefile还可以有其他一些文件,但所有这些文件都与该shapefile同名,并且存储在同一路径下。

其它常见文件:

*.prj 如果shapefile定义了坐标系统,那么它的空间参考信息将会存储在*.prj文件中

*.shp.xml 这是对shapefile进行元数据浏览后生成的xml元数据文件

*.sbn*.sbx 这两个存储的是shapefile的空间索引,它能加速空间数据的读取。这两个文件是在对数据进行操作、浏览或连接后才产生的,也可以通过ArcToolbox >Data Management Tools >Indexes >Add spatial Index工具生成。


根据shp文件生成三角网

(1) 添加高程字段:构建TIN时是要有高程字段的,所以要给点shp文件添加一字段。打开生成的点shp文件的属性表,Add fields,添加字段,字段名为“height”,值全部赋为 0 。

(2) 生成TIN:arctoolbox——>3D Analyst Tools——>Data Management——>TIN——>Create TIN,定义投影坐标,在输入文件的height_field字段上选新添加的“height”字段,OK。

如果点击工具箱点击时出现提示:"Unable to execute the selected tool"等类似提示,有可能遇到了本文中提到的问题,可尝试单击"菜单"中"Customize - Extensions...", 在弹出的对话框勾选上需要工具即可。

(3) 生成平面三角网: arctoolbox——>3D Analyst Tools——>Conversion——>From TIN——>TIN Triangle


通过文本文件创建特征类:参考链接

文本文件为X、Y、Z格式:

arcgis软件中ï¼å¦ä½å©ç¨ä¸ç»´åæ ç¹è¡¨ç¤ºçé¢æå¼çæç­é«çº¿ - å°ç½ - å°ç½çå客

将文本文件转换为特征类:

arcgis软件中ï¼å¦ä½å©ç¨ä¸ç»´åæ ç¹è¡¨ç¤ºçé¢æå¼çæç­é«çº¿ - å°ç½ - å°ç½çå客

将特征类插值生成栅格文件:

arcgis软件中ï¼å¦ä½å©ç¨ä¸ç»´åæ ç¹è¡¨ç¤ºçé¢æå¼çæç­é«çº¿ - å°ç½ - å°ç½çå客

arcgis软件中ï¼å¦ä½å©ç¨ä¸ç»´åæ ç¹è¡¨ç¤ºçé¢æå¼çæç­é«çº¿ - å°ç½ - å°ç½çå客

arcgis软件中ï¼å¦ä½å©ç¨ä¸ç»´åæ ç¹è¡¨ç¤ºçé¢æå¼çæç­é«çº¿ - å°ç½ - å°ç½çå客

利用带有高程数据的栅格文件生成等高线表面:

arcgis软件中ï¼å¦ä½å©ç¨ä¸ç»´åæ ç¹è¡¨ç¤ºçé¢æå¼çæç­é«çº¿ - å°ç½ - å°ç½çå客

arcgis软件中ï¼å¦ä½å©ç¨ä¸ç»´åæ ç¹è¡¨ç¤ºçé¢æå¼çæç­é«çº¿ - å°ç½ - å°ç½çå客

arcgis软件中ï¼å¦ä½å©ç¨ä¸ç»´åæ ç¹è¡¨ç¤ºçé¢æå¼çæç­é«çº¿ - å°ç½ - å°ç½çå客


其他参考资料:

ArcGIS生成规则网格(Fishnet)-用作表示图幅:http://blog.sina.com.cn/s/blog_1523b22c10102wsoc.html

 

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读