Only Mookrs

A fugitive from the world.

导入 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