python使用arcpy.mapping模块批量出图


Posted in Python onMarch 06, 2017

出图是项目里常见的任务,有的项目甚至会要上百张图片,所以批量出土工具很有必要。arcpy.mapping就是ArcGIS里的出图模块,能快速完成一个出图工具。

arcpy.mapping模块里常用的类有MapDocument、DataFrame、Layer、DataDrivenPages和TextElement。

 MapDocument类是地图文档(.mxd文件)对应的类。初始化参数是一个字符串,一般是.mxd文件的路径:

mxd=arcpy.mapping.MapDocument(r"F:\GeoData\ChinaArea\ChinaVector.mxd")

DataFrame类用于操作地图内的Data Frame(即下图的Layers),能够控制地图的范围、比例尺等。用arcpy.mapping.ListDataFrames(map_document, {wildcard})函数获取。

df= arcpy.mapping.ListDataFrames(mxd)[0]

 Layer类用于操作具体的图层。能够控制图斑的样式、可见性等。可以用.lyr文件的路径初始化,也可以通过arcpy.mapping.ListLayers(map_document_or_layer, {wildcard}, {data_frame})函数获取。

lyr1=arcpy.mapping.Layer(r" F:\GeoData\ChinaArea\Province.lyr")

df.addLayer(lyr1)

lyr2=arcpy.mapping.ListLayer(mxd,"",df)[0]

DataDrivenPages类需要配合ArcMap中的Data Driven Pages工具使用。用于一个矢量文件内的全部或部分图斑每个出一张图的情况。

TextElement类用于操作地图上的文字,比如图名、页数。通过arcpy.mapping.ListLayoutElements (map_document, {element_type}, {wildcard})函数获取。

txtElm=arcpy.mapping.ListLayoutElements(mxd,"TEXT_ELEMENT")[0]

常见的出图模式有两种:一个矢量文件里每个图斑出一张图,一个文件夹下每个矢量文件出一张图。

每个图斑出一张图:

这种情况有Data Driven Pages工具配合最好。打开ArcMap的Customize->Toolbars->Data Driven Pages,设置好图层、名称字段、排序字段、显示范围和比例尺,保存地图。

# coding:utf-8

import arcpy

 

mxd=arcpy.mapping.MapDocument(r"F:\GeoData\ChinaArea\ChinaVector.mxd")

for pageNum in range(1,mxd.dataDrivenPages.pageCount):

     mxd.dataDrivenPages.currentPageID=pageNum

     mapName=mxd.dataDrivenPages.pageRow.getValue(mxd.dataDrivenPages.pageNameField.name)

     print mapName

     arcpy.mapping.ExportToPNG(mxd,r"F:\GeoData\ChinaArea\Province\\"+mapName+".png")

print 'ok'

一个文件夹下的每个矢量文件出一张图:

# coding:utf-8

import arcpy

import os

 

def GetShpfiles(shpdir):

     shpfiles=[]

     allfiles=os.listdir(shpdir)

     for file in allfiles:

          if os.path.isfile(file):

              if file.endswith('.shp'):

                   shpfiles.append(file)

          else:

              shpfiles.extend(GetShpfiles(file))

     return shpfiles

 

allshps=GetShpfiles(r"F:\GeoData\ChinaArea\Province")

mxd=arcpy.mapping.MapDocument(r"F:\GeoData\ChinaArea\ChinaVector.mxd")

lyr=arcpy.mapping.ListLayer(mxd)[0]

for shp in allshps:

     paths=os.path.split(shp)

     print paths[1]

     lyr.replaceDataSource(paths[0],"SHAPEFILE_WORKSPACE",paths[1])

     arcpy.mapping.ExportToPNG(mxd,r"F:\GeoData\ChinaArea\Province\\"+paths[1]+".png")

print 'ok'

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
详解Python中with语句的用法
Apr 15 Python
简单总结Python中序列与字典的相同和不同之处
Jan 19 Python
Python 实现数据库(SQL)更新脚本的生成方法
Jul 09 Python
python中使用xlrd读excel使用xlwt写excel的实例代码
Jan 31 Python
python logging重复记录日志问题的解决方法
Jul 12 Python
10 行 Python 代码教你自动发送短信(不想回复工作邮件妙招)
Oct 11 Python
python下载微信公众号相关文章
Feb 26 Python
python实现植物大战僵尸游戏实例代码
Jun 10 Python
Python 把序列转换为元组的函数tuple方法
Jun 27 Python
Python PyInstaller安装和使用教程详解
Jan 08 Python
python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案
Feb 18 Python
python程序实现BTC(比特币)挖矿的完整代码
Jan 20 Python
python与php实现分割文件代码
Mar 06 #Python
windows系统下Python环境的搭建(Aptana Studio)
Mar 06 #Python
windows下安装Python和pip终极图文教程
Mar 05 #Python
python爬虫的工作原理
Mar 05 #Python
python操作mysql数据库
Mar 05 #Python
Windows安装Python、pip、easy_install的方法
Mar 05 #Python
python入门教程之识别验证码
Mar 04 #Python
You might like
九个你必须知道而且又很好用的php函数和特点
2013/08/08 PHP
PHP实现打包下载文件的方法示例
2017/10/07 PHP
Centos7 Yum安装PHP7.2流程教程详解
2019/07/02 PHP
JQuery与JS里submit()的区别示例介绍
2014/02/17 Javascript
jQuery leonaScroll 1.1 自定义滚动条插件(推荐)
2016/09/17 Javascript
jQuery Ajax前后端使用JSON进行交互示例
2017/03/17 Javascript
jquery Form轻松实现文件上传
2017/05/24 jQuery
Angular实现图片裁剪工具ngImgCrop实践
2017/08/17 Javascript
Vue组件开发之LeanCloud带图形校验码的短信发送功能
2017/11/07 Javascript
JS实现小球的弹性碰撞效果
2017/11/11 Javascript
解决vue attr取不到属性值的问题
2018/09/18 Javascript
JS尾递归的实现方法及代码优化技巧
2019/01/19 Javascript
Vue数字输入框组件示例代码详解
2020/01/15 Javascript
原生JavaScript创建不可变对象的方法简单示例
2020/05/07 Javascript
公众号SVG动画交互实战代码
2020/05/31 Javascript
解决vue bus.$emit触发第一次$on监听不到问题
2020/07/28 Javascript
Python环境下搭建属于自己的pip源的教程
2016/05/05 Python
关于Django显示时间你应该知道的一些问题
2017/12/25 Python
Python AES加密实例解析
2018/01/18 Python
TensorFlow搭建神经网络最佳实践
2018/03/09 Python
Python实现修改文件内容的方法分析
2018/03/25 Python
Python 实现还原已撤回的微信消息
2019/06/18 Python
Python制作词云图代码实例
2019/09/09 Python
Python切图九宫格的实现方法
2019/10/10 Python
Python测试Kafka集群(pykafka)实例
2019/12/23 Python
Zipadee-Zip襁褓过渡毯:Sleeping Baby
2018/12/30 全球购物
澳大利亚领先的时尚内衣零售商:Bras N Things
2020/07/28 全球购物
发展部经理职责规定
2014/02/22 职场文书
出国英文推荐信
2014/05/10 职场文书
优秀班集体先进事迹材料
2014/05/28 职场文书
计算机毕业大学生求职信
2014/06/26 职场文书
Html5新增了哪些功能
2021/04/16 HTML / CSS
详解TS数字分隔符和更严格的类属性检查
2021/05/06 Javascript
CSS实现渐变色边框(Gradient borders)的5种方法
2022/03/25 HTML / CSS
PHP面试题 wakeup魔法 Ezpop pop序列化与反序列化
2022/04/11 PHP
Windows Server 2012 修改远程默认端口3389的方法
2022/04/28 Servers