数据格式为一些三维坐标点,如下图所示(部分):

需求:现在需要通过这些离散点,绘制出三维曲面(地形图)。
问题:这种离散点,使用MATLAB插值一下,在使用mesh()函数就可以绘制出三维曲面了。但是,我现在需要计算这个曲面的面积,这是个不规则的曲面,怎么计算呢?蒙特卡洛,好主意。但我在这里使用ArcGIS软件来解决。
matlab中做的图如下所示:

首先打开ArcMap软件,创建空的地图文档。在菜单栏“地图处理”选项下打开ArcToolbox工具:

打开转工具,使用excel转表工具,将相应的excel文件转换为table:

转换完毕后,会在内容荣列表中出现转换好的table文件:

在上诉table文件上右键显示xy数据,做相应的设置后确定:

在右侧的视图中,三维点即显示出来

创建TIN:

做如下设置:

生成TIN如下所示:

使用TIN转栅格工具:

创建栅格数据,类似于MATLAB中绘制三维图时的差值操作,在弹出的对话框做相应的设置即可。
在ArcMap中,栅格图像如下,该栅格数据已经经过了二维插值,包含高度信息。但,要想查看他的三维图像,需要使用ArcScene打开这个栅格数据:

打开ArcScene,他和ArcMap都是在安装ArcGIS的时候一起安装好的。
ArcScene界面与ArcMap差不多,操作类似。
点击添加数据,选择刚刚生成的栅格数据:

此时加载出来的图像和ArcMap中的黑白图像一样,暂时还没有高度信息,像一个二维平面,但是可以进行三维转动了。
只需要在栅格数据上右键,设置高度信息即可:

选择好高程数据后就可以查看三维地形图了,双击色带还可以修改颜色:

在ArcMap和ArcScene中都可绘制,只是显示的二维和三维的区别。
该功能在3D Analyst下面的栅格表面→等值线:

同样,双击名称可以修改等高线的数量、颜色等。
这里需要使用表面体积功能来计算:

其中,平面高度表示只计算这个高度以上的面积,我这里计算海拔200米以上的山地面积,结果输出为txt文本。

这里有三个“面积”,分别为表面2D面积、3D面积、体积。我这里需要的面积是3D面积。
这里计算的是不规则曲面上2点之间的距离,不是简单的欧氏距离。如果只测两个点,可以使用菜单栏的测量功能,手动选择。

而要计算很多个目标点两两之间的距离,这种方法就不适用了。
首先将目标点的坐标数据整理到excel中,使用上文中相同的方法加载(转为table后加载xy数据即可):

使用分析工具>领域分析>点距离:

结果如下所示:

我只是工作需要临时使用的ArcGIS的一些功能,这款软件还是十分强大的。