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 相关文章推荐
简介Django框架中可使用的各类缓存
Jul 23 Python
Python实现模拟登录及表单提交的方法
Jul 25 Python
微信 用脚本查看是否被微信好友删除
Oct 28 Python
apache部署python程序出现503错误的解决方法
Jul 24 Python
Python判断中文字符串是否相等的实例
Jul 06 Python
使用Python3+PyQT5+Pyserial 实现简单的串口工具方法
Feb 13 Python
Python Matplotlib 基于networkx画关系网络图
Jul 10 Python
Python3+PyInstall+Sciter解决报错缺少dll、html等文件问题
Jul 15 Python
Python使用Pandas库常见操作详解
Jan 16 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
Jun 11 Python
如何利用pycharm进行代码更新比较
Nov 04 Python
Python自动化测试基础必备知识点总结
Feb 07 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
Codeigniter整合Tank Auth权限类库详解
2014/06/12 PHP
Yii2中YiiBase自动加载类、引用文件方法分析(autoload)
2016/07/25 PHP
PHP 输出缓冲控制(Output Control)详解
2016/08/25 PHP
浅谈PHP定义命令空间的几个注意点(推荐)
2016/10/29 PHP
微信公众号开发之通过接口删除菜单
2017/02/20 PHP
php 从指定数字中获取随机组合的简单方法(推荐)
2017/04/05 PHP
php定期拉取数据对比方法实例
2019/09/22 PHP
用JTrackBar实现的模拟苹果风格的滚动条
2007/08/06 Javascript
JavaScript中的其他对象
2008/01/16 Javascript
根据选择不同的下拉值出现相对应的文本输入框
2013/08/01 Javascript
Javascript之this关键字深入解析
2013/11/12 Javascript
jQuery实现查找最近父节点的方法
2016/06/23 Javascript
Java中int与integer的区别(基本数据类型与引用数据类型)
2017/02/19 Javascript
JavaScript中join()、splice()、slice()和split()函数用法示例
2018/08/24 Javascript
浅探express路由和中间件的实现
2019/09/30 Javascript
javascript实现简单搜索功能
2020/03/26 Javascript
js实现文章目录索引导航(table of content)
2020/05/10 Javascript
[00:12]DAC SOLO赛卫冕冠军 VG.Paparazi灬展现SOLO技巧
2018/04/06 DOTA
Python 多线程实例详解
2017/03/25 Python
Python遍历pandas数据方法总结
2018/02/09 Python
如何利用Boost.Python实现Python C/C++混合编程详解
2018/11/08 Python
python+pyqt5编写md5生成器
2019/03/18 Python
关于tensorflow的几种参数初始化方法小结
2020/01/04 Python
基于python实现把json数据转换成Excel表格
2020/05/07 Python
解决pytorch 的state_dict()拷贝问题
2021/03/03 Python
巧用HTML5给按钮背景设计不同的动画简单实例
2016/08/09 HTML / CSS
旅游项目开发策划书
2014/01/18 职场文书
抄作业检讨书
2014/02/17 职场文书
晨会主持词
2014/03/17 职场文书
弘扬民族精神演讲稿
2014/05/07 职场文书
电工技术比武方案
2014/05/11 职场文书
社区党风廉政建设调研报告
2015/01/01 职场文书
导师对论文的学术评语
2015/01/04 职场文书
新教师教学工作总结
2015/08/12 职场文书
市直属机关2016年主题党日活动总结
2016/04/05 职场文书
浅谈怎么给Python添加类型标注
2021/06/08 Python