遍历要素集实现自动出图ArcGISPro版

任务:现有一个工程文件,见下图,需要对每个市级行政区划进行出图。
在这里插入图片描述
解决方法,通过游标对该数据集进行遍历,进行自动出图,
脚本:其实保险起见,这里的游标应使用with语句,这里就不改了。

# coding:utf-8
import arcpy
from arcpy import env
import os


def ExportToJPGFile(lyt, mapframe, lyr,fidIdx, outputDir, filename, imgWidth=600,imgHeight=500):
    query = "FID={0}".format(fidIdx)
    arcpy.SelectLayerByAttribute_management(lyr, "NEW_SELECTION", query)

    mapframe.zoomToAllLayers(True)
    # df.panToExtent(lyr.getSelectedExtent())
    mapframe.camera.scale = mapframe.camera.scale * 1.2  # 比例尺

    arcpy.SelectLayerByAttribute_management(lyr, "CLEAR_SELECTION")  #清除所选要素

    lyt.listElements('TEXT_ELEMENT')[0].text = str(filename) + "行政区划图"  #更新标题
    outFile = "{0}\\{1}.jpg".format(outputDir, filename)

    lyt.exportToJPEG(outFile, resolution=100)
    return outFile

if __name__=="__main__":
    aprx = arcpy.mp.ArcGISProject(r"D:\ArcGIS 10.4.1\MyProject\MyProject.aprx")  # 获取地图文档

    map = aprx.listMaps("Layers2")[0]  # 可以通过名称进行筛选
    lyt = aprx.listLayouts("Untitled")[0]

    mapframe = lyt.listElements("MAPFRAME_ELEMENT")[0]

    # 加载图层
    lyr = map.listLayers()[2]

    #print(lyr.name)
    #mapframe.camera.scale  # 比例尺

    rows = arcpy.da.SearchCursor(lyr, [u"FID", u"市"])
    ii = 0
    for row in rows:
        if ii < 27:
            filename = rows[0]
            cityname = rows[1]
            print(cityname)
            ExportToJPGFile(lyt,mapframe,lyr,ii,"D:\\Desktop\\outputPics",cityname)
        ii += 1
    # arcpy.RefreshActiveView()
    # arcpy.RefreshTOC()
    del aprx

运行结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_45373844/article/details/130043565