利用ArcPy 脚本实现TPK 文件制作

2019-07-30 07:10
山东林业科技 2019年3期
关键词:批量切片文档

景 淼

(辽宁省林业调查规划监测院,辽宁沈阳110122)

随着林业信息化相关技术的发展,林业外业调查系统不断进步,辽宁省在新一轮的林业信息化建设工作中, 更新了林业外业调查系统, 该系统以ARCGIS 为基础开发, 实现了外业调查和内业处理的无缝衔接,TPK 文件作为系统的底图文件格式,如何快速的制作TPK 文件成为了系统应用的关键。本文将详细介绍如何使用ArcPy 脚本实现TPK 文件的制作。

1 ArcPy,Python,TPK 文件概述

ArcPy 是一个以arcgisscripting 模块为基础并继承了arcgisscripting 功能进而构建而成的站点包。目的是以实用高效的方式通过Python 执行地理数据分析、数据转换、数据管理和地图自动化创建基础。ArcPy 提供了丰富纯正的Python 体验,具有代码自动完成功能,并针对每个函数、模块和类提供了参考文档。

Python 是一种计算机程序设计语言。 是一种动态的、 面向对象的脚本语言, 由荷兰人Guido van Rossum 于1989年发明, 第一个公开发行版发行于1991年。 最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。 Python 是一种支持动态输入的解释型语言,适用于交互式操作以及为称为脚本的一次性程序快速制作原型,同时其具有编写大型应用程序的强大功能。用ArcPy 编写的ArcGIS 应用程序的优势在于,可以使用由来自多个不同领域的GIS 专业人员和程序员组成的众多Python 小群体开发的附加模块。

Tpk 是ArcGIS10.1 推出的一种新的数据文件类型, 主要是用于将切片文件打包形成离线地图包,tpk 可以在 ArcGIS Runtime 或者 ArcGIS for Android/iOS 中作为切片底图被加载, 有多种制作tpk 的方法

2 制作tpk 文件的方法

制作tpk 文件的方法主要有三种,Tpk 文件的制作是基于mxd 文档的,所以要制作数据tpk 文件,必须先制作出mxd 文档,下面以最常用的万分之一分幅影像图数据(.tif 格式)为例介绍一下tpk 文件的制作

2.1 使用ArcMap 制作tpk 文件

在ArcGIS10 中tpk 的生成被集成在了ArcMap中,制作方法如下:

(1)打开ArcMap,将数据加载进来,调整好数据的图面位置,使其完全显示,保存为mxd。

(2)打开mxd 文档,选择菜单“自定义”-“ArcMap”选项,在弹出的对话框中选择“共享”选项卡,勾选“启用ArcGIS Runtime 工具”;

(3)在文件菜单中的“共享为”菜单下就多了一个选项“切片包”,选择该菜单,弹出“切片包”对话框,设置各个标签页中的参数,填写完成后点击“分析”,如果报错则根据错误提示重新修改各个参数,最后点击“共享”,开始制作tpk 文件:

2.2 使用ArcToolbox 工具制作tpk 文件

选择ArcToolbox-数据管理工具-创建地图切片包,运行该工具,弹出如下对话框:

选择要制作tpk 的地图文档mxd,指定tpk 保存的位置,切片格式默认使用PNG,级别根据需要设置,点击“ok“即可完成的tpk 制作。

2.3 利用ArcPy 脚本制作tpk 文件

(1)制作mxd 模板

打开arcmap,加载任意一幅万分之一影像图数据, 在地图文档属性中填写好相应的描述和标签,保存为mxd 文档。

(2)制作mxd 文档

获取mxd 模板: 使用arcpy.mapping.Map Document()获取mxd 模板,MapDocument()用于访问地图文档(.mxd) 的属性和方法。

替换文件数据源:使用Layer.replaceDataSource() 方法替换mxd 模板的万分之一影像图数据数据源。

缩放到图层:使用panToExtent()方法缩放到数据显示范围, 保证生成的tpk 文件能完全显示万分之一影像图数据。

另存为mxd 文件:使用saveACopy()方法另存mxd 文件, 文件命名使用万分之一影像图数据名命名。saveACopy (file_name, {version})方法将地图文档(.mxd) 保存为新文件或较早版本

(3)制作tpk 文件

使用arcpy.CreateMapTilePackage_management()方法制作tpk 文件

CreateMapTilePackage_management (in_map,service_type, output_file, format_type, level_of_detail,{service_file}, {summary}, {tags}, {extent}),从地图或底图生成切片,并将切片进行打包从而创建单个压缩的.tpk 文件,该方法一共9 个参数,其中有4 个参数为可选参数。

in_map 参数用于生成切片并对其进行打包的地图文档

service_type 参数确定是从现有的地图任务生成切片方案还是根据ArcGIS Online、Bing 地图和Google 地图生成地图切片。

output_file 参数输出地图切片包的文件名。

format_type 参数指定生成切片的格式, 一般使用PNG 格式。

level_of_detail 参数指定生成包切片的比例级别。 可选值为1 至20。 本文使用17 级

service_file 参数(可选) 指定用于切片方案的地图服务或XML 文件的名称。 仅当服务类型参数为EXISTING 时才需要此参数。

Summary 参数(可选) 将摘要信息添加到包的属性中。

Tags 参数(可选) 将标签信息添加到包的属性中。 可以添加多个标签,用逗号或分号分隔。

Extent 参数(可选)通过在范围参数中按X-Min Y-Min X-Max Y-Max 格式手动输入坐标来指定范围。 要使用特定图层的范围,请指定图层名称。

使用该方法需要注意的是输入地图文档 (即in_map 参数)必须具有相应的描述和标签,此工具才能执行。制作tpk 代码示例:

3 实现tpk 文件的批量制作

上文介绍的三种tpk 文件制作方法, 使用ArcMap,ArcToolbox 工具制作tpk,需要大量的人机互动,人为干预太多,导致效率低下,且无法实现批量制作。 利用arcpy 编写python 脚本可实现tpk 文件的批量制作

3.1 批量制作mxd 文档

利用上文所介绍的方法,增加for 循环,利用os.walk()遍历指定文件夹下的所有文件,通过后缀名过滤, 得到.tif 后缀的所有文件, 通过循环逐一替换mxd 模板文件里.tif 文件的数据源并另存为指定文件名的mxd 文档。 示例代码:

3.2 批量制作tpk 文件

增加for 循环,利用arcpy.ListFiles("*.mxd")遍历指定文件夹下的所有mxd 文件, 使用arcpy.CreateMapTilePackage_management()方法批量制作tpk文件。 示例代码:

formxd in arcpy.ListFiles("*.mxd"):

arcpy.CreateMapTilePackage_management(mxd,"ONLINE", os.path.splitext (mxd)[0] + '.tpk', "PNG", "17")

3.3 开启多个线程

ArcPy 脚本可开启多个任务线程, 充分利用机器的处理器和内存。 经过多次制作实践, 一台16G内存的工作站可同时开启5 个任务线程,大大提高了制作的效率, 笔者使用三台机器,20 个小时制作了6000 张万分之一影像图数据的tpk 文件,tpk 切片等级为17 级,单张平均时间为3 分钟。

4 结语

使用ArcPy 实现tpk 文件的批量制作, 减少人工干预,极大的提高了工作效率,对完善和提升辽宁省林业外业调查系统功能具有至关重要的意义,有助于全省林业信息化水平向更高层次发展。

猜你喜欢
批量切片文档
浅谈Matlab与Word文档的应用接口
有人一声不吭向你扔了个文档
批量提交在配置分发中的应用
新局势下5G网络切片技术的强化思考
采用经济数控车床批量车削孔类工件的再实践
网络切片标准分析与发展现状
Word文档 高效分合有高招
肾穿刺组织冷冻切片技术的改进方法
Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
在数控车床上批量钻铰孔类工件的实践