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)
更多高端功能,欢迎联系我进行定制开发!