[930] arcpy - change spatial reference, zoom to layer and export to PDF

发布时间 2023-11-01 13:05:39作者: McDelfino

The general idea is as follows:

aprx -> layout -> map -> layer -> extent
        layout -> setExtent
        layout -> exportToPDF

The script is as follows:

def export2PDF(root_dir):
    aprx_dir = os.path.join(root_dir, "Working\\GIS\\Project\\LI-XXXXX XXX\\Master.aprx")
    site_sf = get_siteboundary_zone(root_dir)
    aprx = arcpy.mp.ArcGISProject(aprx_dir)
    
    # layouts of aprx
    for lyt in aprx.listLayouts():
        mf = lyt.listElements("mapframe_element")[-1]
        mp = mf.map
        
        # change the spatial reference
        if mp.spatialReference.name != site_sf:
            mp.spatialReference = arcpy.SpatialReference(site_sf)
    
        for lyr in mp.listLayers():
            if lyr.supports("NAME") and lyr.name.find("sitebuffer") > -1:
                break
        
        # zoom to layer of sitebuffer
        mf.camera.setExtent(mf.getLayerExtent(lyr, False, True))
        
        # export map to pdf
        lyt.exportToPDF(os.path.join(root_dir, "Delivery\\PDFs", lyt.name + ".pdf"), resolution=300)
        print(" --", lyt.name)
    
    aprx.save()