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简单格式化时间的方法【strftime函数】
Sep 18 Python
pandas 数据归一化以及行删除例程的方法
Nov 10 Python
详解Python:面向对象编程
Apr 10 Python
OpenCV 边缘检测
Jul 10 Python
Python 操作 ElasticSearch的完整代码
Aug 04 Python
Django中create和save方法的不同
Aug 13 Python
Golang GBK转UTF-8的例子
Aug 26 Python
python循环输出三角形图案的例子
Nov 22 Python
Python底层封装实现方法详解
Jan 22 Python
python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
Mar 08 Python
pandas处理csv文件的方法步骤
Oct 16 Python
python利用pytesseract 实现本地识别图片文字
Dec 14 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用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID
2016/11/25 PHP
使用Laravel中的查询构造器实现增删改查功能
2019/09/03 PHP
Javascript学习笔记1 数据类型
2010/01/11 Javascript
AppBaseJs 类库 网上常用的javascript函数及其他js类库写的
2010/03/04 Javascript
jquery 选择器引擎sizzle浅析
2013/02/06 Javascript
实现51Map地图接口(示例代码)
2013/11/22 Javascript
微信小程序 request接口的封装实例代码
2017/04/26 Javascript
使用JavaScript实现alert的实例代码
2017/07/06 Javascript
react学习笔记之state以及setState的使用
2017/12/07 Javascript
vue动态设置img的src路径实例
2018/09/18 Javascript
Electron autoUpdater实现Windows安装包自动更新的方法
2018/12/24 Javascript
vue vantUI实现文件(图片、文档、视频、音频)上传(多文件)
2019/10/15 Javascript
js get和post请求实现代码解析
2020/02/06 Javascript
vue数据响应式原理知识点总结
2020/02/16 Javascript
vuex存取值和映射函数使用说明
2020/07/24 Javascript
js实现验证码干扰(静态)
2021/02/22 Javascript
Python中字典(dict)和列表(list)的排序方法实例
2014/06/16 Python
Python 处理数据的实例详解
2017/08/10 Python
Python对List中的元素排序的方法
2018/04/01 Python
Python使用progressbar模块实现的显示进度条功能
2018/05/31 Python
django利用request id便于定位及给日志加上request_id
2018/08/26 Python
python中类的属性和方法介绍
2018/11/27 Python
Python 调用 Windows API COM 新法
2019/08/22 Python
django xadmin 管理器常用显示设置方式
2020/03/11 Python
Django Serializer HiddenField隐藏字段实例
2020/03/31 Python
使用Python对Dicom文件进行读取与写入的实现
2020/04/20 Python
canvas实现图片镜像翻转的2种方式
2020/07/22 HTML / CSS
为世界各地的女性设计和生产时尚服装:ROMWE
2016/09/17 全球购物
Columbia美国官网:美国著名的户外服装品牌
2016/11/24 全球购物
应届毕业生个人求职自荐信
2014/01/06 职场文书
高中校园广播稿
2014/01/11 职场文书
小学教师培训感言
2014/02/11 职场文书
12月红领巾广播稿
2014/02/13 职场文书
8和9的加减法教学反思
2014/05/01 职场文书
iPhone13再次曝光
2021/04/15 数码科技
python四个坐标点对图片区域最小外接矩形进行裁剪
2021/06/04 Python