【01】在ArcGIS中使用Python脚本小细节

以下将平时在ArcGIS中使用Python脚本遇到的一些小细节记录下来,同时也参考了一些大神的资料。

1、关于“/”和”\”的使用

G:/exercise/projects/ProPythonAnalysis/Map.gdb
G:\\exercise\\projects\\ProPythonAnalysis\\Map.gdb

在使用MapDocument.findAndReplaceWorkspacePaths (原路径,新路径)方法修复丢失的数据源时,原路径只能使用反斜杠才能修复成功,因为通过arcmap查看原数据在数据库中的路径是以反斜杠形式组合的,例如:F:\exercise08181\a1\b1.gdb

import arcpy.mapping as mapping
mxd=mapping.MapDocument(r"F:\exercise08181\a1\exercise.mxd")
mxd.findAndReplaceWorkspacePaths (r"F:\exercise0818\a1\b1.gdb",r"F:\exercise08181\a1\b1.gdb")
mxd.saveACopy("F:/exercise08181/a1/exercisefix.mxd")  

2、关于arcpy.env.workspace

 

arcpy.env.workspace数据存放地,相当于一个相对路径,这样在使用工作空间(即arcpy.env.workspace指定的资源路径)的资源时就不用引用完整路径了,只要指定数据集名称即可。

示例1:读取Map地理空间数据库中road和trail要素类的数据记录数

import arcpy
#
#arcpy.env.workspace数据存放地。相当于一个相对路径了#
arcpy.env.workspace="G:/exercise/projects/ProPythonAnalysis/Map.gdb"
result=arcpy.GetCount_management("road")
print(result)

#当不设置环境变量时,可以直接用操作系统绝对路径做文件输入输出也是可以的
result1=arcpy.GetCount_management("G:/exercise/projects/ProPythonAnalysis/Map.gdb/trail.shp")
print(result1)
#1626
#137

示例2:

import arcpy
arcpy.env.workspace="C:/ArcpyBook/Ch6"
arcpy.Buffer_analysis("Streams.shp","Stream_Buffer.shp","1000 METERS")
print arcpy.getMessages()

相当于对C:/ArcpyBook/Ch6目录中的Streams.shp文件进行1000 METERS的缓冲区分析,同时将缓冲结果保存在C:/ArcpyBook/Ch6目录下的Streams_Buffer.shp文件。

 

3、将另一项目中的工具箱复制粘贴到指定的项目中,同时可以通过ImportToolbox导入工具箱以便访问工具箱中的相关工具

 

import shutil
import arcpy
import os

#将一个工具箱复制到另一个文件夹
result=shutil.copy('D:\\mytools\\geometrytools.tbx', 'G:/exercise/projects/ProPythonAnalysis')
print(result)
#将指定的工具箱导入到 ArcPy 中,以便访问工具箱中的相关工具。
result1=arcpy.ImportToolbox(result)
#打印工具箱中内容
print(result1)
#G:/exercise/projects/ProPythonAnalysis\geometrytools.tbx
#<module 'model'> 'model'是geometrytools.tbx工具箱中包含的模型

其中shutil.copy()支持将工具箱(例如,geometrytool.tbx)复制粘贴到指定的路径下;arcpy.ImportToolbox()函数用于将指定文件夹中的工具箱导入到Python中进行使用,可以通过print打印出工具箱中的工具(例如,模型名称为‘model’的模型)

4、参考资料:

http://zhihu.esrichina.com.cn/question/13958    //arcpy.env.workspace到底是个什么东西?

http://www.jb51.net/article/87984.htm               //Python的shutil模块中文件的复制操作函数详解

 

转载自:https://blog.csdn.net/gislaozhang/article/details/79997263

You may also like...