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 ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
Jun 10 Python
python实现从字符串中找出字符1的位置以及个数的方法
Aug 25 Python
Python的Django框架可适配的各种数据库介绍
Jul 15 Python
python控制台中实现进度条功能
Nov 10 Python
python文件操作相关知识点总结整理
Feb 22 Python
python统计中文字符数量的两种方法
Jan 31 Python
Python eval的常见错误封装及利用原理详解
Mar 26 Python
使用 Python 处理 JSON 格式的数据
Jul 22 Python
Python操作qml对象过程详解
Sep 26 Python
wxPython:python首选的GUI库实例分享
Oct 05 Python
QML用PathView实现轮播图
Jun 03 Python
浅谈cv2.imread()和keras.preprocessing中的image.load_img()区别
Jun 12 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
重置版游戏视频
2020/04/09 魔兽争霸
ucenter通信原理分析
2015/01/09 PHP
最准确的php截取字符串长度函数
2015/10/29 PHP
PHP 在数组中搜索给定的简单实例 array_search 函数
2016/06/13 PHP
php实现留言板功能
2017/03/05 PHP
详解PHP防止直接访问.php 文件的实现方法
2017/07/28 PHP
PHP调用微博接口实现微博登录的方法示例
2018/09/22 PHP
Thinkphp自定义生成缩略图尺寸的方法
2019/08/05 PHP
js判断变量是否空值的代码
2008/10/26 Javascript
js 学习笔记(三)
2009/12/29 Javascript
ExpressJS入门实例
2015/01/14 Javascript
AngularJS实现动态编译添加到dom中的方法
2016/11/04 Javascript
vue.js添加一些触摸事件以及安装fastclick的实例
2018/08/28 Javascript
解决ant design vue 表格a-table二次封装,slots渲染的问题
2020/10/28 Javascript
Vue 组件注册全解析
2020/12/17 Vue.js
Django中对通过测试的用户进行限制访问的方法
2015/07/23 Python
Python内建数据结构详解
2016/02/03 Python
Python多线程爬虫实战_爬取糗事百科段子的实例
2017/12/15 Python
Python安装图文教程 Pycharm安装教程
2018/03/27 Python
Python类中self参数用法详解
2020/02/13 Python
解决 jupyter notebook 回车换两行问题
2020/04/15 Python
python3.5的包存放的具体路径
2020/08/16 Python
HTML5 解决苹果手机不能自动播放音乐问题
2017/12/27 HTML / CSS
微信html5页面调用第三方位置导航的示例
2018/03/14 HTML / CSS
Lookfantastic意大利官网:英国知名美妆购物网站
2019/05/31 全球购物
美国领先的眼镜和太阳镜在线零售商:Glasses.com
2019/08/26 全球购物
法国购买隐形眼镜和眼镜网站:Optical Center
2019/10/08 全球购物
庆国庆国旗下讲话稿2014
2014/09/21 职场文书
海南召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
统计员岗位职责范本
2015/04/14 职场文书
爱国主义教育基地观后感
2015/06/18 职场文书
Java实现多线程聊天室
2021/06/26 Java/Android
深入理解go缓存库freecache的使用
2022/02/15 Golang
Win11电脑显示本地时间与服务器时间不一致怎么解决?
2022/04/05 数码科技
Spring Cloud OpenFeign模版化客户端
2022/06/25 Java/Android
VW、VH适配移动端的解决方案与常见问题
2023/05/21 HTML / CSS