【Arcpy】实验二:对工程、地图、图层和表格的处理

输出工程文件信息

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])
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

燕南路GISer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值