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 在许多情况下,您都可能需要修复数据源或重定向数据源至其他位置.然而,如果是在每个相关的 ...
随机推荐
- CDOJ 1269 ZhangYu Speech
预处理打表,sum[i][j]表示1.....i这些数字中 j 有几个.然后就很好处理询问了. #include<stdio.h> #include<math.h> #incl ...
- 神经网络 Neuroph - Java Neural Network Platform Neuroph
http://neuroph.sourceforge.net/image_recognition.html https://github.com/neuroph/neuroph
- (简单) POJ 3264 Balanced Lineup,RMQ。
Description For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line up in the same ...
- pyhton字符编码问题--decode和encode方法
1 decode和encode方法 字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成uni ...
- 试水MongoDB
1)安装好后启动mongodb 服务 1_1) 建立data/db ,保证至少有3g大小的盘 1_2) 建立log 文件夹 1_3)配置文件 内容,指定数据存放位置.日志文件位置 dbpath ...
- MVC+Repository+UOW+EntityFrmeWork的使用
1.首先创建一个空的MVC3应用程序,命名为MyRepository.Web,解决方案命名为MyRepository. 2.添加一个类库项目,命名为MyRepository.DAL,添加一个文件夹命名 ...
- ABP架构解析
ABP总体介绍 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ASP.NET Boilerplate是一个用最佳实践和流行技术开发现代WEB应 ...
- spring mvc自定义注解--登录时密码加密注解
1,定义注解名称接口 /** * 使用该注解不用再MD5转换了 * * @author adonis * */ @Target(ElementType.PARAMETER) @Retention(Re ...
- android入门,activity跳转,并传递message
首先是布局文件,如下: activity_main.xml <?xml version="1.0" encoding="utf-8"?> <L ...
- C# 存储过程使用方法
CREATE PROCEDURE [dbo].[GetNameById] @studentid varchar(8), @studentname nvarchar(50) OU ...