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简单的函数定义和用法实例
May 07 Python
Windows下安装python MySQLdb遇到的问题及解决方法
Mar 16 Python
Python元组操作实例分析【创建、赋值、更新、删除等】
Jul 24 Python
Python 闭包的使用方法
Sep 07 Python
在python中pandas读文件,有中文字符的方法
Dec 12 Python
python设计微型小说网站(基于Django+Bootstrap框架)
Jul 08 Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
Aug 20 Python
Django实现网页分页功能
Oct 31 Python
python实现串口通信的示例代码
Feb 10 Python
python 写函数在一定条件下需要调用自身时的写法说明
Jun 01 Python
利用Python实现Json序列化库的方法步骤
Sep 09 Python
python文件路径操作方法总结
Dec 21 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带密码功能并下载远程文件保存本地指定目录 修改加强版
2010/05/16 PHP
php获取根域名方法汇总
2014/10/28 PHP
PHP中list方法用法示例
2016/12/01 PHP
php获取给定日期相差天数的方法分析
2017/02/20 PHP
微信公众平台开发教程⑤ 微信扫码支付模式介绍
2019/04/10 PHP
javascript 简单高效判断数据类型 系列函数 By shawl.qiu
2007/03/06 Javascript
JQuery入门——用bind方法绑定事件处理函数应用介绍
2013/02/05 Javascript
javascript去除字符串中所有标点符号和提取纯文本的正则
2014/06/07 Javascript
js事件监听器用法实例详解
2015/06/01 Javascript
JS实现仿QQ面板的手风琴效果折叠菜单代码
2015/09/11 Javascript
一款简单的jQuery图片标注效果附源码下载
2016/03/22 Javascript
JS制作图形验证码实现代码
2020/10/19 Javascript
jQuery实现的小图列表,大图展示效果幻灯片示例
2016/10/25 Javascript
webpack常用配置项配置文件介绍
2016/11/07 Javascript
JavaScript html5 canvas实现图片上画超链接
2017/10/20 Javascript
NodeJS父进程与子进程资源共享原理与实现方法
2018/03/16 NodeJs
浅析JS中回调函数及用法
2018/07/25 Javascript
基于Vue实现图片在指定区域内移动的思路详解
2018/11/11 Javascript
使用jquery模拟a标签的click事件无法实现跳转的解决
2018/12/04 jQuery
JavaScript this绑定过程深入详解
2018/12/07 Javascript
详解webpack-dev-middleware 源码解读
2020/03/23 Javascript
Python程序设计入门(5)类的使用简介
2014/06/16 Python
简单介绍Python中的floor()方法
2015/05/15 Python
Python实现中文数字转换为阿拉伯数字的方法示例
2017/05/26 Python
Python中函数参数调用方式分析
2018/08/09 Python
python:接口间数据传递与调用方法
2018/12/17 Python
详解Python3除法之真除法、截断除法和下取整对比
2019/05/23 Python
Django 项目重命名的实现步骤解析
2019/08/14 Python
Python爬虫实战案例之爬取喜马拉雅音频数据详解
2020/12/07 Python
HTML5 在canvas中绘制矩形附效果图
2014/06/23 HTML / CSS
普师专业个人自荐信范文
2013/11/26 职场文书
2014年禁毒工作总结
2014/11/24 职场文书
冰雪公主观后感
2015/06/16 职场文书
七年级作文(600字3篇)
2019/09/24 职场文书
Android开发实现极为简单的QQ登录页面
2022/04/24 Java/Android
python数字图像处理之图像的批量处理
2022/06/28 Python