免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

查看: 4798|回复: 8
收起左侧

[经验共享] 批量检测DEM精度

[复制链接]

11

主题

630

铜板

1

好友

助理工程师

Rank: 5Rank: 5

积分
147
发表于 2018-2-26 15:35 | 显示全部楼层 |阅读模式
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.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__查看。


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__方法查看。还有注意的是用法。
(以下截图来自官方帮助文档:http://desktop.arcgis.com/zh-cn/ ... alues-to-points.htm)



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

141

主题

980万

铜板

3万

好友

管理员

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
622850
发表于 2018-2-26 15:52 | 显示全部楼层
感谢分享!
回复

使用道具 举报

141

主题

980万

铜板

3万

好友

管理员

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
622850
发表于 2018-2-26 15:52 | 显示全部楼层
感谢分享!
回复

使用道具 举报

0

主题

1万

铜板

1

好友

教授级高工

Rank: 12Rank: 12Rank: 12

积分
1449
发表于 2019-1-17 16:07 | 显示全部楼层
谢谢提供分享!
回复 支持 反对

使用道具 举报

7

主题

6万

铜板

21

好友

传奇会员

Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30

积分
119596
发表于 2019-1-17 21:44 | 显示全部楼层
厉害了    二次开发
回复 支持 反对

使用道具 举报

17

主题

3万

铜板

51

好友

黄金会员

wigi

Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23

积分
4851
发表于 2019-2-17 11:39 | 显示全部楼层
看看怎样做到的。。。。
回复 支持 反对

使用道具 举报

地信网友  发表于 2019-8-26 23:24
谢谢谢谢
回复

使用道具

地信网友  发表于 2019-8-26 23:25
不错不错
回复

使用道具

3

主题

2万

铜板

27

好友

地信院士

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
2420
QQ
发表于 2019-8-27 12:16 手机频道 | 显示全部楼层
写那么多代码有点多余,一个工具就可以实现。但是值得鼓励
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
快速回复 返回顶部 返回列表