输出工程文件信息
import arcpy.mp as map
try:
#打开工程文件
aprx=map.ArcGISProject(r"Ex 2A.aprx")
#获取默认设置
geo=aprx.defaultGeodatabase
tool=aprx.defaultToolbox
home=aprx.homeFolder
print(" Default geodatabase: %s \n Default toolbox: %s \n Home Folder: %s" % (geo, tool, home))
#输出版本和存储时间
version=aprx.documentVersion
dtSaved=aprx.dateSaved
print(" ArcGIS Pro Document version: %s \n Last DateSaved: %s" % (version, dtSaved))
except Exception as e:
print("ERROR:"+e.args[0])
搜索工程和地图要素
import arcpy.mp as map
try:
aprx=map.ArcGISProject("Ex 2A.aprx")
#循环遍历地图文件,模糊搜索含有Streets的文件
for m in aprx.listMaps("Streets*"):
print("Map:"+m.name)
#循环遍历地图中的图层
for lyr in m.listLayers("RR*"):
print(""+lyr.name)
except Exception as e:
print("Error:"+e.args[0])
未模糊搜索前
模糊搜索
保存工程文件
import arcpy.mp as map
try:
aprx=map.ArcGISProject("Ex 2A.aprx")
#保存副本
#aprx.saveACopy("Ex 2A Copy.aprx")
aprx.save()
except Exception as e:
print("Error:"+e.args[0])
插入arcmap地图文件
import arcpy.mp as map
try:
aprx=map.ArcGISProject(r"D:\个人资料\Arcpy\ProgrammingPro\My Projects\ImportedCrime\ImportedCrime.aprx")
#保存副本
aprx.importDocument(r"D:\个人资料\Arcpy\ProgrammingPro\Databases\Crime.mxd")
aprx.save()
except Exception as e:
print("Error:"+e.args[0])
必须关闭工程文件,在pycharm或者其他工程中执行;文件占用问题
添加删除图层
import arcpy.mp as map
try:
aprx=map.ArcGISProject("CURRENT")
for m in aprx.listMaps("Map"):
#添加底图
m.addBasemap("中国地图彩色版")
#添加shp图层
m.addDataFromPath("D:\个人资料\Arcpy\ProgrammingPro\Databases\Trippville_GIS.gdb\\Floodplains")
#添加lyrx图层文件
lyr = map.LayerFile(r"D:\个人资料\Arcpy\ProgrammingPro\Databases\Zoning.lyrx")
m.addLayer(lyr)
#移除图层
for m in aprx.listMaps("Map"):
for lyr in m.listLayers():
if lyr.name == "Zoning":
m.removeLayer(lyr)
except Exception as e:
print("Error:"+e.args[0])
调整图层顺序
import arcpy.mp as map
try:
aprx=map.ArcGISProject("CURRENT")
for m in aprx.listMaps("Map"):
for lyr in m.listLayers():
if lyr.name == "City Limits":
refLayer = lyr
elif lyr.name == "Wetlands":
moveLayer = lyr
elif lyr.name == "Creeks and Streams":
refLayer2 = lyr
#移动图层位置,moveLayer移到refLayer上层
m.moveLayer(refLayer, moveLayer,"BEFORE")
except Exception as e:
print("Error:"+e.args[0])
插入图层
import arcpy.mp as map
try:
aprx=map.ArcGISProject("CURRENT")
for m in aprx.listMaps("Streets and Railroads"):
for lyr in m.listLayers():
if lyr.name == "Street_Centerlines":
insertLayer = lyr
for m in aprx.listMaps("Map"):
for lyr in m.listLayers():
if lyr.name == "Creeks and Streams":
refLayer = lyr
#将其他地方的图层杀入到m图层,注意m必须为被插入地图
m.insertLayer(refLayer,insertLayer,"BEFORE")
except Exception as e:
print("Error:"+e.args[0])
图层类型
import arcpy.mp as map
try:
aprx = map.ArcGISProject(r"D:\个人资料\Arcpy\ProgrammingPro\Chapter2\Ex 2A.aprx")
for m in aprx.listMaps("Map"):
for lyr in m.listLayers():
if lyr.isFeatureLayer:
#print(lyr.name + "is a Feature Layer")
if lyr.supports("DEFINITIONQUERY"):
print(lyr.name + " supports definition query")
elif lyr.isWebLayer:
print(lyr.name + "is a Web Layer")
except Exception as e:
print("Error: "+ e.args[0])
定义查询
import arcpy.mp as map
try:
aprx = map.ArcGISProject("CURRENT")
for m in aprx.listMaps("Map"):
for lyr in m.listLayers('Parcels'):
if lyr.isFeatureLayer:
if lyr.supports("DEFINITIONQUERY"):
lyr.definitionQuery = "Acres > 5.0"
except Exception as e:
print("Error: "+ e.args[0])
图层最大最小比例
import arcpy.mp as map
try:
aprx = map.ArcGISProject("CURRENT")
for m in aprx.listMaps("Map"):
for lyr in m.listLayers("Parcels"):
if lyr.isFeatureLayer:
if lyr.supports("MINTHRESHOLD"):
lyr.minThreshold = 50000
#if lyr.supports("DEFINITIONQUERY"):
#lyr.definitionQuery = "ACRES > 5.0"
except Exception as e:
print("Error: " + e.args[0])
书签
当用户从ArcGIS Pro界面选择书签时,地图将在书签定义的空间范围内重新绘制。
点击Legion Park后地图会在该公园范围重新绘制;地图缩放到目标范围后,可以新建书签。
定位到书签,循环输出为pdf
import arcpy.mp as map
try:
aprx=map.ArcGISProject("CURRENT")
#获取布局
lyt=aprx.listLayouts("Park Layout")[0]
#获取布局中的地图元素
mf = lyt.listElements("MAPFRAME_ELEMENT")[0]
#获取地图中的书签元素
bkmks = mf.map.listBookmarks()
for bkmk in bkmks:
#定位到书签位置
mf.zoomToBookmark(bkmk)
#输出为PDF
lyt.exportToPDF(r"D:\个人资料\Arcpy\ProgrammingPro\Scripts" + "\\"+ bkmk.name + ".pdf")
except Exception as e:
print("ERROE:"+e.arg[0])