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实现字典依据value排序
Feb 24 Python
两个命令把 Vim 打造成 Python IDE的方法
Mar 20 Python
Python正则替换字符串函数re.sub用法示例
Jan 19 Python
Python实现的视频播放器功能完整示例
Feb 01 Python
python 不以科学计数法输出的方法
Jul 16 Python
python实现自动网页截图并裁剪图片
Jul 30 Python
使用Python实现跳一跳自动跳跃功能
Jul 10 Python
如何用Python来理一理红楼梦里的那些关系
Aug 14 Python
浅谈Pytorch中的torch.gather函数的含义
Aug 18 Python
浅谈keras 模型用于预测时的注意事项
Jun 27 Python
Python按顺序遍历并读取文件夹中文件
Apr 29 Python
python中pd.cut()与pd.qcut()的对比及示例
Jun 16 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
thinkPHP中_initialize方法实例分析
2016/12/05 PHP
Javascript 更新 JavaScript 数组的 uniq 方法
2008/01/23 Javascript
javascript setTimeout()传递函数参数(包括传递对象参数)
2010/04/07 Javascript
Javascript 面向对象 命名空间
2010/05/13 Javascript
如何用JavaScript定义一个类
2014/09/12 Javascript
实例分析javascript中的call()和apply()方法
2014/11/28 Javascript
javascript实现随机读取数组的方法
2015/08/03 Javascript
Web纯前端“旭日图”实现元素周期表
2017/03/10 Javascript
js 概率计算(简单版)
2017/09/12 Javascript
详解vue-cli 快速搭建单页应用之遇到的问题及解决办法
2018/03/01 Javascript
react中Suspense的使用详解
2019/09/01 Javascript
vue 将多个过滤器封装到一个文件中的代码详解
2020/09/05 Javascript
[01:55]2014DOTA2国际邀请赛快报:国土生病 紧急去医院治疗
2014/07/10 DOTA
[59:30]完美世界DOTA2联赛PWL S3 access vs LBZS 第二场 12.20
2020/12/23 DOTA
Python常用小技巧总结
2015/06/01 Python
给你选择Python语言实现机器学习算法的三大理由
2017/11/15 Python
启动Atom并运行python文件的步骤
2018/11/09 Python
python实现朴素贝叶斯算法
2018/11/19 Python
浅谈Python编程中3个常用的数据结构和算法
2019/04/30 Python
python 实现二维列表转置
2019/12/02 Python
python实现企业微信定时发送文本消息的实例代码
2020/11/25 Python
利用CSS3实现毛玻璃效果示例源码
2016/09/25 HTML / CSS
CSS3制作炫酷带方向感应的鼠标滑过图片3D动画
2016/03/16 HTML / CSS
GLAMGLOW格莱魅美国官网:美国知名的面膜品牌
2016/12/31 全球购物
澳大利亚一站式数码相机商店:CameraPro
2020/03/09 全球购物
SQL里面IN比较快还是EXISTS比较快
2012/07/19 面试题
建筑工程专业学生的自我评价
2013/12/25 职场文书
爱情保证书大全
2014/04/29 职场文书
中国梦演讲稿开场白
2014/08/28 职场文书
传承焦裕禄精神思想汇报2014
2014/09/10 职场文书
二手房购房协议书范本
2014/10/05 职场文书
大学生实训报告总结
2014/11/05 职场文书
毕业生个人自荐书
2015/03/05 职场文书
2014年底个人工作总结
2015/03/10 职场文书
2015年银行客户经理工作总结
2015/04/01 职场文书
Python Pandas 删除列操作
2022/03/16 Python