推荐星级:
- 1
- 2
- 3
- 4
- 5
在ArcGIS下基于Python的矢量数据处理方法
资料介绍
在ArcGIS中地理处理可以通过Python脚本语言来具体实现。通过Python串联Arcgis的地理处理工具,实现工作流自动化完成,同时,实践批处理过程,解放人工的机械重复工作,提高效率,进而保证数据质量。现以地形图中示坡线的正确、严谨表达为实践案例,介绍了在ArcGIS下利用Python处理矢量数据,为矢量数据处理的高效、自动化提供解决方法。
部分文件列表
文件名 | 大小 |
在ArcGIS下基于Python的矢量数据处理方法.pdf | 751K |
部分页面预览
(完整内容请下载后查看)测绘技术装备 第 18 卷 2016 年第 4 期
技术交流 63
在 ArcGIS 下基于 Python 的矢量数据处理方法
林璐 王爽 李海泉 侯兴泽 马鹏刚
(国家测绘地理信息局第二地形测量队 陕西西安 710054)
摘
要:在 ArcGIS 中地理处理可以通过 Python 脚本语言来具体实现。通过 Python 串联 Arcgis 的地理处理
工具,实现工作流自动化完成,同时,实践批处理过程,解放人工的机械重复工作,提高效率,进而保证数
据质量。现以地形图中示坡线的正确、严谨表达为实践案例,介绍了在 ArcGIS 下利用 Python 处理矢量数据,
为矢量数据处理的高效、自动化提供解决方法。
关键词:Python ARCGIS 地理处理 示坡线
1 引言
Python 语言可以实现对地理数据的批处理,从而有
地理处理是 GIS 用户应用的重要组成部分, 助于提高工作效率[2]。
ArcGIS 的 ArcToolbox 窗口为 GIS 用户提供了数百个 2 开发案例说明
地理处理。对于数据处理人员在使用 ArcGIS 地理处
示坡线,是指示斜坡降落的方向线,它与等高
理工具时,就会遇到这样的难题,如何将几个简单 线垂直相交。一般表示在谷地、山头、鞍部、图廓
的地理处理工具串联起来,自动化地完成一个简单 边及斜坡方向不易判读的地方。凹地的最高、最低
工作流,使得人工操作转换为自动化的程序批处理 一条等高线上也应表示示坡线[3]。在测绘 4D 产品之
过程[1]。
一的数字线划图(DLG)中,示坡线一般以有向点或
Python 是一种不受局限、跨平台的开源编程语 有向线(长度为定值的线段)的方式表达。其中,
言,它功能强大且简单易学。同时,它可伸缩程度 有向点应严格捕捉相应等高线,通过填写要素角度
高,适于大型项目或小型的一次性程序(称为脚本), 属性项表达所示方向;有向线为线段,起始节点应
并且可嵌入(使 ArcGIS 可脚本化)。目前,Python 严格捕捉相应等高线,终止节点指向所示方向,线
已延伸到 ArcGIS 中,成为了一种用于进行数据分析、 段长度为规范要求长度。
数据转换、数据管理和地图自动化的语言。运用
图 1 山丘、山峰和盆地、洼地的示坡线示意图
一般在 DLG 制作过程中,特别是中小比例尺地 情况致使下工序矢量数据编辑处理时,需要人工核
形图,通常利用立体测图系统,在恢复立体影像相 对、修改,工作量大且繁琐(尤其是在沙漠、特殊
对模型的情况下,人工判断地貌,并采集示坡线。 丘陵地区,1 幅 1∶10000 比例尺地形图可能需要上
采集时要求在对应等高线采集第一点,沿斜坡的方 千个示坡线表示地貌形态),如果作业人员责任心不
向采集第二点。为提高生产效率及生产工序技术要 足还易造成质量隐患。
求,此时采集的示坡线,不符合前述 DLG 拓扑规范 3 处理方案设计
要求。存在未严格捕捉等高线,造成悬挂和相交的 3.1 方案设计思路
拓扑问题;或示坡线要素长度不定,不符合技术要
数据要素处理的关键是两点:一是解决拓扑问
求;亦或示坡线采集图形上看正确,实际上刚好与 题,二是实现示坡线角度正确表达。因此解决思路
要求相反,是由斜坡降落方向向等高线采集。这些 是:首先,要满足拓扑要求,即相应要素之间严格
64 技术交流
测绘技术装备 第 18 卷 2016 年第 4 期
捕捉,可以通过处理要素线段与等高线之间的悬挂 的问题。
和相交拓扑问题实现,使得要素线段的一个端点捕
(3)判断示坡线与等高线相交的节点是起始
捉到等高线上。然后,在确定该端点为要素线段起 点,指向斜坡方向的是终止点。首尾节点位置的正
始点的基础上,将方向正确的要素线段转换为点, 确性,是决定角度计算值合理的前提。当节点位置
并继承线段方向,即获得有向点。最后,如果示坡 不正确时,利用反向功能,将要素采集方向反转。
线是由定长有向线表达,再依据有向点的角度值,
生成方向、长度均符合要求的有向线。
3.2 方案操作的具体流程
(4)将示坡线要素线段转有向点。示坡线要素
与等高线相交处为有向点的位置。角度值依据示坡
线要素方向确定。在角度确定时,应考虑不同项目
(1)提取等高线和原始示坡线要素,并导入一 设计要求,对角度 0 值的起算方向,以及旋转方向
个新的数据集,为数据处理做好准备。经过后续处 的定义。另外,还要注意角度值的精度取位要求。
理,将成果示坡线与数据中原始示坡线要素核对,
没有错漏后,自动将原始示坡线要素删除,并导入 长度要求向线段表达方式。可以依据上步有向点的
核对后最终示坡线。
位置及角度,创建符合相应项目设计要求的定长有
(2)使用悬挂、相交功能,将示坡线延伸或打 向线段要素。
(5)示坡线除了有向点表达方式外,还有固定
断,使得示坡线与相应的等高线实现严格的捕捉。
(6)经过核查处理好的示坡线要素,将最终成
应注意合理设置拓扑容差,过小可能不能自动化延 果导入数据库。
伸或打断,过大可能形成错误的拓扑关系,造成新
图 2 示坡线要素处理流程示意图
4 关键函数及源代码实现
语法是:
ExtendLine_edit(in_features,{length},{ex
ArcGIS 的地理处理均有相应功能函数,Python
可以直接调用,对于开发人员十分友好。同时,Python tend_to});
也可以通过程序开发语言实现需求功能[4]、[5]
。
修剪线功能语法是:
(1)处理悬挂、及打断可通过调用“延伸线”、
TrimLine_edit(in_features,{dangle_length},
“修剪线”两个功能函数实现。其中,延伸线功能 {delete_shorts})。
全部评论(0)