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中os和shutil模块实用方法集锦
May 13 Python
Python使用剪切板的方法
Jun 06 Python
用Python删除本地目录下某一时间点之前创建的所有文件的实例
Dec 14 Python
浅谈pandas中shift和diff函数关系
Apr 08 Python
python pandas库的安装和创建
Jan 10 Python
谈一谈基于python的面向对象编程基础
May 21 Python
Pycharm 2019 破解激活方法图文详解
Oct 11 Python
简单了解python字符串前面加r,u的含义
Dec 26 Python
解决python和pycharm安装gmpy2 出现ERROR的问题
Aug 28 Python
python如何实现DES加密
Sep 21 Python
python自动生成sql语句的脚本
Feb 24 Python
Python中常见的导入方式总结
May 06 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
PHP5新特性: 更加面向对象化的PHP
2006/11/18 PHP
改变Apache端口等配置修改方法
2008/06/05 PHP
PHP5下$_SERVER变量不再受magic_quotes_gpc保护的弥补方法
2012/10/31 PHP
php递归删除指定文件夹的方法小结
2015/04/20 PHP
php实现仿写CodeIgniter的购物车类
2015/07/29 PHP
php+ajax实现无刷新分页
2015/11/18 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
实例讲解PHP表单验证功能
2019/02/15 PHP
JavaScript 验证浏览器是否支持javascript的方法小结
2009/05/17 Javascript
javascript prototype原型操作笔记
2009/12/07 Javascript
js 字符串转化成数字的代码
2011/06/29 Javascript
关于hashchangebroker和statehashable的补充文档
2011/08/08 Javascript
formStorage 基于jquery的一个插件(存储表单中元素的状态到本地)
2012/01/20 Javascript
jquery预加载图片的方法
2015/05/27 Javascript
JavaScript笔记之数据属性和存储器属性
2016/03/31 Javascript
jQuery实现的纵向下拉菜单实例详解【附demo源码下载】
2016/07/09 Javascript
AngularJS入门教程之更多模板详解
2016/08/19 Javascript
基于JavaScript实现鼠标箭头移动图片跟着移动
2016/08/30 Javascript
Angular的MVC和作用域
2016/12/26 Javascript
微信小程序 picker 组件详解及简单实例
2017/01/10 Javascript
使用微信内嵌H5网页解决JS倒计时失效问题
2017/01/13 Javascript
利用jquery如何从json中读取数据追加到html中
2017/12/01 jQuery
json前后端数据交互相关代码
2018/09/19 Javascript
angular学习之动态创建表单的方法
2018/12/07 Javascript
javaScript把其它类型转换为Number类型
2019/10/13 Javascript
Node.js利用Express实现用户注册登陆功能(推荐)
2020/10/26 Javascript
[02:19]DOTA选手解说齐贺岁
2018/02/11 DOTA
[01:05:41]EG vs Optic Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
python编程实现12306的一个小爬虫实例
2017/12/27 Python
使用Python实现在Windows下安装Django
2018/10/17 Python
如何利用Pyecharts可视化微信好友
2019/07/04 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
2020/03/19 Python
css3中的calc函数浅析
2018/07/10 HTML / CSS
2014收银员工作总结范文
2014/12/16 职场文书
高中军训感想
2015/08/07 职场文书
放假通知怎么写
2015/08/18 职场文书