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 相关文章推荐
windows下安装python paramiko模块的代码
Feb 10 Python
Python标准库之随机数 (math包、random包)介绍
Nov 25 Python
操作Windows注册表的简单的Python程序制作教程
Apr 07 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
Dec 11 Python
tensorflow中next_batch的具体使用
Feb 02 Python
matplotlib给子图添加图例的方法
Aug 03 Python
python3爬虫怎样构建请求header
Dec 23 Python
解决python中导入win32com.client出错的问题
Jul 26 Python
django解决订单并发问题【推荐】
Jul 31 Python
Python爬虫之Selenium库的使用方法
Jan 03 Python
Pycharm 如何一键加引号的方法步骤
Feb 05 Python
python 如何用terminal输入参数
May 25 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无限极分类递归排序实现方法
2014/11/11 PHP
PHP超牛逼无限极分类生成树方法
2015/05/11 PHP
php编写批量生成不重复的卡号密码代码
2015/05/14 PHP
PHP的Laravel框架中使用AdminLTE模板来编写网站后台界面
2016/03/21 PHP
PHP实现微信提现功能(微信商城)
2019/11/21 PHP
php post换行的方法
2020/02/03 PHP
PHP数组Key强制类型转换实现原理解析
2020/09/01 PHP
WordPress JQuery处理沙发头像
2009/06/22 Javascript
基于Jquery的跨域传输数据(JSONP)
2011/03/10 Javascript
js截取固定长度的中英文字符的简单实例
2013/11/22 Javascript
Jquery下EasyUI组件中的DataGrid结果集清空方法
2014/01/06 Javascript
JQuery选中checkbox方法代码实例(全选、反选、全不选)
2015/04/27 Javascript
JS数字抽奖游戏实现方法
2015/05/04 Javascript
Jquery跨域获得Json的简单实例
2016/05/18 Javascript
js前端解决跨域问题的8种方案(最新最全)
2016/11/18 Javascript
原生javascript实现的全屏滚动功能示例
2017/09/19 Javascript
Vue 换肤的示例实践
2018/01/23 Javascript
在vue.js中使用JSZip实现在前端解压文件的方法
2018/09/05 Javascript
Websocket 向指定用户发消息的方法
2020/01/09 Javascript
[02:51]DOTA2英雄基础教程 艾欧
2014/01/13 DOTA
[46:44]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第二场 3月7日
2021/03/11 DOTA
Python基于socket模块实现UDP通信功能示例
2018/04/10 Python
python实现图片批量压缩程序
2018/07/23 Python
Django命名URL和反向解析URL实现解析
2019/08/09 Python
pytorch在fintune时将sequential中的层输出方法,以vgg为例
2019/08/20 Python
pycharm激活码快速激活及使用步骤
2020/03/12 Python
e路東瀛(JAPANiCAN)香港:日本旅游、日本酒店和温泉旅馆预订
2018/11/21 全球购物
英国马匹装备和马术用品购物网站:Equine Superstore
2019/03/03 全球购物
中药专业大学生医药工作求职信
2013/10/25 职场文书
幼儿园小班教师寄语
2014/04/03 职场文书
软件售后服务承诺书
2014/05/21 职场文书
2014年会计个人工作总结
2014/11/24 职场文书
初二物理教学反思
2016/02/19 职场文书
你喜欢篮球吗?Python实现篮球游戏
2021/06/11 Python
Java Spring 控制反转(IOC)容器详解
2021/10/05 Java/Android
nginx七层负载均衡配置详解
2022/07/15 Servers