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 03 Python
Python复数属性和方法运算操作示例
Jul 21 Python
Python使用ctypes调用C/C++的方法
Jan 29 Python
Python3使用TCP编写一个简易的文件下载器功能
May 08 Python
python itchat给指定联系人发消息的方法
Jun 11 Python
详解pandas使用drop_duplicates去除DataFrame重复项参数
Aug 01 Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
Dec 18 Python
python3中的logging记录日志实现过程及封装成类的操作
May 12 Python
Python实现发票自动校核微信机器人的方法
May 22 Python
Selenium及python实现滚动操作多种方法
Jul 21 Python
django学习之ajax post传参的2种格式实例
May 14 Python
TensorFlow的自动求导原理分析
May 26 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
Extended CHM PHP 语法手册之 DIY
2006/10/09 PHP
在任意字符集下正常显示网页的方法一
2007/04/01 PHP
PHP获取当前url的具体方法全面解析
2013/11/26 PHP
php格式化日期实例分析
2014/11/12 PHP
php 数组元素快速去重
2017/05/05 PHP
详解PHP使用Redis存储session时的一个Warning定位
2017/07/05 PHP
PHP自定义序列化接口Serializable用法分析
2017/12/29 PHP
PHP实现可精确验证身份证号码的工具类示例
2018/05/31 PHP
PHP连续签到功能实现方法详解
2019/12/04 PHP
Nigma vs Alliance BO5 第二场2.14
2021/03/10 DOTA
Nodejs爬虫进阶教程之异步并发控制
2016/02/15 NodeJs
js获取对象、数组的实际长度,元素实际个数的实现代码
2016/06/08 Javascript
JS获得一个对象的所有属性和方法实例
2017/02/21 Javascript
CodeMirror js代码加亮使用总结
2017/03/25 Javascript
解决VUE框架 导致绑定事件的阻止冒泡失效问题
2018/02/24 Javascript
Bootstrap Paginator+PageHelper实现分页效果
2018/12/29 Javascript
基于vue框架手写一个notify插件实现通知功能的方法
2019/03/31 Javascript
JavaScript中this的全面解析及常见实例
2019/05/14 Javascript
微信小程序之几种常见的弹框提示信息实现详解
2019/07/11 Javascript
微信小程序实现多选框全选与反全选及购物车中删除选中的商品功能
2019/12/17 Javascript
jQuery操作动画完整实例分析
2020/01/10 jQuery
基于js实现数组相邻元素上移下移
2020/05/19 Javascript
Vue+scss白天和夜间模式切换功能的实现方法
2021/01/05 Vue.js
python二分查找算法的递归实现方法
2016/05/12 Python
通过python的matplotlib包将Tensorflow数据进行可视化的方法
2019/01/09 Python
python控制台实现tab补全和清屏的例子
2019/08/20 Python
tensorflow 重置/清除计算图的实现
2020/01/19 Python
多个python文件调用logging模块报错误
2020/02/12 Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
2020/12/03 Python
英国足球店:UK Soccer Shop
2017/11/19 全球购物
Java软件工程师综合面试题笔试题
2013/09/08 面试题
行政人事专员岗位职责
2014/03/05 职场文书
某某同志考察材料
2014/05/28 职场文书
网站推广策划方案
2014/06/04 职场文书
委托函范文
2015/01/29 职场文书
SQL Server中常用截取字符串函数介绍
2022/03/16 SQL Server