通过Python使用环境设置

2021-01-05 11:05发布

前言

脚本可通过多种方式执行,可在 ArcGIS 应用程序中作为脚本工具运行,也可以通过其他脚本运行或本身在 Python 窗口中运行。当某个脚本在 ArcGIS 应用程序的工具中运行或通过其他地理处理脚本运行时,调用该脚本的应用程序或脚本所使用的环境设置将被传递到该脚本。这些设置将成为工具脚本执行时所使用的默认设置,被调用的脚本可能会更改传递的设置,但这些更改仅用在该脚本内或由该脚本可能调用的任何其他工具使用,更改不会传递回调用脚本或应用程序。

获取和设置环境设置

环境设置以 arcpy.env 类的属性的方式公开。这些属性可用于检索或设置当前值。环境可作为环境类中的读/写属性进行访问。

import arcpy
arcpy.env.workspace = "c:/data"

示例 1:设置环境值

import arcpy
# Set the workspace environment setting
arcpy.env.workspace = "c:/St_Johns/data.gdb"
# Set the XYTolerance environment setting
arcpy.env.XYTolerance = 2.5
# Calculate the default spatial grid index, divide in half, then
#   set the spatial grid 1 environment setting
grid_index = arcpy.CalculateDefaultGridIndex_management("roads")[0]
arcpy.env.spatialGrid1 = float(grid_index) / 2
# Clip the roads by the urban area feature class
arcpy.Clip_analysis("roads", "urban_area", "urban_roads")

示例 2:获取和设置环境值 

import arcpy
# Check the current raster cell size and make sure it is a certain size
#   for standard output
arcpy.env.workspace = "c:/avalon/data"
if arcpy.env.cellSize < 10:
    arcpy.env.cellSize = 10
elif arcpy.env.cellSize > 20:
    arcpy.env.cellSize = 20
arcpy.HillShade_3d("island_dem", "island_shade", 300)

设置 Python 中的属性时要注意拼写和大小写。将值指定给 arcpy.env.Workspace 与设置 arcpy.env.workspace 不同。(注:arcpy.env.workspace 是正确的格式。) 如果您已设置环境,但发现没有对后续工具产生作用的情况,请检查拼写和大小写。

使用环境设置处理临时数据(scratch data)

scratchGDB 和 scratchFolder 环境是提供保证存在的地理数据库和文件夹位置的只读环境。这意味着,您可以随时可靠地使用地理数据库或文件夹,而不必进行创建或管理。

也可以使用内存工作空间来管理输出的中间数据,具体可以参考文末的帮助链接,但是如果使用Python制作的GP工具需要用来发布GP服务,那不建议用内存工作空间管理中间数据。

import arcpy
inputFC = arcpy.GetParameterAsText(0)
clipFC = arcpy.GetParameterAsText(1)
outputFC = arcpy.GetParameterAsText(2)
# Use scratchGDB environment to write intermediate data
tempData = arcpy.CreateScratchName(workspace=arcpy.env.scratchGDB)
result = arcpy.Buffer_analysis(inputFC, tempData, "50 METERS")
arcpy.Clip_analysis(clipFC, result, outputFC)

在上面的代码中,我们使用了:

tempData = arcpy.CreateScratchName(workspace=arcpy.env.scratchGDB)

 CreateScratchName方法的目的是为指定的数据类型创建唯一的临时路径名称,要使用scratchGDB作为工作空间,需要指定workspace为scratchGDB。如果当前arcgispro的临时工作空间的路径为D:\制作GP工具\output,那么上述语句的结果就是

D:\制作GP工具\output\scratch.gdb\xx0

scratchFolder 环境的设置如下:

无论当前arcgispro环境中的临时工作空间是gdb还是文件夹路径,执行完下述语句,都会在临时工作空间的文件夹(例如:output文件夹)中自动新建一个名为scratch的文件夹。

import arcpy
print(arcpy.env.scratchFolder)
D:\制作GP工具\output\scratch

scratchGDB 环境的设置如下:

无论当前arcgispro环境中的临时工作空间是gdb还是文件夹路径,执行完下述语句,都会在临时工作空间的文件夹(例如:output文件夹)中自动新建一个名为scratch.gdb的文件夹。

import arcpy
print(arcpy.env.scratchGDB)

——————————————

参考链接:

https://pro.arcgis.com/zh-cn/pro-app/arcpy/geoprocessing_and_python/using-environment-settings.htm

https://pro.arcgis.com/zh-cn/pro-app/help/analysis/geoprocessing/modelbuilder/the-in-memory-workspace.htm

https://blog.csdn.net/peckerzeng/article/details/79317149


作者:gislaozhang

链接:https://blog.csdn.net/gislaozhang/article/details/105458670

来源:CSDN
著作权归作者所有,转载请联系作者获得授权,切勿私自转载。