arcpy.mapping常用四大件-MapDocument
arcpy.mapping常用四大件-MapDocument
by 李远祥
点开arcpy.mapping的帮助,可以看到其有限的几个类,看起来东西不是很多,但却是非常的使用。由于arcpy定位就是粗粒度的调用,因此,它的类和接口结对不可能像AO那么多,但可别小看了arcpy.mapping的这聊聊无几的类,它几乎封装了ArcMap的所有地图交互操作。下图是arcpy.mapping的类

其中包含了最为常用的几个大类,笔者认为最常用的主要入口的四类分别为MapDocument 、MapsurroundElement 、Layer 、StyleItem 。通过这四个大类作为入口,基本上将地图的几类型操作涵盖在其中。
首先最常用的是MapDocument ,它几乎是获取地图文档内容的第一道入口。通过MapDocument ,能够指向特定路径的mxd文档,继而逐步获取其他的地图文档信息,如框架、图层、数据源、地图整饰要素等。下面可以看看它的一些主要的属性和方法(详细部分可以参考Esri官方帮助,不过对于arcpy.mapping部分还是以英文为主)
MapDocument 的调用方式如下
#使用MapDocument的方式 import arcpy mxd = arcpy.mapping.MapDocument(r"C:\Project\Project.mxd")
再来看看MapDocument最常见的属性activeDataFrame、activeView、author、credits、description、filePath、relativePaths、tags、title 。从这些常见的属性来看,主要是地图文档的一些基本信息,如活动框架、保存路径、存储为相对路径等;而某一些说明,如标签、标题、作者等基本上用途不大,但一般会在地图发布或者arcgis portal 使用的时候需要附加的一些信息。这些属性稍微懂点英文应该都能明白其作用。
然后就是最常用的几个方法,而且也是非常的实用。其方法主要是
- 创建或者删除文档的缩略图(makeThumbnail 、deleteThumbnail),对于一般用户来说意义不大;
- 替换地图文档的数据findAndReplaceWorkspacePaths 和replaceWorkspaces
- 保存地图文档修改 save (保存修改设置)、saveACopy(将文档另存为arcgis的其他低版本)
前面也说过,如果有大量的使用高版本arcgis软件生成的mxd文档,需要保存为较低版本时,那就不需要逐个打开了,采用arcpy.mapping的MapDocument的saveACopy方法,可以很快的实现批量转换。当然,这需要配合Python的一些读写代码,例如下面的实例代码,将某个目录下的所有mxd文档另存为较低版本的10.0版本(笔者一般都是使用最新版本的arcgis软件,有时候成果分发总是比较麻烦,大家也不妨尝试下下面的这种方式)
#将C:\Mxds 路径下的所有mxd文档另存为10.0版本
import glob
import os
import arcpy
for filename in glob.glob(r'C:\\Mxds\*.mxd'):
fname = os.path.basename(filename)
mxd = arcpy.mapping.MapDocument(filename)
fpath = "C:\\Mxds\\100\\"+fname
mxd.saveACopy(fpath,"10.0")
通过简单的代码便可实现快速转换。
当然,还有就是更改mxd的数据源的操作,这里同样简单,我们也可以看到其findAndReplaceWorkspacePaths 的方法,下面是通过arcpy代码去修改地图文档的数据源
#coding=gbk #修改数据源 # import arcpy mxd = arcpy.mapping.MapDocument(r"C:\PythonTest\changeSource.mxd") mxd.findAndReplaceWorkspacePaths(r"C:\PythonTest\data\Python.gdb",r"C:\PythonTest\changeSource.gdb","FILEGDB_WORKSPACE") #另存为一个新的mxd mxd.saveACopy(r"C:\PythonTest\changeSource2.mxd")
总体上说,MapDocument类提供的功能还是比较直接,作为入口类型的类,基本上通过简单的一两个方法就实现了一些以往通过打开地图来实现的功能。同时,一些基础的信息,如图层信息,也必须通过MapDocument 然后转到DataFrame 再获取图层的指向
#通过MapDocument获取dataframe,从而获取每一个图层
import arcpy
mxd = arcpy.mapping.MapDocument(r"C:\Project\Project.mxd")
df = arcpy.mapping.ListDataFrames(mxd, "图层")[0]
inLayer=arcpy.mapping.ListLayers(mxd, "", df)
for layer in inLayer:
#打印图层名称
print layer.name
一旦能获取到图层的信息,那么,就能使用Layer类对地图的配置进行各种操作了。
arcpy.mapping常用四大件-MapDocument的更多相关文章
- arcpy.mapping常用四大件-StyleItem
arcpy.mapping常用四大件-StyleItem by 李远祥 StyleItem 笔者将其归类到arcpy.mapping的四大件当中,主要是因为它的独特之处,就是其能力是直接读取.styl ...
- arcpy.mapping常用四大件-MapsurroundElement
arcpy.mapping常用四大件-MapsurroundElement by 李远祥 在arcpy.mapping 中,除了数据入口MapDocument.图层Layer之外,另一重要的角色就是M ...
- arcpy.mapping常用四大件-Layer
arcpy.mapping常用四大件-Layer by 李远祥 图层是地图里面非常重要的组成,几乎所有的制图显示都与图层有关.首先它是连接数据与符号渲染的重要桥梁,其次在出版地图中,图层又与图例关联在 ...
- 【281】◀▶ arcpy.mapping 常用类说明
arcpy.mapping 教程入门 arcpy.mapping 指导原则 按字母顺序排序的 arcpy.mpping 类列表 按字母顺序排序的 arcpy.mpping 函数列表 按字母顺序排序的 ...
- 【282】◀▶ arcpy.mapping 常用函数说明
arcpy.mapping 教程入门 arcpy.mapping 指导原则 按字母顺序排序的 arcpy.mpping 类列表 按字母顺序排序的 arcpy.mpping 函数列表 按字母顺序排序的 ...
- arcpy.mapping实战-专题图制图自动化
arcpy.mapping实战-专题图制图自动化 by 李远祥 最初对arcpy.mapping感兴趣是因为一次大规模的专题地图调整的需要,由于某某单位利用ArcEngine编写的专题图出图系统,出现 ...
- 使用arcpy.mapping模块批量出图
出图是项目里常见的任务,有的项目甚至会要上百张图片,所以批量出土工具很有必要.arcpy.mapping就是ArcGIS里的出图模块,能快速完成一个出图工具. arcpy.mapping模块里常用 ...
- 按字母顺序排序的 arcpy.mapping 类列表
arcpy.mapping 类可使用地图文档 (.mxd) 或图层文件 (.lyr) 中的不同对象类型的各种方法和属性.此文档可专门用作快速参考.有关详细信息,请使用链接跳转至各帮助页面. arcpy ...
- 使用arcpy.mapping 更新和修复数据源
来自:https://blog.csdn.net/gisinfo/article/details/6675390 在许多情况下,您都可能需要修复数据源或重定向数据源至其他位置.然而,如果是在每个相关的 ...
随机推荐
- 利用openURL,在IOS应用中打开另外一个应用
在IOS中,实现一个应用启动另外一个应用,使用UIApplication的openURL:方法就可实现,这里以test跳到test02为例.(需要先创建这两个工程) 注册自定义URL协议(在test中 ...
- nginx的一些配置
map $http_user_agent $***_build_version { default "***.exe"; "~Windows NT 10.0" ...
- ps--记录几个方法步骤
1.图片文字去掉 1.1 矩形工具-->吸管-->alt+delete 1.2 钢笔工具-->Ctrl+回车(变换选区)-->吸管-->alt+delete 2.图层锁不 ...
- docker网络访问(三)
docker网络访问 ifconfig查看网卡,启动docker的时候,docker会帮我们创建一个docker0的网桥. 1.随机映射 docker run -P 2.指定映射 -p hostPor ...
- Android动画之translate(位移动画)(转)
转自:http://www.cnblogs.com/bavariama/archive/2013/01/29/2881225.html 上一篇文章讲了 Android的左右滑动切换,实现过程是非常简单 ...
- Struts2接受参数的几种类型和接受复杂类型参数(list<String>和list<Object>)
Struts2接受参数的几种类型 大概有这几种类型: 1.使用Action的属性接受参数 在Action中加入成员变量,配置Getter和Setter方法,Getter而和Setter方法的名字和表单 ...
- BZOJ1237: [SCOI2008]配对
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1237 题目大意:你有n 个整数Ai和n 个整数Bi.你需要把它们配对,即每个Ai恰好对应一 ...
- iOS MVVM 前世今生
MVVM,Model-View-ViewModel,一个从 MVC 模式中进化而来的设计模式,最早于2005年被微软的 WPF 和 Silverlight 的架构师 John Gossman 提出.
- Java的三种代理模式
Java的三种代理模式 1.代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩 ...
- 有限状态机(Finite-state machine)
var menu = { // 当前状态 currentState: 'hide', // 绑定事件 initialize: function() { var self = this; self.on ...