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 在许多情况下,您都可能需要修复数据源或重定向数据源至其他位置.然而,如果是在每个相关的 ...
随机推荐
- pymongo一次更新多条数据
db.collection.update(query, update, upsert, multi) pymongo使用示例 db.collection.update({}, {'$set' : {' ...
- Unity3d之协程自实现测试
using UnityEngine; using System.Collections; public class TestStartCoroutine : MonoBehaviour { IEnum ...
- man info --help区别
--help: 是一个工具选项,可以用来显示一些工具的信息 man : 可以显示系统手册页中的内容,这些内容大多数都是对命令的解释信息 PS: () Space 键可以显示下一屏的文本信息 () q ...
- object - c 在URL中截取特定参数的值
#pragma mark - 获取url特定的参数 -(NSString *) jiexi:(NSString *)CS webaddress:(NSString *)webaddress { NSE ...
- SSL证书指令
转自:http://blog.csdn.net/madding/article/details/26717963 生成Self Signed证书 # 生成一个key,你的私钥,openssl会提示你输 ...
- ubuntu12.04安装tar.gz格式的jdk
注意系统的版本,jdk也有32位和64位的,不然会无效 首先将*.tar.gz压缩包解压 命令: tar -xzvf *.tar.gz 假设得到的文件夹为java 将其移动到/usr/中 命令为:su ...
- salt自动化部署
1. 到编译机器编译 /export/Deploy/vm-agent 执行脚本 ./vm-agent.sh develop -alpha 2.检查rpm包是否打包成功 http://172.18.13 ...
- leetcode--012 single number I
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA0MAAADGCAIAAACfN8xOAAAZ6UlEQVR4nO3dsZKcurbG8fNOnd1nIv
- CodeSmith生成实体类
1.新建一个模板,将以下代码复制进去,在属性工具栏里设置 SourceTtable和NameSpace , 点击生成即可 <%@ CodeTemplate Language="C#&q ...
- C# .NET中的 反射的应用
C#中的映射 C#编译后的文件主要由IL代码和元数据组成,元数据为.NET组件提供了丰富的自描述特性,它使得我们可以在代码运行时获知组件中的类型等重要的信息.C#中这是通过一种称作映射(Reflect ...