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中使用sort()方法进行排序的简单教程
May 21 Python
Python中进程和线程的区别详解
Oct 29 Python
Python实现判断字符串中包含某个字符的判断函数示例
Jan 08 Python
详解TensorFlow在windows上安装与简单示例
Mar 05 Python
使用Python写一个小游戏
Apr 02 Python
使用PM2+nginx部署python项目的方法示例
Nov 07 Python
python通过SSH登陆linux并操作的实现
Oct 10 Python
Python Django2.0集成Celery4.1教程
Nov 19 Python
基于python调用psutil模块过程解析
Dec 20 Python
在keras中对单一输入图像进行预测并返回预测结果操作
Jul 09 Python
PyCharm最新激活码PyCharm2020.2.3有效
Nov 18 Python
用python实现一个简单的验证码
Dec 09 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
简单解决新浪SAE无法上传文件的问题
2015/05/13 PHP
laravel 自定义常量的两种方案
2019/10/14 PHP
Thinkphp框架+Layui实现图片/文件上传功能分析
2020/02/07 PHP
JS 密码强度验证(兼容IE,火狐,谷歌)
2010/03/15 Javascript
初识JQuery 实例一(first)
2011/03/16 Javascript
基于JQuery 的消息提示框效果代码
2011/07/31 Javascript
修复ie8&chrome下window的resize事件多次执行
2011/10/20 Javascript
分享XmlHttpRequest调用Webservice的一点心得
2012/07/20 Javascript
JS动态调用方法名示例介绍
2013/12/18 Javascript
js图片翻书效果代码分享
2015/08/20 Javascript
javascript中判断json的方法总结
2015/08/27 Javascript
分享一个插件实现水珠自动下落效果
2016/06/01 Javascript
JavaScript新增样式规则(推荐)
2016/07/19 Javascript
工作中比较实用的JavaScript验证和数据处理的干货(经典)
2016/08/03 Javascript
javascript闭包功能与用法实例分析
2017/04/06 Javascript
ES6学习之变量的两种命名方法示例
2017/07/18 Javascript
Vue.js弹出模态框组件开发的示例代码
2017/07/26 Javascript
原生JS+CSS实现炫酷重力模拟弹跳系统的登录页面
2017/11/01 Javascript
javascript连接mysql与php通过odbc连接任意数据库的实例
2017/12/27 Javascript
vue项目中jsonp跨域获取qq音乐首页推荐问题
2018/05/30 Javascript
VUE-Table上绑定Input通过render实现双向绑定数据的示例
2018/08/27 Javascript
详解vue项目中调用百度地图API使用方法
2019/04/25 Javascript
Vue 开发必须知道的36个技巧(小结)
2019/10/09 Javascript
Python Socket编程入门教程
2014/07/11 Python
python实现中文输出的两种方法
2015/05/09 Python
django请求返回不同的类型图片json,xml,html的实例
2018/05/22 Python
Python2 与Python3的版本区别实例分析
2020/03/30 Python
基于python+selenium自动健康打卡的实现代码
2021/01/13 Python
学生学习总结的自我评价
2013/10/22 职场文书
正规的求职信范文分享
2013/12/11 职场文书
小学作文评语大全
2014/04/21 职场文书
普通党员群众路线教育实践活动心得体会
2014/11/04 职场文书
会计求职自荐信范文
2015/03/04 职场文书
2015年八一建军节活动总结
2015/03/20 职场文书
机械生产实习心得体会
2016/01/22 职场文书
HTML5中 rem适配方案与 viewport 适配问题详解
2021/04/27 HTML / CSS