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 相关文章推荐
web.py在模板中输出美元符号的方法
Aug 26 Python
使用IronPython把Python脚本集成到.NET程序中的教程
Mar 31 Python
Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法
Jan 11 Python
python3安装pip3(install pip3 for python 3.x)
Apr 03 Python
对Pycharm创建py文件时自定义头部模板的方法详解
Feb 12 Python
python scatter散点图用循环分类法加图例
Mar 19 Python
django 消息框架 message使用详解
Jul 22 Python
python yield和Generator函数用法详解
Feb 10 Python
Python 使用生成器代替线程的方法
Aug 04 Python
python用Configobj模块读取配置文件
Sep 26 Python
详解Python描述符的工作原理
Jun 11 Python
python画条形图的具体代码
Apr 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中使用Oracle数据库(3)
2006/10/09 PHP
几个php应用技巧
2008/03/27 PHP
PHP与C#分别格式化文件大小的代码
2011/05/14 PHP
PHP以及MYSQL日期比较方法
2012/11/29 PHP
ThinkPHP实现跨模块调用操作方法概述
2014/06/20 PHP
PHP-Java-Bridge使用笔记
2014/09/22 PHP
使用php+swoole对client数据实时更新(一)
2016/01/07 PHP
全面了解PHP中的全局变量
2016/06/17 PHP
DOM 脚本编程中的兄弟节点
2009/10/31 Javascript
ajax处理php返回json数据的实例代码
2013/01/24 Javascript
jQuery之按钮组件的深入解析
2013/06/19 Javascript
JavaScript中instanceof运算符的用法总结
2013/11/19 Javascript
thinkphp实现无限分类(使用递归)
2015/12/19 Javascript
JavaScript代码性能优化总结篇
2016/05/15 Javascript
jquery mobile实现可折叠的导航按钮
2017/03/11 Javascript
vue cli升级webapck4总结
2018/04/04 Javascript
详解给Vue2路由导航钩子和axios拦截器做个封装
2018/04/10 Javascript
JavaScript引用类型Array实例分析
2018/07/24 Javascript
js tab栏切换代码实例解析
2019/09/03 Javascript
electron踩坑之remote of undefined的解决
2020/10/06 Javascript
Vue中正确使用Element-UI组件的方法实例
2020/10/13 Javascript
[02:51]2018年度DOTA2最佳中单位选手-完美盛典
2018/12/17 DOTA
浅析python实现scrapy定时执行爬虫
2018/03/04 Python
python连接PostgreSQL数据库的过程详解
2019/09/18 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
2020/02/06 Python
浅析matlab中imadjust函数
2020/02/27 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
2020/04/14 Python
HTML5 CSS3给网站设计带来出色效果
2009/07/16 HTML / CSS
HTML5中新标签和常用标签详解
2014/03/07 HTML / CSS
快递业务员岗位职责
2014/01/06 职场文书
运动会表扬稿大全
2014/01/16 职场文书
2014各大专业毕业生自我评价
2014/09/17 职场文书
KTV门卫岗位职责
2014/10/09 职场文书
追讨欠款律师函
2015/06/24 职场文书
《月歌。》宣布制作10周年纪念剧场版《RABBITS KINGDOM THE MOVIE》
2022/04/02 日漫
如何解决flex文本溢出问题小结
2022/07/15 HTML / CSS