arcgis批量出图python代码_python使用arcpy.mapping模块批量出图
出图是项目里常见的任务,有的项目甚至会要上百张图片,所以批量出土工具很有必要。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使用arcpy.mapping模块批量出图
本文地址: http://www.cppcns.com/jiaoben/python/181234.html
arcgis批量出图python代码_python使用arcpy.mapping模块批量出图相关推荐
- 心形图Python代码详细解析
心形图Python代码详细解析 源代码 print('\n'.join([''.join([('pikachu'[(x-y)%7]\if((x*0.05)**2+(y*0.1)**2-1)**3-(x ...
- ArcGIS利用数据驱动工具条批量出图(python代码)
一.设置数据驱动 参考文章: ArcGIS高级制图及批量出图使用数据驱动 二.在工作空间自动生成图片 1.PDF批量出图 参考阅读:ArcGIS批量出图操作流程(附练习数据下载) 目前在ArcGIS1 ...
- 写出漂亮 Python 代码的 20条准则
点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 来自 | 架构头条 按照<代码整洁之道>的说法,"花在阅读和编码 ...
- python代码怎么写出色_如何写出更具有Python风格的代码,五分钟教会你!
我们都喜欢 Python,因为它让编程和理解变的更为简单.但是一不小心,我们就会忽略规则,以非 Pythonic 方式编写一堆垃圾代码,从而浪费 Python 这个出色的语言赋予我们的优雅.Pytho ...
- 如何运行一段python代码_Python退出时强制运行一段代码如何实现 Python退出时强制运行一段代码实现方法...
本篇文章小编给大家分享一下Python退出时强制运行一段代码实现方法,代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 设想这样一个场景,你要给一个项目开发测 ...
- 读懂python代码_Python面试|一文让你读懂if __name__==’__main__’的含义
程序入口 对于很多编程语言来说,程序都必须要有一个入口,比如 C,C++,以及完全面向对象的编程语言 Java,C# 等.如果你接触过这些语言,对于程序入口这个概念应该很好理解,C 和 C++ 都需要 ...
- postman生成python代码_python代码直接生成可执行exe文件
前言: python中有一个很厉害的库可以直接将写好的python代码打包成可执行的.exe文件,生成好的文件不需要python运行环境和pycharm等IDE就可以直接双击运行,是不是很厉害呢!这样 ...
- ArcGIS基础:基于python代码简单计算坡度、坡向和洪水淹没
第一个:[计算坡度] 读取原始栅格影像: rast_file=r'F:\arcpy_data\imagery\钦州湾.tif' ... rast_obj=arcpy.Raster(rast_file) ...
- 层次聚类python代码_python实现层次聚类
BAFIMINARMTO BA0662877255412996 FI6620295468268400 MI8772950754564138 NA2554687540219869 RM412268564 ...
最新文章
- Effective C++ item01 尽量以const enum inline替换#define
- 请问有办法加速TTS的反应时间吗
- 又一无人车玩家驶出深圳:元戎启行获近5000万美元融资,军运会提供Robo-Taxi接驳服务...
- winsetup制作linux启动盘,winsetupfromusb怎样做linux启动盘
- MySQL之深入解析自增主键为何不连续
- day36 fullstack gevent模块 IO阻塞和非阻塞 IO多路复用 异步IO介绍 其他的补充
- 监听文本框数据修改,特别是微信等客户端直接选择粘贴修改
- python格式化输出区别_python格式化输出的区别
- MicroBlaze软核介绍
- 工作失误:没有分析进程消耗了这么多内存的原因
- 【C语言自学】第三章流程控制
- mfc100u.dll丢失的解决方法
- iPad浏览器HTML5性能测试
- C语言程序设计编程题(六)15
- Orange pi GPIO输出控制,裸机点灯大法(二)!
- 微信小程序获取用户昵称和头像
- python的与 或 异或 运算
- mysql的char和varchar_MySQL中CHAR和VARCHAR的区别及应用场景
- anaconda的令牌是啥_Anaconda是什么?香吗?
- ipad2018电池测试软件,2018款iPad Pro内部做工值得买吗?iPad Pro 2018详细拆机图解评测...
热门文章
- 使用异或运算交换两个任意类型变量
- java的关于流程结构做的几个案例
- 周鸿祎VS马化腾 360VS腾讯工资待遇盘点
- POJ 2255/递归:前序中序求后序
- post发送byte数组_KAFKA消息发送
- linux 查看网卡是否万兆_linux 如何查看网卡带宽
- 斐波那契数java实现_斐波那契数列Java实现[剑指offer]
- linux语言 翻译工具,Linux文本转语音工具eSpeak介绍
- vlc 缓冲大小 设置_用libvlc 播放指定缓冲区中的视频流
- 时间组件选择一个时间段_衡南(光伏支架组件安装)施工队