出图是项目里常见的任务,有的项目甚至会要上百张图片,所以批量出土工具很有必要。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模块批量出图相关推荐

  1. 心形图Python代码详细解析

    心形图Python代码详细解析 源代码 print('\n'.join([''.join([('pikachu'[(x-y)%7]\if((x*0.05)**2+(y*0.1)**2-1)**3-(x ...

  2. ArcGIS利用数据驱动工具条批量出图(python代码)

    一.设置数据驱动 参考文章: ArcGIS高级制图及批量出图使用数据驱动 二.在工作空间自动生成图片 1.PDF批量出图 参考阅读:ArcGIS批量出图操作流程(附练习数据下载) 目前在ArcGIS1 ...

  3. 写出漂亮 Python 代码的 20条准则

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 来自 | 架构头条 按照<代码整洁之道>的说法,"花在阅读和编码 ...

  4. python代码怎么写出色_如何写出更具有Python风格的代码,五分钟教会你!

    我们都喜欢 Python,因为它让编程和理解变的更为简单.但是一不小心,我们就会忽略规则,以非 Pythonic 方式编写一堆垃圾代码,从而浪费 Python 这个出色的语言赋予我们的优雅.Pytho ...

  5. 如何运行一段python代码_Python退出时强制运行一段代码如何实现 Python退出时强制运行一段代码实现方法...

    本篇文章小编给大家分享一下Python退出时强制运行一段代码实现方法,代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 设想这样一个场景,你要给一个项目开发测 ...

  6. 读懂python代码_Python面试|一文让你读懂if __name__==’__main__’的含义

    程序入口 对于很多编程语言来说,程序都必须要有一个入口,比如 C,C++,以及完全面向对象的编程语言 Java,C# 等.如果你接触过这些语言,对于程序入口这个概念应该很好理解,C 和 C++ 都需要 ...

  7. postman生成python代码_python代码直接生成可执行exe文件

    前言: python中有一个很厉害的库可以直接将写好的python代码打包成可执行的.exe文件,生成好的文件不需要python运行环境和pycharm等IDE就可以直接双击运行,是不是很厉害呢!这样 ...

  8. ArcGIS基础:基于python代码简单计算坡度、坡向和洪水淹没

    第一个:[计算坡度] 读取原始栅格影像: rast_file=r'F:\arcpy_data\imagery\钦州湾.tif' ... rast_obj=arcpy.Raster(rast_file) ...

  9. 层次聚类python代码_python实现层次聚类

    BAFIMINARMTO BA0662877255412996 FI6620295468268400 MI8772950754564138 NA2554687540219869 RM412268564 ...

最新文章

  1. 2019年1月份A项目面试纪要
  2. mongodb部署以及数据操作
  3. axure 图片切换图片的交互_AxureRP8中实现伸缩式的图片展示交互效果
  4. Classpath entry org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER will not be exported or published. Runtim
  5. 如何卸载bytefence anti-malware
  6. python编程快速上手第四章_《Python编程快速上手——让繁琐的工作自动化》读书笔记 第四章 列表...
  7. Spring Boot使用自定义的properties
  8. 关系图︱python 关系网络的可视化NetworkX(与Apple.Turicreate深度契合)
  9. 王庆的边缘计算(第三章)
  10. 如何发布一个BT种子文件
  11. JUCE框架教程(2)—— 创建一个基本的音频/MIDI 插件第一部分:设置
  12. goland等IDE连接远程服务器
  13. QQ微信实现连续发送消息【代码实现】
  14. 怎样通过一根网线,一台电脑,做到月入过万。
  15. 成都月嫂提醒你,宝宝的疫苗接种时间
  16. 暑假实训-3_Oracle数据库-3_单行函数
  17. Java池化技术你了解多少?
  18. 阿里工程师修养之:如何量化考核技术人的 KPI ?
  19. USBasp制作资料及全过程(菜鸟版)
  20. 以太坊导以太坊导_以太坊网络钓鱼诈骗在Facebook上的剖析

热门文章

  1. SQL Server中行列转换 Pivot UnPivot (转载)
  2. Lucene正则表达式查询RegenxQuery
  3. 牛客14392 猴子吃香蕉
  4. windows安装pygame(python3.6)_当我试图安装PyGameforPython3.6时,Pip不起作用[过时]
  5. is在python中是什么意思_Python 中 is 与 == 有啥区别?
  6. mysql多表添加怎么写_mysql多表连接的几种写法
  7. python3异常_python3 异常处理
  8. keras安装_代码详解:构建一个简单的Keras+深度学习REST API
  9. C语言ODBC连接MySQL数据库制作简易用户登录系统
  10. 图像处理中的通信原理——冈萨雷斯读书笔记(二)