前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ArcPY系列之二(制图)

ArcPY系列之二(制图)

作者头像
数据处理与分析
发布2019-08-23 11:09:40
1.5K0
发布2019-08-23 11:09:40
举报

ArcGIS的制图模块,如果能结合Python进行合理使用,能节省很多操作成本。本次推送将结合上次的游标,来一个制图方面(批量出图)的分享!

数据介绍

这次的数据比较简单,随手找了硬盘上的一点样例数据,如下图所示:

布局设置

我只加了一个test作为标题。

在实际工作中,可以添加类似比例尺/指北针/图例等对象。也可以对地图中的要素设置各种效果,或者结合具体的应用场景在图中添加各种信息。比如:可以用村庄点与影像制作一个mxd(地图文档),通过对村庄点进行循环,可以批量导出图片。这个图片,又可以结合以往的推送docxtpl,将生成的图片插入到word表格中……

想要达到的效果

依次缩放到每个要素,按照设置的布局视图进行批量出图操作。

用到的代码:

源码

为了方便各位练习,贴上源码

import arcpy
from arcpy import env,da,mapping

#设置工作空间
env.workspace = r'D:\geoData\shps'
#输入图层
infe = 'test_mp'
shp  = 'test_mp.shp'
#设置arcmap文档
_mxd = r'D:\geoData\shps\test.mxd'
#设置值所在字段
field = 'OBJECTID'
#设置图片输出路径
opath = r'D:\geoData\shps\pic'

#定义出图函数
def func(shp,infeature,smxd,ifield,op):
    #游标打开要素图层,仅取出需要的字段
    with da.SearchCursor(shp,ifield) as se_cursor:
        for se_row in se_cursor:
            try:
                mxd = mapping.MapDocument(smxd)
                df = mapping.ListDataFrames(mxd)[0]
                lyr = mapping.ListLayers(mxd,infeature,df)[0]
                fvalue = se_row[0]
                arcpy.SelectLayerByAttribute_management(lyr,'NEW_SELECTION',"%s = %s"%(ifield,fvalue))
                df.zoomToSelectedFeatures()
#                 df.scale = 300
                ofile = '%s\\pic%d.JPG'%(op,fvalue)
                print(ofile)
                mapping.ExportToJPEG(mxd,ofile)
                del mxd
            except:
                print('Something goes wrong')
#调用定义的函数
func(shp,infe,_mxd,field,opath)

运行结果

others

更多高端功能,欢迎联系我进行定制开发!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据处理与分析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据介绍
  • 布局设置
  • 想要达到的效果
  • 源码
  • 运行结果
  • others
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档