首页
学习
活动
专区
圈层
工具
发布

ArcPY系列之二(制图)

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

数据介绍

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

布局设置

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

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

想要达到的效果

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

用到的代码:

源码

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

代码语言:javascript
复制
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

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

下一篇
举报
领券