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的struct模块中进行数据格式转换的方法
Jun 17 Python
python根据京东商品url获取产品价格
Aug 09 Python
Python中扩展包的安装方法详解
Jun 14 Python
Python实现获取邮箱内容并解析的方法示例
Jun 16 Python
caffe binaryproto 与 npy相互转换的实例讲解
Jul 09 Python
对python中if语句的真假判断实例详解
Feb 18 Python
Python实现定期检查源目录与备份目录的差异并进行备份功能示例
Feb 27 Python
python命令行参数用法实例分析
Jun 25 Python
使用Python实现文字转语音并生成wav文件的例子
Aug 08 Python
详解一种用django_cache实现分布式锁的方式
Sep 01 Python
Django Admin设置应用程序及模型顺序方法详解
Apr 01 Python
如何使用Python对NetCDF数据做空间相关分析
Apr 21 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
第四节 构造函数和析构函数 [4]
2006/10/09 PHP
PHP之生成GIF动画的实现方法
2013/06/07 PHP
适合PHP初学者阅读的4本经典书籍
2016/09/23 PHP
php 多个变量指向同一个引用($b = &$a)用法分析
2019/11/13 PHP
PHP设计模式之命令模式示例详解
2020/12/20 PHP
JS创建优美的页面滑动块效果 - Glider.js
2007/09/27 Javascript
Array.prototype 的泛型应用分析
2010/04/30 Javascript
如何使用Jquery获取Form表单中被选中的radio值
2013/08/09 Javascript
JS实现Enter键跳转及控件获得焦点
2013/08/12 Javascript
js中关于一个分号的崩溃示例
2013/11/11 Javascript
常用的jquery模板插件——jQuery Boilerplate介绍
2014/09/23 Javascript
分享经典的JavaScript开发技巧
2015/11/21 Javascript
基于JavaScript实现文字超出部分隐藏
2016/02/29 Javascript
Vue实现动态响应数据变化
2017/04/28 Javascript
vue父组件向子组件(props)传递数据的方法
2018/01/02 Javascript
Nodejs 和 Electron ubuntu下快速安装过程
2018/05/04 NodeJs
JS 正则表达式验证密码、邮箱格式的实例代码
2018/10/28 Javascript
JS使用百度地图API自动获取地址和经纬度操作示例
2019/04/16 Javascript
jquery实现动态改变css样式的方法分析
2019/05/27 jQuery
关于layui 弹出层一闪而过就消失的解决方法
2019/09/09 Javascript
vue项目里面引用svg文件并给svg里面的元素赋值
2020/08/17 Javascript
利用Python实现图书超期提醒
2016/08/02 Python
Python递归实现汉诺塔算法示例
2018/03/19 Python
python调用OpenCV实现人脸识别功能
2018/05/25 Python
通过cmd进入python的实例操作
2019/06/26 Python
Django框架orM与自定义SQL语句混合事务控制操作
2019/06/27 Python
python 三元运算符使用解析
2019/09/16 Python
Django配置文件代码说明
2019/12/04 Python
在 Python 中使用 7zip 备份文件的操作
2020/12/11 Python
python中类与对象之间的关系详解
2020/12/16 Python
Puma印度官网:德国运动品牌
2019/10/06 全球购物
Douglas意大利官网:购买香水和化妆品
2020/05/27 全球购物
社区优秀志愿者材料
2014/02/02 职场文书
超市仓管员岗位职责范本
2014/09/18 职场文书
银行工作心得体会范文
2016/01/23 职场文书
Python获取指定日期是"星期几"的6种方法
2022/03/13 Python