应用Python实现外业轨迹文本的矢量化
吴君峰1  唐芳2  曲瑞超1  范晓燕1
(1.广西壮族自治区遥感信息测绘院,广西 南宁 530023;2.广西壮族自治区国土资源规划院,
广西 南宁 530022)
[摘要]在测绘外业调查中,随身携带的移动端设备会产生大量的记录轨迹点位坐标的文本文件。针对外业轨迹文本矢量化的成果要求,本文利用Python开发语言和ArcGIS矢量数据处理工具,编写了外业轨迹文本批量转换矢量线的软件。研究结果表明,该软件自动化程度高,实现了对XML、KML、CSV、TXT等多种文本的转换,能够解决外业轨迹文本个数多、数据量大的问题,提高了工作效率和成果质量。
[关键词]外业轨迹文本;矢量化;Python;ArcGIS
[中图分类号] P208      [文献标识码] B    [文章编号] 1674-5019(2018)02-0073-03 The Vectorization of Field Surveying Route Text Using Python
WU Jun-feng TANG Fang QU Rui-chao F AN Xiao-yan
1  引言
外业调查是保证测绘数据质量的基础工作,在数据生产和质量检查中起着重要作用。根据外业调查的成果要求,一般需要提交用于记录调查路线的矢量数据。在测绘外业调查过程中,作业人员使用移动端Google Earth等APP软件或者专业的探险家轨迹仪设备,获取的原始数据均为文本格式,通常是记录了经度、纬度、海拔高度及时间等信息的XML、KML、CSV和TXT等文本数据。
每人次的外业调查行程会对应多个文本文件,因此外业轨迹文本数据具有文件个数多、数据量大的特点,在将轨迹文本数据转为矢量线的过程中,常规的人工手动处理方式不但重复性高、费时费力,而且容易出错。外业调查时间紧、问题多,如何提高数据处理的自动化程度就显得特别重要[1]。本文认为逻辑性是实现自动化的关键,对于测绘数据生产过程中的重复性高、逻辑性明显的工作,可以使用自动化批处理的方式完成,减少人工参与的时间和错误,以提高工作效率和成果质量。
Python是语法灵活、开源的解释性语言。区别于C、C++等编译性语言的底层应用程序开发,Python侧重于将多个应用模块组合起来,语法清晰、功能强大。ArcGIS 作为专业的GIS软件,其工具箱拥有丰富的基于COM组件的矢量数据处理模块,具有良好的二次开发能力。同时,ArcGIS支持多种脚本语言,如VB-Script、Python 等,自ArcGIS10.1开始,主要支持Python脚本[2]。
运用Python与ArcGIS是实现空间数据自动化处理的一种较为灵活有效的技术手段[3-5]。从文本文件自动转换矢量线的思路出发,本文研究应用Python 脚本语言,将ArcGIS的基础空间数据处理模块组合起来,以实现XML、KML、CSV、TXT等格式的外业轨迹文本批量生成矢量线。
2  常规的轨迹矢量线生成方法
外业调查轨迹矢量线作为元数据成果的一种,常规的生成主要依靠作业员使用Excel、UltraEdit等软件对原始的文本逐个进行编辑,规范内容格式,进而使用MapGIS、ArcGIS、CASS等GIS软件进行坐标数据展点、点创建线、属性字段填写等工作,其特点是人工作业重复性较高,不但作业效率低,而且容易出错。如图1所示,在常规的生产方法中,作业人员每次的处理对象是一个文本文件,即对应一条轨迹矢量线。数据处理的总用时为:
数据处理总用时=20分钟*N (N为文本总个数)
3  批量化处理方法
3.1 技术路线
本文以XML、KML、CSV、TXT等文本所在的文件夹为输入对象。利用Python开发语言的文件遍历、读写等功能和ArcGIS的空间数据处理工具,实现外业轨迹文本文件的批量化处理,自动完成空间数据展点、创建轨迹矢量线、属性字段赋值等工作,技术流程如图2所示。
图1 图
python教程字符串函数
2常规的外业轨
2
Python
批量
轨迹矢量线生成
量化生成外业轨
成方法示意
轨迹矢量线    3.2户界文本文本XML 中的表示表示矢量转换处理函数是格文通的转轨迹可能标系均为常数一定的外足外始轨实际To 据展外业一性本内2 关键技术
(1)用户友好的用户界面主要包括本类型、抽稀本成果)。
a.轨迹文本L、CSV、TXT
b.抽稀参数的位置点数据示相邻点时间示相邻点距离
c.矢量线成量线文件,包
d.文本成果换生成的标准(2)文本对输入文件理的一个重要数获取轨迹文(3)时间有些轨迹记格林尼治时间通过使用Py 转换。
(4)坐标常用的移动迹仪等专业轨能是WGS-84系统是CGCS 为地心坐标系数、角速度、定差异。经过外业轨迹点与外业轨迹矢量轨迹文本中的际应用结果表(5)文本使用ArcGI Line 等空间展点、创建轨业调查时间和性编码。
(6)字段使用ArcG 内容对轨迹矢界面设计 户界面是程序括了3个输入稀参数)和2个本文件夹:外T 等原始文本数:该项为可据进行抽稀,间间隔每大于离间隔每大于成果:由输入包含了所有的果:由输入的准格式的文本本文件的遍历和件夹下的所有要特点。本文利文本文件夹下系统的转换 记录软件,如间,因此需要ython 脚本的标系统的转换 动端Google 轨迹记录软件坐标,而当S2000。本文对系,定位、定长半轴一致过实际的对比与基础数据中量线成果的精的位置点数据表明该转换合本数据转矢量线IS 工具箱中的间分析功能模轨迹矢量线、和轨迹序号对段属性值计算 IS 的字段计矢量线进行属序设计的关键入参数(轨迹个输出参数(外业轨迹软件本所在文件夹可选参数,用于适当减小数于3秒钟保留于2米保留一入的轨迹文本文的轨迹矢量线的轨迹文本文本。
和读写 有文本文件进利用Python 下所有待处理如探险家轨迹要将其转为北的基本函数实Earth APP 软件采用的空间前我国测绘数对比两个坐标定向参数和椭球致,只是椭球体比计算,在广西中的道路基本精度要求。因据定义为CGC 合理。
线 的Add X Y Da 模块完成文本数属性填写等工对轨迹矢量线计算工具模块,属性赋值。
键,本软件的用迹文本文件夹、(矢量线成果件导出的KML、。
于对轨迹文本据量,如3秒留一个点,2米一个点。
文件夹生成的线。
件,通过格式进行遍历是批自带的List 理轨迹文本。
迹仪,记录的北京时间。本实现时间系统软件、探险家间坐标系统有数据采用的坐标系发现二者球体地心引力体短半轴存在西地区投影后本重合,能够满此,本文将原S2000坐标,ta 和Featur 数据的空间数工作,并依据线成果进行唯,依据轨迹文用、果、、本的式批ts 的本统家有坐者力在后满原re 数据唯文
4  研究结果
根据外业调查轨迹矢量线的成果要求,本文在充分研究专业轨迹记录软件产生的原始文本数据特点的基础上,应用Python 脚本语言,结合ArcGIS 的空间分析工具,通过软件开发的方式,实现了XML、KML、CSV、TXT 等多种格式的文本文件批量转换轨迹矢量线的功能。该软件在生产中得到验证,具有自动化程度高、转换成果正确的特点,能够很好地解决外业轨迹文本文件个数多、数据量大的问题。
本文的软件成果已用于外业调查轨迹矢量线的数据生产,工作效率和成果质量都得到了明显提高,由过
去的人工方式20分钟处理一条轨迹矢量线提高到现在的0.1分钟,而且属性字段赋值的自动化使得格林尼治时间的转换、调绘时间的填写等更加便捷,格式更加规范,避免人工手动输入造成的各种错误。如图3所示,左图为形式为ArcToolBox 风格的用户界面对话框,右图为在运行完成后获得的轨迹矢量线成果。
图3 软件用户界面和转换成果示意
5  结语
Python 作为一种解释性编程语言,具有很好的
灵活性,凭借其简洁高效的语法和对ArcGIS 标准COM 组件的调用,能够较好地胜任复杂的数据处理流程。应用Python 与ArcGIS 的组合开发,没有涉及底层函数的编写,因此出错率低、便于调试,使得开发者能够更多关注业务逻辑,保证成果的质量和正确性,特别适用于时间紧、问题多的GIS 数据处理工作。
当前,测绘生产的矢量成果和元数据主要为Shp、MDB 和GDB 等数据格式。随着ArcGIS 对Python 脚本的支持,Python 已经成为ArcGIS 开发的主要力量,其强大的功能、灵活的开发模式、简洁易学的特点能够高效率完成空间数据处理工作,以及其他较为复杂的业务流程,能够有效地辅助于测绘数据生产和质量检查。本文完成了对GIS 矢量数据和文本数据的批量自动化处理,希望能够为更多的GIS 数据分析和软件开发提供借鉴。
参考文献
[1] 辛兵厂,王来强,张朝坤. 浅谈Python 在地理国情普查
数据处理中的应用[J]. 测绘与空间地理信息,2014,37(6):108-110.
[2] 彭海波,向洪普. 基于Python 的空间数据批量处理方法
[J]. 测绘与空间地理信息,2011,34(4):81-82.  [3] 朱道强,关海涛. Python 在ArcGIS 中的应用[J]. 测绘
与空间地理信息,2013,36(7):152-154.
[4] 焦洋,邓鑫,李胜才. 基于Python 的ArcGIS 空间数据格
式批处理转换工具开发[J]. 现代测绘,2012,35(3):54-55.
[5] 林璐,王爽,李海泉,等. 在ArcGIS 下基于Python 的矢
量数据处理方法[J]. 测绘技术装备,2016,18(4):63-65.
[收稿日期] 2018-02-22
[作者简介] 吴君峰(1986-),男,河南商丘人,工程师,硕士研究生,主要从事地理信息系统开发与数据入库工作。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。