分享好友 产业资讯首页 频道列表

批量检测DEM精度的方法

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

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

QQ截图20190910163118

关于获取检测点,方法同样有很多,但比较常用的是用GPS到实地测量,现场采集高程点,根据DEM的分幅,每幅尽量均匀分幅,疏密适中,具体要求可参考检测DEM的相关规范。
 
三、把GPS测量点转为shp格式的点要素文件。其方法可以导入CAD生成DWG文件,再用ArcMap转为shp格式。
 
四、打开Python IDE,Ctrl+N新建File。
 
输入代码:

批量检测DEM精度的方法

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

批量检测DEM精度的方法

原理:主要使用arcpy.sa.ExtractValuesToPoints()方法来检测。这个方法的功能是把GPS测量采集的检测点叠加到检查tif格式的DEM影像上,然后提取在DEM上叠加的检测点同位置的高程值,然后在属性表中计算差值,然后做平差或相关统计来评估DEM的精度。如上图计算成果height字段是检测点测量的高程值,RASTERVALU字段是在DEM上提取过来的高程值,系统自行添加该字段。而Difference字段是后来添加的字段,通过简单的字段计算计算两高程值之差。
 
知识小点:
 
arcpy.env.workspace=path 当前工作空间的环境设置,在前面设好路径,接下来需要用到输入或输出路径的参数就不必再填具体的路径了。参数path是 数据输入或输出的默认位置。
 
arcpy.ListRasters({wild_card}, {raster_type}) 返回工作空间中栅格数据的列表函数。wild_card可选参数,用结果限制返回,如as*就回返回带as字母的名字的栅格数据,默认返回所有。raster_type返回栅格的文件格式,有JPG,TIF,PNG等格式。
 
arcpy.ListFeatureClasses({wild_card}, {feature_type}, {feature_dataset})返回工作空间的要素类。
其参数与ListRasters()方法差不多,feature_type可选参数可在Pyyhon中print arcpy.ListFeatureClasses.__doc__查看。
批量检测DEM精度的方法
 
arcpy.sa.ExtractValuesToPoints((in_point_features, in_raster, out_point_features, {interpolate_values}, {add_attributes}) Spatial Analyst模块下的分析工具,是用点要素提取栅格像元值,并把这些值保存到输出要素中。
 
参数:
          in_point_features必选参数是用于提取像元的点要素
          in_raster必选参数是被提取的栅格数据
          out_point_features必选参数是把提取值保存输出要素的保存路径和要素名称,其余可用.__doc__方法查看。还有注意的是用法。


批量检测DEM精度的方法

arcpy.management.AddField(in_table, field_name, field_type, {field_precision}, {field_scale}, {field_length}, {field_alias}, {field_is_nullable}, {field_is_required}, {field_domain}) 向要素添加字段的方法。参数非常多,还可以用__doc__方法查看。
参数:in_table需要添加字段的要素表
           field_name添加字段的名称
           field_type添加字段的类型
 
 
问题延伸一下,能否把这个方法应用到等高线的精度检测呢?把绘制等高线的高程点生成DEM,再利用这个方法,但不知道能不能符合相关规范,有待试验。
 
写的有点混乱,如果看官能凑合看就点个赞吧!

本文作者:pythonGIS
免责声明:凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。
举报 0
收藏0
打赏 0
评论 0