免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

查看: 29505|回复: 99
收起左侧

ArcGIS中ArcTooxbox 的新增工具tbx与大家分享即19个python脚本程序

  [复制链接]

5

主题

351

铜板

4

好友

助理工程师

Rank: 5Rank: 5

积分
243
发表于 2012-11-23 13:06 | 显示全部楼层 |阅读模式
感谢原作者分享出这么好的资料,这些工具是Arctoolbox里面没有的。可能工具本身不常用,但每个工具都提供了源代码,对于学习python脚本的同学,是非常好的资料,不敢独享,分享给华夏坛友!
需要说明的是:
1、这些工具需要ArcGIS10.0以上环境,9.3以下都是无法运行的,可以再Arcgis10中导出9.3版进行使用;
2、仅供大家参考学习使用,请勿用于其他用途,版权归原作者所有!
下载完毕后,大家可以看到有相关的文件夹,里面包括相关的
  • ArcTooxbox 的工具tbx
  • 测试数据
  • 每个工具的Python脚本
  • 相关的操作说明
感兴趣的大家可以下载适用一下,这个对经常使用python和ArcGIS结合开发的朋友很有帮助,因为它提供了关于每一个GP功能的Python源代码,大家可以看看这些,将这些功能结合自己的项目,进行结合,效果应该不错。

# Author:  ESRI

# Date:    July 5, 2010
# Version: ArcGIS 10.0
# Purpose: This script will iterate through each MXD in a folder and report information about each
#          map document, it's data frames and layers.  The script is intended to run from a script
#          tool that requires two input parameters:
#               1) folder containing MXDs,
#               2) an output text file.
#
#          The resulting text file will automatically open.

import arcpy, datetime, os

try:

    arcpy.gp.overwriteOutput = True

    #Read input parameters from GP dialog
    folderPath = arcpy.GetParameterAsText(0)
    output = arcpy.GetParameterAsText(1)

    #Create an output file
    outFile = open(output, "w")

    #Report header
    outFile.write("MXD REPORT: \n")
    outFile.write("\n")
    outFile.write("This report is for all MXDs in a folder.  It lists relevant information about\n")
    outFile.write("map document properties, data frame, layer, and table information for each MXD\n")
    outFile.write("in a system folder\n")
    outFile.write("\n")
    outFile.write("Date: " + str(datetime.datetime.today().strftime("%B %d, %Y")) + "\n")

    #Loop through each MXD file
    count = 0
    for filename in os.listdir(folderPath):
        fullpath = os.path.join(folderPath, filename)
        if os.path.isfile(fullpath):
            if filename.lower().endswith(".mxd"):

                #Reference MXD
                mxd = arcpy.mapping.MapDocument(fullpath)
                count = 1

                #Format output value
                if mxd.author =="": authorValue = "None"
                else: authorValue = mxd.author
                if mxd.summary =="": summaryValue = "None"
                else: summaryValue = mxd.summary
                BDS = arcpy.mapping.ListBrokenDataSources(mxd)
                if len(BDS) == 0: BDSValue = "None"
                else: BDSValue = "A total of " + str(len(BDS)) + " broken data source(s)."
               
                #Write MXD data to file
                outFile.write("\n")
                outFile.write("\n")
                outFile.write("------------------------------------------------------------------- \n")
                outFile.write("MAPDOCUMENT: " + os.path.basename(mxd.filePath) + "\n")
                outFile.write("------------------------------------------------------------------- \n")
                outFile.write("\n")
                outFile.write("\t Path:                 " + mxd.filePath + "\n")
                outFile.write("\t Last Saved:           " + str(mxd.dateSaved) + "\n")
                outFile.write("\t Author:               " + authorValue + "\n")
                outFile.write("\t Summary:              " + summaryValue + "\n")
                outFile.write("\t Relative Paths:       " + str(mxd.relativePaths) + "\n")
                outFile.write("\t Broken Data Sources:  " + BDSValue + "\n")

                #Reference each data frame and report data
                DFList = arcpy.mapping.ListDataFrames(mxd)
                for df in DFList:
                    #Format output values
                    if df.description == "": descValue = "None"
                    else: descValue = df.description

                    #Write data frame data to file
                    outFile.write("\n")
                    outFile.write("\n")
                    outFile.write("\t DATA FRAME: " + df.name + "\n")
                    outFile.write("\n")
                    outFile.write("\t\t Description:        " + descValue + "\n")
                    outFile.write("\t\t Spatial Reference:  " + df.spatialReference.name + "\n")
                    outFile.write("\t\t Transformation(s):  " + str(df.geographicTransformations) + "\n")
                    outFile.write("\t\t Map Units:          " + df.mapUnits + "\n")
                    try:
                        outFile.write("\t\t Scale:              " + str(df.scale) + "\n")
                    except:
                        outFile.write("\t\t Scale:              Unknown \n")
                    outFile.write("\t\t Rotation:           " + str(df.rotation) + "\n")
                  
                    #Reference each layer in a data frame
                    lyrList = arcpy.mapping.ListLayers(mxd, "", df)
                    for lyr in lyrList:
                        outFile.write("\n")
                        outFile.write("\t\t LAYER: " + lyr.name + "\n")
                        outFile.write("\t\t\t Group Layer Path:  " + lyr.longName + "\n")
                        if lyr.supports("dataSource"):
                            outFile.write("\t\t\t Data Source:       " + lyr.dataSource + "\n")
                            try:
                                outFile.write("\t\t\t Dataset type:      " + arcpy.Describe(lyr.dataSource).datasettype + "\n")
                            except:
                                outFile.write("\t\t\t Dataset type:     Unknown (could be a broken data source) \n")
                        else: outFile.write("\t\t\t Data Source:       N/A \n")
                        if lyr.supports("definitionQuery"):
                            if lyr.definitionQuery == "":
                                outFile.write("\t\t\t Query Definition:  None \n" )
                            else: outFile.write("\t\t\t Query Definition:  " + lyr.definitionQuery + "\n")
                        else: outFile.write("\t\t\t Query Definition:  N/A \n")
                        
                    #Reference each table in a data frame
                    tableList = arcpy.mapping.ListTableViews(mxd, df, "")
                    for table in tableList:
                        outFile.write("\n")
                        outFile.write("\n")
                        outFile.write("\t\t TABLEVIEW: " + table.name + "\n")
                        outFile.write("\n")
                        outFile.write("\t\t\t Data Source:           " + table.dataSource + "\n")
                        if table.definitionQuery == "":
                            outFile.write("\t\t\t Query Definition:      None \n")
                        else: outFile.write("\t\t\t Query Definition:      " + table.definitionQuery + "\n")

                del mxd
            
    if count ==0:
        outFile.write("\n")
        outFile.write("\n")
        outFile.write("---------------------------------------------------------------------------------- \n")
        outFile.write("                            NO MXD FILES FOUND \n")
        outFile.write("---------------------------------------------------------------------------------- \n")                          

    outFile.close()

    #Open resulting text file
    os.startfile(output)

    #Delete variables that reference data on disk
    del folderPath, output, outFile, fullpath

except Exception, e:
  import traceback
  map(arcpy.AddError, traceback.format_exc().split("\n"))
  arcpy.AddError(str(e))

原文出自CSDN论坛:
http://blog.csdn.net/linghe301/article/details/7912007



1346049507_7297.jpg

ArcPy_MappingScriptToolsforArcGIS (1).rar

3.81 MB, 下载次数: 7016

ArcPy_MappingScriptToolsforArcGIS (2).rar

3.81 MB, 下载次数: 6644

ArcPy_MappingScriptToolsforArcGIS (3).rar

836.6 KB, 下载次数: 1412

评分

参与人数 1铜板 +10 收起 理由
b176877840 + 10 很给力!

查看全部评分

17

主题

3万

铜板

51

好友

黄金会员

wigi

Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23

积分
4823
发表于 2012-11-23 23:46 | 显示全部楼层
感谢楼主分享。。。

评分

参与人数 1铜板 +5 收起 理由
admin + 5 亲,你好快哦~~~

查看全部评分

开开心心
回复 支持 反对

使用道具 举报

1

主题

92

铜板

0

好友

技术员

Rank: 3Rank: 3

积分
15
发表于 2013-5-24 18:06 | 显示全部楼层
好资料啊,下来研究。
回复 支持 反对

使用道具 举报

5

主题

1752

铜板

16

好友

助理工程师

Rank: 5Rank: 5

积分
363
发表于 2013-5-29 21:10 | 显示全部楼层
好资料啊,下来研究
回复 支持 反对

使用道具 举报

53

主题

21万

铜板

248

好友

传奇会员

Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30

积分
112786

灌水勋章贡献勋章宣传勋章

发表于 2013-5-29 21:47 | 显示全部楼层
了解了解~~~
回复 支持 反对

使用道具 举报

0

主题

75

铜板

0

好友

实习生

Rank: 1

积分
6
发表于 2016-1-1 09:46 | 显示全部楼层
感谢分享,学习arcpy!
回复 支持 反对

使用道具 举报

5

主题

3842

铜板

0

好友

工程师

AX

Rank: 7Rank: 7Rank: 7

积分
583
QQ
发表于 2016-1-1 10:10 | 显示全部楼层
谢谢分享!!!!!!!!!!!!!!!!
回复

使用道具 举报

3

主题

259

铜板

0

好友

技术员

Rank: 3Rank: 3

积分
42
发表于 2016-3-4 15:55 | 显示全部楼层
感谢楼主,现在刚刚接触arcpy,是学习的好东西
回复 支持 反对

使用道具 举报

0

主题

234

铜板

0

好友

技术员

Rank: 3Rank: 3

积分
24
发表于 2016-3-28 16:15 | 显示全部楼层
非常感谢楼主分享
回复 支持 反对

使用道具 举报

0

主题

118

铜板

0

好友

实习生

Rank: 1

积分
4
发表于 2016-4-19 16:05 | 显示全部楼层
非常感谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
快速回复 返回顶部 返回列表