导入 ArcPy 及打包地图

导入 ArcPy

安装 ArcGIS 的时候一般会附带安装 Python,但是其版本比较旧,例如 ArcGIS 10.1 自带的还是 Python 2.6,而我通常选择使用较新的 Python 2.x 版本,这就造成了在执行跟 ArcPy 相关的命令时,将提示 No module named arcpy 的问题。对此,ArcGIS 官方文档提供了一个导入 ArcPy 的方法。

打开资源管理器浏览至 python27\Lib\site-packages 文件夹,以 ArcGIS 10.2.2 版本为例,添加或编辑 Desktop10.2.2.pth 文件(或 Engine10.2.2.pth、Server10.2.2.pth),内容如下:

c:\Program Files\ArcGIS\Desktop10.2.2\arcpy
c:\Program Files\ArcGIS\Desktop10.2.2\bin
c:\Program Files\ArcGIS\Desktop10.2.2\ArcToolbox\Scripts

根据自己的实际路径修改完成后,如果提示 No module named numpy,那么还要去下载安装 NumPy,之后就可以正常使用 ArcPy 了。

打包地图

之前有同事通过 ArcGIS 的 GP 工具打包生成的 MPK 文件不能用于 ArcGIS Runtime,检查后发现 MPK 中均没有 .msd 文件。另一个问题是 MPK 中含有 v101 和 v10 两个文件夹,而我们的系统只需要 v101 即可。造成这些问题的原因都在于打包过程中没有指定正确的参数。类似地,利用 ArcPy 打包地图时,需要指定 arcgisruntime 和 version 两个参数,官方文档 对各个参数做了详尽的解释。一个可能的示例代码如下:

# Name: PackageMap.py
# Description:  Find all the map documents that reside in a specified folder and create map packages for each map document.

import os
import arcpy

from arcpy import env

# Set environment settings
env.overwriteOutput = True
env.workspace = "C:/arcgis" 

# Loop through the workspace, find all the mxds and create a map package using the same name as the mxd
for mxd in arcpy.ListFiles("*.mxd"):
    print "Packaging " + mxd
    arcpy.PackageMap_management(mxd, os.path.splitext(mxd)[0] + ".mpk", "PRESERVE", "CONVERT_ARCSDE", "#", "RUNTIME", version="10.1")

Comments

comments powered by Disqus