首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

批量检测DEM精度

DEM,数字高程模型。在测绘领域,GIS领域少不了的一种数据,其获取方式和精度随着技术的成熟多种多样。在大范围面积下,航拍是个不错的选择。但是这么大的范围下肯定分幅很多张影像图,那怎么批量检测DEM的精度呢?可以用Python来实现。

实验准备:

一、分幅DEM。

二、准备检测点,且检测点根据DEM同样分幅。

关于获取检测点,方法同样有很多,但比较常用的是用GPS到实地测量,现场采集高程点,根据DEM的分幅,每幅尽量均匀分幅,疏密适中,具体要求可参考检测DEM的相关规范。

三、把GPS测量点转为shp格式的点要素文件。其方法可以导入CAD生成DWG文件,再用ArcMap转为shp格式。

四、打开Python IDE,Ctrl+N新建File。

输入代码:

(代码原创,需要留言,主要讲解相关arcpy中的函数)

运行结果生成“CG.shp”且属性表已计算差值。

原理:主要使用arcpy.sa.ExtractValuesToPoints()方法来检测。这个方法的功能是把GPS测量采集的检测点叠加到检查tif格式的DEM影像上,然后提取在DEM上叠加的检测点同位置的高程值,然后在属性表中计算差值,然后做平差或相关统计来评估DEM的精度。如上图计算成果height字段是检测点测量的高程值,RASTERVALU字段是在DEM上提取过来的高程值,系统自行添加该字段。而Difference字段是后来添加的字段,通过简单的字段计算计算两高程值之差。

知识小点:

arcpy.ListRasters(, ) 返回工作空间中栅格数据的列表函数。wild_card可选参数,用结果限制返回,如as*就回返回带as字母的名字的栅格数据,默认返回所有。raster_type返回栅格的文件格式,有JPG,TIF,PNG等格式。

arcpy.ListFeatureClasses(, ,)返回工作空间的要素类。

其参数与ListRasters()方法差不多,feature_type可选参数可在Pyyhon中print arcpy.ListFeatureClasses.__doc__查看。

arcpy.sa.ExtractValuesToPoints((in_point_features, in_raster, out_point_features, ,) Spatial Analyst模块下的分析工具,是用点要素提取栅格像元值,并把这些值保存到输出要素中。

参数:

in_point_features必选参数是用于提取像元的点要素

in_raster必选参数是被提取的栅格数据

out_point_features必选参数是把提取值保存输出要素的保存路径和要素名称,其余可用.__doc__方法查看。还有注意的是用法。

(以下截图来自官方帮助文档:http://desktop.arcgis.com/zh-cn/arcmap/latest/tools/spatial-analyst-toolbox/extract-values-to-points.htm)

arcpy.management.AddField(in_table, field_name, field_type, , , , , , ,) 向要素添加字段的方法。参数非常多,还可以用__doc__方法查看。

参数:in_table需要添加字段的要素表

field_name添加字段的名称

field_type添加字段的类型

问题延伸一下,能否把这个方法应用到等高线的精度检测呢?把绘制等高线的高程点生成DEM,再利用这个方法,但不知道能不能符合相关规范,有待试验。

写的有点混乱,如果看官能凑合看就点个赞吧!写个东西又要准备实验,又要查“字典”挺不容易的!

喜欢的就关注一下吧

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180121G0N2PL00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券