import arcpy
aprx = arcpy.mp.ArcGISProject("CURRENT") # 获取地图文档
mapdoc = aprx.listMaps()[0] #加载地图 可以通过名称进行筛选
lyt = aprx.listLayouts()[0] #加载布局
mapframe = lyt.listElements("MAPFRAME_ELEMENT")[0] #加载地图框
mapframe的属性和方法
1.返回图层中所有要素或仅仅所选要素的图层范围。
getLayerExtent (layer, {selection_only}, {symbolized_extent})
2.使用新 Extent 对象可平移和居中 MapFrame,而无需更改地图框的比例。
panToExtent (extent)
3.修改 MapFrame 视图以便与所有图层或地图中所选图层的范围相匹配。
zoomToAllLayers ({selection_only}, {symbolized_extent})
例:
mapframe.zoomToAllLayers(True) #缩放至所选要素
4.修改 MapFrame 视图以便与通过空间书签存储的视图信息相匹配。
zoomToBookmark (bookmark)
# 加载图层
lyr = mapdoc.listLayers('js')[0]
mapdoc.addDataFromPath('D:/work/js.shp') #添加图层
Camera类的属性和方法
1.getExtent()和setExtent()
使用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
2.比例尺
mapframe.camera.scale
3.朝向
mapframe.camera.heading (可读写) Double类型
用于获取或设置地图视图旋转值。同时也被称为偏航角或方位角。用于表示地图数据将从正北方向按逆时针旋转的度数。要顺时针旋转,可使用负值。对 2D 和 3D 地图类型均适用。
4.视角(俯视仰视)
mapframe.camera.pitch (可读写) Double类型
用于获取或设置地图视图俯仰角。俯仰角等效于将机头向上或向下移动(沿着穿过飞机机翼的轴进行旋转)。向前观察,正值则高于地平线(指向上方),负值则低于地平线(指向下方)。2D 地图类型的值为 -90.0(从上方竖直向下观察)。
5.mode(只读) 返回照相机的查看器模式。每个查看器模式均支持不同的照相机属性集合。 String 类型
GLOBAL—支持非投影坐标系的 3D 地图。
LOCAL—仅支持本地坐标系的 3D 地图。
MAP—2D 地图。
#按属性选择要素
arcpy.SelectLayerByAttribute_management(<input feature layer or table view>,{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)
ArcPY常用函数和属性(ArcGISPro版)
于 2023-04-09 16:08:10 首次发布
本文介绍了如何使用arcpy模块在ArcGISProject中操作地图文档、布局、图层和相机属性。内容包括获取地图和布局,调整MapFrame的视图,如缩放、平移,以及选择和更新图层要素。此外,还涉及了Camera类的范围、比例尺、朝向和视角的控制,以及图层的选择和数据源更新的方法。
摘要由CSDN通过智能技术生成