arcgis中python窗口小功能代码

本文展示了多个在ArcGIS中使用Python进行地图处理和数据管理的实用代码片段,包括查询GDB文件属性、保存地图副本、图层管理、缩放至选定要素、定义查询、更新图层符号系统等操作。
摘要由CSDN通过智能技术生成

1.查询gdb格式文件内某个文件所具有的字段属性和相关类型和长度

import arcpy

 

arcpy.env.workspace = "C:/ArcpyBook/data/CityOfSanAntonio.gdb"    “确定工作空间”

try:

    fieldList = arcpy.ListFields("Burglary")

    for fld in fieldList:

        print "%s is a type of %s with a length of %i" % (fld.name, fld.type, fld.length)

except Exception as e:

    print(e.message)

 

2.保存副本工程.mxd;以及更改地图文档标题

import arcpy.mapping as mapping    “引入arcpy”

mxd = mapping.MapDocument("CURRENT")     “获取当前地图文档” “也可引用绝对路径”

print(mxd.title)

mxd.title = "Copy of Crime Project"             “更改地图文档名称”

mxd.saveACopy("c:/ArcpyBook/Ch2/crime_copy.mxd") “保存工程副本”

 

  1. 限制图层框的图层数据列表

import arcpy.mapping as mapping

mxd = mapping.MapDocument("CURRENT")

for df in mapping.ListDataFrames(mxd):       “文本框”

    if (df.name == 'Crime'):

        layers = mapping.ListLayers(mxd,"Burg*",df) “列表函数ListLayers”“通配符Burg*”

        for layer in layers:

            print(layer.name)

 

4.缩放至所选要素

import arcpy.mapping as mapping

mxd = mapping.MapDocument("CURRENT")

df = mapping.ListDataFrames(mxd,"Crime")[0]

layer = mapping.ListLayers(mxd,"Burglaries*",df)[0]

df.extent = layer.getSelectedExtent()

 

 

 

import arcpy.mapping as mapping

... mxd = mapping.MapDocument("CURRENT")

... mxd.activeDataFrame.zoomToSelectedFeatures()  “当前活动的框”

 

 

 

 

 

5.定义查询

import arcpy.mapping as mapping

mxd = mapping.MapDocument("CURRENT")

for df in mapping.ListDataFrames(mxd):

    if (df.name == 'Crime'):

        layers = mapping.ListLayers(mxd,'Crime Density by School District',df)

        for layer in layers:

            query = '"NAME" = \'Lackland ISD\''

            layer.definitionQuery = query

            df.extent = layer.getExtent()

 

6.添加图层到数据框

import arcpy.mapping as mapping

mxd = mapping.MapDocument("CURRENT")

df = mapping.ListDataFrames(mxd, "Crime")[0]

layer=mapping.Layer("C:\ArcpyBook\data\School_Districts.lyr")

mapping.AddLayer(df,layer,"AUTO_ARRANGE")

 

 

7.插入图层到地图文档

import arcpy.mapping as mapping

mxd = mapping.MapDocument("CURRENT")

df = mapping.ListDataFrames(mxd, "Crime")[0]

refLayer = mapping.ListLayers(mxd, "Burglaries*", df)[0]

insertLayer = mapping.Layer(r"C:\ArcpyBook\data\CityOfSanAntonio.gdb\Crimes2009")

mapping.InsertLayer(df,refLayer,insertLayer,"BEFORE")

 

8.更新图层的符号系统

import arcpy.mapping as mapping

mxd = mapping.MapDocument("CURRENT")

df = mapping.ListDataFrames(mxd, "Crime")[0]

updateLayer = mapping.ListLayers(mxd,"Crime Density by School District",df)[0]

sourceLayer = mapping.Layer(r"C:\ArcpyBook\data\CrimeDensityGradSym.lyr")

mapping.UpdateLayer(df,updateLayer,sourceLayer,True)

 

9.更新图层的属性

import arcpy.mapping as mapping

mxd = mapping.MapDocument("CURRENT")

df = mapping.ListDataFrames(mxd, "Crime")[0]

updateLayer = mapping.ListLayers(mxd,"Crimes2009",df)[0]

sourceLayer = mapping.Layer(r"C:\ArcpyBook\data\BurglariesNoForcedEntry.lyr")

mapping.UpdateLayer(df,updateLayer,sourceLayer,False)

 

 

10.操作数据框中启用时间的图层

import arcpy.mapping as mapping, os

mxd = mapping.MapDocument("CURRENT")

df = mapping.ListDataFrames(mxd, "Crime")[0]

dft = df.time

dft.currentTime = dft.startTime

 

while dft.currentTime <= dft.endTime:

    fileName = str(dft.currentTime).split(" ")[0] + ".pdf"

    mapping.ExportToPDF(mxd,os.path.join(r"C:\ArcpyBook\Ch2", fileName))

    print "Exported " + fileName

dft.currentTime = dft.currentTime + dft.timeStepInterval

 

 

11.修复数据源

import arcpy.mapping as mapping

mxd = mapping.MapDocument(r"c:\ArcpyBook\Ch3\Crime_BrokenDataLinks.mxd")

mxd.findAndReplaceWorkspacePaths(r"C:\ArcpyBook\Ch3\Data\OldData\CityOfSanAntonio.gdb", r"C:\ArcpyBook\Data\CityOfSanAntonio.gdb")   “被查找位置”

mxd.saveACopy(r"C:\ArcpyBook\Ch3\Crime_DataLinksFixed.mxd")

 

12.将文件地类数据库gdb 转换为个人地理数据库mdb

import arcpy.mapping as mapping

mxd = mapping.MapDocument(r"c:\ArcpyBook\Ch3\Crime_DataLinksFixed.mxd")

mxd.replaceWorkspaces(r"c:\ArcpyBook\data\CityOfSanAntonio.gdb", "FILEGDB_WORKSPACE",r"c:\ArcpyBook\new_data\CityOfSanAntonio_Personal.mdb","ACCESS_WORKSPACE")

mxd.saveACopy(r"c:\ArcpyBook\Ch3\Crime_DataLinksUpdated.mxd")

 

13.单个图层的数据源修复

import arcpy.mapping as mapping

mxd = mapping.MapDocument(r"c:\ArcpyBook\Ch3\Crime_DataLinksLayer.mxd")

df = mapping.ListDataFrames(mxd,"Crime")[0]

lyr = mapping.ListLayers(mxd,"Burglary",df)[0]

lyr.replaceDataSource(r"c:\ArcpyBook\data","SHAPEFILE_WORKSPACE","Burglaries_2009")

mxd.saveACopy(r"c:\ArcpyBook\Ch3\Crime_DataLinksNewLayer.mxd")

 

 

 

 

 

 

 

 

14.查找文件中所有地图文档丢失的数据源

import arcpy.mapping as mapping, os

f = open('BrokenDataList.txt', 'w')

for root, dirs, files in os.walk("c:\ArcpyBook"):

    for name in files:

        filename = os.path.join(root, name)

        if ".mxd" in filename:

            mxd = mapping.MapDocument(filename)

            f.write("MXD: " + filename + "\n")

            brknList = mapping.ListBrokenDataSources(mxd)

            for brknItem in brknList:

                print("Broken data item: " +  brknItem.name + " in " + filename)

                f.write("\t" + brknItem.name + "\n")</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值