import arcpy
aprx = arcpy.mp.ArcGISProject("CURRENT") # 获取地图文档
df = arcpy.Mapping.ListDataFrames(mapdoc)[0] # 获取数据框
mapdoc = aprx.listMaps()[0] #可以通过名称进行筛选
lyt = aprx.listLayouts()[0]
df = lyt.listElements("MAPFRAME_ELEMENT")[0]
# 加载图层
lyr = mapdoc.listLayers('js')[0]
mapframe.camera.scale #比例尺
#mapdoc.addDataFromPath('D:/work/js.shp') #添加图层
# 使用MapFrame类的Camera属性控制地图框的范围。虽然extent不是Camera类的直接属性,但它是基于X、Y
# 和scale属性的派生属性。为了方便使用范围,Camera类包括两个方法:getExtent()用于获取2D地图框的现有范围,setExtent()
# 用于根据现有的Extent对象设置地图的范围。一个常见的任务是使多个地图框的范围相同,这些方法可以用于此任务。
# import
# arcpy
# aprx = arcpy.mp.ArcGISProject("C:/Mapping/Demo.aprx")
# lyt = aprx.listLayouts("Parks")[0]
# mf1 = lyt.listElements("MAPFRAME_ELEMENT", "Park A")[0]
# ext = mf1.camera.getExtent()
# mf2 = lyt.listElements("MAPFRAME_ELEMENT", "Park B")[0]
# mf2.camera.setExtent(ext)
# aprx.save()
# del aprx
#按属性选择要素
#arcpy.SelectLayerByAttribute_management(,{selection method},{where clasuse})
#例如:
query = "FID={0}".format(fidIdx)
arcpy.SelectLayerByAttribute_management(lyr, "NEW_SELECTION", query)
#NEW_SELECTION:创建一个新选择内容,默认选择方式。
#ADD_TO_SELECTION:根据查询条件,将选择内容添加到现有的选择内容中。
#REMOVE_FROM_SELECTION:根据查询条件,将选择内容从现有的选择内容中移除。
#SUBSET_SELECTION:将选择内容与现有的选择内容组合,返回相同的选择内容。
#SWITCH_SELECTION:选择未选择内容,移除已选择的内容。
#CLEAR_SELECTION:移除所有选择内容。
#更新数据源
cp = lyr.connectionProperties
cp['connection_info']['database'] ='C:\\Projects\\YosemiteNP\\Data_New'
cp['dataset'] = 'NewRoads.shp'
lyr.updateConnectionProperties(lyr.connectionProperties, cp)
# 更新布局范围
extent = df.getLayerExtent(lyr)
df.setExtent(lyr.getExtent())
# 输出为PNG
lyt.ExportToPNG(export_path, resolution=100)