这篇文章主要是讲述ArcGIS中基于Python的制图模块——
arcpy.mapping
相关使用方法。
## 通过指定的路径创建地图文档对象
mxd = arcpy.mapping.MapDocument(地图文档路径)
## 表示使用当前ArcMap中的地图文档,CURRENT必须大写;
## 需要注意的是,当我们CURRENT关键字不可用时,
## 可以检查我们的脚本工具创建时“Always run in foreground”是否勾选,
## 因为后台运行时CURRENT不可用。
mxd = arcpy.mapping.MapDocument("CURRENT")
RefreshActiveView
和RefreshTOC
函数用来刷新:arcpy.RefreshActiveView()
arcpy.RefreshTOC()
mxd.save()
mxd.saveACopy(另存为的路径)
del mxd
数据框对象列表=arcpy.mapping.ListDataFrames(地图文档对象)
数据框.name
数据框.scale
数据框.spatialReference
...
## 保持在数据框比例尺下,根据输入的Extent对象的范围属性,将数据框范围剧中显示;
## 其中Extent对象是一个矩形。
数据框.panToExtent(一个Extent范围对象)
## 缩放至所选要素
数据框.zoomToSelectedFeatures({某一要素})
两种
访问Layer对象的方法:图层对象lyr = arcpy.mapping.Layer(图层具体路径)
图层对象列表lyrList = arcpy.mapping.ListLayers(地图文档对象, {通配符参数}, {指定数据框})
图层对象.showLabels = True/False //显示或者关闭图层的标注
图层对象.name //注意,图层名称区分大小写
图层对象.datasetName //返回工作空间中图层数据集名称
图层对象.dataSource //返回图层数据集的完整路径
图层对象.getExtent()
图层对象.save()
图层对象.saveACopy(另存为的完整路径)
## 判断此图层对象是否支持指定的属性,返回boolean值。
图层对象.supports(属性名)
# 举个栗子,判断lyr图层是否支持显示标注属性
lyr.supports("SHOWLABELS")
arcpy.mapping.AddLayer(待添加的数据框,待添加的图层对象,{添加位置如BOTTOM、TOP})
arcpy.mapping.InsertLayer(参数们)
arcpy.mapping.RemoveLayer(参数们)
arcpy.MoveLayer(参数们)
...
## 上述函数的具体参数可以去help中查看,描述得很清楚,
## 我们知道有这个就可以了,具体用的时候自己去看看哈。
有时候当我们打开一个已有的地图文档时,由于地图文档
源数据的移动
或者本身.mxd文档的移动
,导致数据连接错误。我们可以用脚本实现数据连接的修复。
## 检测数据连接是否断开,返回指定地图文档中断开连接的图层列表
brokenlist = arcpy.mapping.ListBrokenDataSources(地图文档对象)
地图对象/图层对象/表视图对象.findAndReplaceWorkspacePaths(查找的工作空间路径,替换的工作空间路径,{是否验证有效性})
// 在是否验证有效性参数为boolean型,当为True时,则将验证替换的工作空间路径或者输入的数据集是否有效,
// 如果有效则被更新,如果无效则使用原来的数据源。
// 需要注意的是,我们在修改工作空间路径时,可以修改全部路径,也可以只修改部分路径。
地图对象/图层对象/表视图对象.replaceWorkspaces(旧工作空间,旧工作空间类型,新工作空间,新工作空间类型,{是否验证有效性})
// 可以实现工作空间路径的修改,类似findAndReplaceWorkspacePaths函数,
// 但是需要注意的是,这里改变的是工作空间而不是数据集;
// 也可以修改工作空间类型,比如说一个shapefile要素移动到一个地理数据库下:
mxd.replaceWorkspaces("C:/shapes", "SHAPEFILE_WORKSPACE", "C:/database.gdb", "FILEGDB_WORKSPACE")
布局元素(如指北针、比例尺等)不能用脚本创建
,但是可以用脚本进行相关修改
。因此首先我们必须要创建页面布局元素对象。可以通过ListLayoutElements
函数确定地图文档中已经存在了哪些元素:
地图元素对象列表 = arcpy.mapping.ListLayoutElements(地图文档对象,{元素类型}, {名称通配符})
其中,元素类型有以下:
## 读取地图文档中的图例元素对象
legend = arcpy.mapping.ListLayoutElements(地图文档, "LEGEND_ELEMENT")[0]
legend.autoAdd = True
arcpy,mapping.AddLayer(数据框,待添加的图层,添加位置)
sourceImage
属性,用来表示图像数据源的路径。text
属性elem.text
元素对象属性:
## 需要注意的是,并不是所有元素都有默认的名称,因此脚本中使用元素时需要先在地图文档中设置元素名称。
元素对象.name
元素对象.type
arcpy.mapping中提供了很多输出地图的函数,具体使用可以见help:
PDFDocument
类,用来处理PDF文件。## 在内存中创建一个空的PDFDocument对象
pdf对象 = arcpy.mapping.PDFDocumentCreate(pdf路径)
## 从现有的pdf文件中返回一个PDFDocument对象
pdf对象 = arcpy.mapping.PDFDocumentOpen(现有pdf路径)
pdf对象.appendPages(待添加的pdf路径)
pdf对象.insertPages(参数们)
pdf对象.updateDocProperties(参数们)
pdf对象.updateDocSecurity(参数们)
pdf对象.saveAndClose() //对pdf对象进行编辑后一定要关闭
## tips:参数不清楚的去看help文档
删除pdf对象的引用
:del pdf对象
如果需要实例脚本工具,访问 ArcGIS资源网站,在输入框中输入 arcpy.mapping sample script tools即可。
–原创文章,转载必须注明出处–