出图是项目里常见的任务,有的项目甚至会要上百张图片,所以批量出土工具很有必要。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. Effective C++ item01 尽量以const enum inline替换#define
  2. 请问有办法加速TTS的反应时间吗
  3. 又一无人车玩家驶出深圳:元戎启行获近5000万美元融资,军运会提供Robo-Taxi接驳服务...
  4. winsetup制作linux启动盘,winsetupfromusb怎样做linux启动盘
  5. MySQL之深入解析自增主键为何不连续
  6. day36 fullstack gevent模块 IO阻塞和非阻塞 IO多路复用 异步IO介绍 其他的补充
  7. 监听文本框数据修改,特别是微信等客户端直接选择粘贴修改
  8. python格式化输出区别_python格式化输出的区别
  9. MicroBlaze软核介绍
  10. 工作失误:没有分析进程消耗了这么多内存的原因
  11. 【C语言自学】第三章流程控制
  12. mfc100u.dll丢失的解决方法
  13. iPad浏览器HTML5性能测试
  14. C语言程序设计编程题(六)15
  15. Orange pi GPIO输出控制,裸机点灯大法(二)!
  16. 微信小程序获取用户昵称和头像
  17. python的与 或 异或 运算
  18. mysql的char和varchar_MySQL中CHAR和VARCHAR的区别及应用场景
  19. anaconda的令牌是啥_Anaconda是什么?香吗?
  20. ipad2018电池测试软件,2018款iPad Pro内部做工值得买吗?iPad Pro 2018详细拆机图解评测...

热门文章

  1. 使用异或运算交换两个任意类型变量
  2. java的关于流程结构做的几个案例
  3. 周鸿祎VS马化腾 360VS腾讯工资待遇盘点
  4. POJ 2255/递归:前序中序求后序
  5. post发送byte数组_KAFKA消息发送
  6. linux 查看网卡是否万兆_linux 如何查看网卡带宽
  7. 斐波那契数java实现_斐波那契数列Java实现[剑指offer]
  8. linux语言 翻译工具,Linux文本转语音工具eSpeak介绍
  9. vlc 缓冲大小 设置_用libvlc 播放指定缓冲区中的视频流
  10. 时间组件选择一个时间段_衡南(光伏支架组件安装)施工队