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 相关文章推荐
详谈Python2.6和Python3.0中对除法操作的异同
Apr 28 Python
Anaconda 离线安装 python 包的操作方法
Jun 11 Python
Python实现string字符串连接的方法总结【8种方式】
Jul 06 Python
程序员写Python时的5个坏习惯,你有几条?
Nov 26 Python
Python中的Socket 与 ScoketServer 通信及遇到问题解决方法
Apr 01 Python
python仿抖音表白神器
Apr 08 Python
用python写测试数据文件过程解析
Sep 25 Python
Python三元运算与lambda表达式实例解析
Nov 30 Python
使用Python实现音频双通道分离
Dec 25 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
Jan 29 Python
如何利用opencv判断两张图片是否相同详解
Jul 07 Python
Python实现批量自动整理文件
Mar 16 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取整函数:ceil,floor,round,intval的区别详细解析
2013/08/31 PHP
php遍历目录输出目录及其下的所有文件示例
2014/01/27 PHP
php与flash as3 socket通信传送文件实现代码
2014/08/16 PHP
php 获取文件行数的方法总结
2016/10/11 PHP
使用javascript访问XML数据的实例
2006/12/27 Javascript
jquery.cvtooltip.js 基于jquery的气泡提示插件
2010/11/19 Javascript
游览器中javascript的执行过程(图文)
2012/05/20 Javascript
ie8 不支持new Date(2012-11-10)问题的解决方法
2013/07/31 Javascript
JS实现div居中示例
2014/04/17 Javascript
详解JavaScript中void语句的使用
2015/06/04 Javascript
详解JavaScript的Date对象(制作简易钟表)
2020/04/07 Javascript
js HTML5手机刮刮乐代码
2020/09/29 Javascript
jQuery实现用户输入自动完成功能
2017/02/13 Javascript
基于Vue的商品主图放大镜方案详解
2019/09/19 Javascript
[01:52]深扒TI7聊天轮盘语音出处7
2017/05/11 DOTA
Python3实现从指定路径查找文件的方法
2015/05/22 Python
python实现的文件同步服务器实例
2015/06/02 Python
Python 类的继承实例详解
2017/03/25 Python
TensorFlow深度学习之卷积神经网络CNN
2018/03/09 Python
python让列表倒序输出的实例
2018/06/25 Python
解决python xx.py文件点击完之后一闪而过的问题
2019/06/24 Python
python实现网站微信登录的示例代码
2019/09/18 Python
Pytho爬虫中Requests设置请求头Headers的方法
2020/09/22 Python
css3实现元素环绕中心点布局的方法示例
2019/01/15 HTML / CSS
卡西欧G-SHOCK英国官网: 防水防震手表
2018/01/08 全球购物
蔻驰英国官网:COACH英国
2020/07/19 全球购物
Clos19英国:高档香槟、葡萄酒和烈酒在线购物平台
2020/07/10 全球购物
C/C++程序员常见面试题二
2015/11/19 面试题
SQL Server的固定数据库角色都有哪些?对应的服务器权限有哪些?
2013/05/18 面试题
介绍一下UNIX启动过程
2013/11/14 面试题
超市促销活动总结
2014/07/01 职场文书
面试感谢信范文
2015/01/22 职场文书
《画家和牧童》教学反思
2016/02/17 职场文书
Nginx 过滤静态资源文件的访问日志的实现
2021/03/31 Servers
MySQL 时间类型的选择
2021/06/05 MySQL
苹果M1芯片安装nginx 并且部署vue项目步骤详解
2021/11/20 Servers