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 相关文章推荐
Python3基础之list列表实例解析
Aug 13 Python
Python中的进程分支fork和exec详解
Apr 11 Python
Django的session中对于用户验证的支持
Jul 23 Python
Python基于pygame模块播放MP3的方法示例
Sep 30 Python
浅谈flask中的before_request与after_request
Jan 20 Python
Python实现类似比特币的加密货币区块链的创建与交易实例
Mar 20 Python
Opencv+Python 色彩通道拆分及合并的示例
Dec 08 Python
使用python telnetlib批量备份交换机配置的方法
Jul 25 Python
利用Python实现kNN算法的代码
Aug 16 Python
Python连接SQLite数据库并进行增册改查操作方法详解
Feb 18 Python
python爬虫开发之Beautiful Soup模块从安装到详细使用方法与实例
Mar 09 Python
python3 字符串str和bytes相互转换
Mar 23 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
初探PHP5
2006/10/09 PHP
PHP获取QQ达人QQ信息的方法
2015/03/05 PHP
PHP编译安装时常见错误解决办法
2015/05/28 PHP
php构造方法中析构方法在继承中的表现
2016/04/12 PHP
老生常谈PHP面向对象之解释器模式
2017/05/17 PHP
ThinkPHP5.0框架实现切换数据库的方法分析
2019/10/30 PHP
JavaScript 解析Json字符串的性能比较分析代码
2009/12/16 Javascript
js两行代码按指定格式输出日期时间
2011/10/21 Javascript
jquery鼠标滑过提示title具体实现代码
2013/08/06 Javascript
JavaScript设计模式之外观模式介绍
2014/12/28 Javascript
Bootstrap Table服务器分页与在线编辑应用总结
2016/08/08 Javascript
几句话带你理解JS中的this、闭包、原型链
2016/09/26 Javascript
jQuery  ready方法实现原理详解
2016/10/19 Javascript
移动端使用localResizeIMG4压缩图片
2017/04/22 Javascript
express默认日志组件morgan的方法
2018/04/05 Javascript
浅析vue 函数配置项watch及函数 $watch 源码分享
2018/11/22 Javascript
vue发送websocket请求和http post请求的实例代码
2019/07/11 Javascript
JavaScript canvas实现跟随鼠标事件
2020/02/10 Javascript
解决Vue-Router升级导致的Uncaught (in promise)问题
2020/08/07 Javascript
python处理json数据中的中文
2014/03/06 Python
Python数据分析之双色球统计单个红和蓝球哪个比例高的方法
2018/02/03 Python
基于numpy.random.randn()与rand()的区别详解
2018/04/17 Python
Python实现base64编码的图片保存到本地功能示例
2018/06/22 Python
python函数的作用域及关键字详解
2019/08/20 Python
Python中断多重循环的思路总结
2019/10/04 Python
中国酒类在线零售网站:酒仙网
2016/08/20 全球购物
教师推荐信范文
2013/11/24 职场文书
汽车维修专业个人求职信范文
2014/01/01 职场文书
银行演讲稿范文
2014/01/03 职场文书
创意活动策划书
2014/01/15 职场文书
中秋节礼品促销方案
2014/02/02 职场文书
《木笛》教学反思
2014/03/01 职场文书
完美的中文自荐信
2014/05/24 职场文书
我的中国梦演讲稿800字
2014/08/19 职场文书
个人师德师风自我剖析材料
2014/09/29 职场文书
5分钟教你docker安装启动redis全教程(全新方式)
2021/05/29 Redis