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使用range函数计算一组数和的方法
May 07 Python
编写Python脚本抓取网络小说来制作自己的阅读器
Aug 20 Python
python控制台中实现进度条功能
Nov 10 Python
基于Python实现文件大小输出
Jan 11 Python
全面了解Python环境配置及项目建立
Jun 30 Python
Python基于pillow判断图片完整性的方法
Sep 18 Python
Python实现将罗马数字转换成普通阿拉伯数字的方法
Apr 19 Python
对python list 遍历删除的正确方法详解
Jun 29 Python
Django2.1集成xadmin管理后台所遇到的错误集锦(填坑)
Dec 20 Python
使用python 的matplotlib 画轨道实例
Jan 19 Python
Python常用模块函数代码汇总解析
Aug 31 Python
Python中使用aiohttp模拟服务器出现错误问题及解决方法
Oct 31 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和ACCESS写聊天室(八)
2006/10/09 PHP
php面向对象全攻略 (六)__set() __get() __isset() __unset()的用法
2009/09/30 PHP
微信开发之网页授权获取用户信息(二)
2016/01/08 PHP
Laravel框架模型的创建及模型对数据操作示例
2019/05/07 PHP
Laravel框架源码解析之模型Model原理与用法解析
2020/05/14 PHP
javascript中利用数组实现的循环队列代码
2010/01/24 Javascript
javascipt基础内容--需要注意的细节
2013/04/10 Javascript
初识SmartJS - AOP三剑客
2014/06/08 Javascript
jquery简单实现幻灯片的方法
2015/08/03 Javascript
JavaScript中的call方法和apply方法使用对比
2015/08/12 Javascript
JS使用cookie实现DIV提示框只显示一次的方法
2015/11/05 Javascript
基于Vue.js实现数字拼图游戏
2016/08/02 Javascript
Js 获取、判断浏览器版本信息的简单方法
2016/08/08 Javascript
前端js实现文件的断点续传 后端PHP文件接收
2016/10/14 Javascript
NODE.JS跨域问题的完美解决方案
2016/10/20 Javascript
清除js缓存的多种方法总结
2016/12/09 Javascript
js操作浏览器的参数方法
2017/01/21 Javascript
Bootstrap进度条实现代码解析
2017/03/07 Javascript
正则 js分转元带千分符号详解
2017/03/08 Javascript
JavaScript ES6中const、let与var的对比详解
2017/06/18 Javascript
VUE axios发送跨域请求需要注意的问题
2017/07/06 Javascript
微信小程序 上传头像的实例详解
2017/10/27 Javascript
微信小程序在其他页面监听globalData中值的变化
2019/07/15 Javascript
原生JavaScript实现留言板
2021/01/10 Javascript
Python执行时间的计算方法小结
2017/03/17 Python
python多线程socket编程之多客户端接入
2017/09/12 Python
Python批量生成幻影坦克图片实例代码
2019/06/04 Python
python 视频逐帧保存为图片的完整实例
2019/12/10 Python
python 类之间的参数传递方式
2019/12/20 Python
python为QT程序添加图标的方法详解
2020/03/09 Python
美国时尚在线:Showpo
2017/09/08 全球购物
爱尔兰最大的体育零售商:Life Style Sports
2019/06/12 全球购物
环境工程求职简历的自我评价范文
2013/10/24 职场文书
中国梦主题教育活动总结
2014/05/05 职场文书
销售员自我评价
2015/03/11 职场文书
Python可视化神器pyecharts绘制水球图
2022/07/07 Python