使用当前工作空间环境和临时工作空间环境

几乎所有的地理处理工具都可将数据集作为输入,从而生成新的数据集。使用地理处理工具时需要注意的是,应避免输入较长的数据集名称,例如:

E:\Data\D052753_a\infrastructure\BK16_c1\approved.gdb\roads\mjrst

输入如此长的数据集名称非常繁琐、麻烦并且容易出错。也正因为如此,地理处理才允许将数据集或图层直接拖动到工具对话框,使用浏览按钮 打开 导航至数据集,或者从下拉列表中选择图层。此外,还有两种功能可使指定输入和输出数据集的操作变得更加容易:当前工作空间临时工作空间的环境设置。

以下是有关当前工作空间和临时工作空间的要点:

设置当前工作空间环境

步骤:
  1. 在 ArcMap 中,单击地理处理 > 环境。这将打开环境设置 窗口。
  2. 展开工作空间类别,然后输入工作空间的路径。下图显示的是将当前工作空间设置为 D:\ArcTutor\BuildingaGeodatabase\Montgomery.gdb\Landbase,这是地理数据库内的一个要素数据集。

    设置当前工作空间环境

    您可将当前工作空间设置为系统文件夹、地理数据库或者地理数据库中的要素数据集。

  3. 单击确定
  4. 或者,也可以在目录 窗口中浏览至某个地理数据库,右键单击该地理数据库,然后单击设为默认地理数据库。当前工作空间和临时工作空间将设置为此默认地理数据库。

还有多种其他的环境设置方法,您可将环境设置为应用于所有工具或者仅执行某个工具、模型、模型过程或脚本。

了解有关环境设置的详细信息

使用基本名称

当前工作空间蕴含的基本思想是,只设置一次工作空间,然后在键入输入和输出路径时只使用基本名称即可。一个数据集名称由两部分组成,即工作空间和基本名称,如下图所示。

数据集名称
目录路径、路径、位置和数据集名称。在实际术语中,这些词汇所代表的含义相同,即用于指定数据集的字符串。

使用基本名称的示例

下图显示的是用作当前工作空间的地理数据库示例。当前工作空间将设置为 D:\BuildingaGeodatabase\Montgomery.gdb\Landbase

Montgomery.gdb 中的内容

工作空间设置完毕以后,需要使用数据集名称时,仅输入基本名称即可。下例展示的是使用裁剪工具时的情况。

  • 基本名称 (Blocks) 与当前工作空间连接在一起便组成了数据集名称 (D:\BuildingaGeodatabase\Montgomery.gdb\Landbase\Blocks)。然后,输入要素参数便替换为该数据集名称。
  • 自动生成一个唯一的输出数据集名称。基本名称将表示为,输入基本名称 (Blocks) 追加下划线、工具名称(此例中为“裁剪”)以及数字(如果需要,为确保输入的名称唯一)。
    键入输入的基本名称
  • 如果不想使用自动生成的输出名称,可删除自动生成的名称并自行输入基本名称,该名称还将扩展到数据集名称中,如下所示。

    使用输出数据集的基本名称

运行工具后,您可能会发现输出并没有写入预期位置,这可能是因为键入输出名称时出错,或者您只是忘记了写入位置。如果发生此类情况,可打开结果 窗口,其中会包含已运行工具及其输入数据集和输出数据集的相应记录。

还可在批处理格网中使用基本名称,如下所示。

将当前工作空间与批处理格网结合使用

了解有关批处理的详细信息

在工具对话框中显示工作空间

您可将鼠标指针悬停在浏览按钮 打开 上片刻,随即便会显示您最近一次浏览的工作空间,如下所示。

在工具对话框中显示浏览工作空间

单击浏览按钮时,“浏览”对话框将在当前工作空间中打开。

脚本中的当前工作空间和基本名称

Python 窗口中,工作空间环境可用于设置当前工作空间。设置完工作空间后,便可使用工作空间中任意数据集的基本名称,如下所示。

>> import arcpy
>> arcpy.env.workspace = "c:/projects/RedRiverBasin/data.mdb"
>> arcpy.Intersect_analysis("roads ; streams ", "stream_crossings", "#", 1.5, "point")

以下是一个展示工作空间命令使用过程的 Python 脚本示例:

# Purpose: Determine the type of vegetation within 100 meters of all stream crossings

# Import the ArcPy site-package
import arcpy

try:
    # Set the workspace (to avoid having to type in the full path to the data every time)
    arcpy.env.workspace = "c:/projects/RedRiverBasin/data.mdb"

    # Process: Find all stream crossings (points)
    arcpy.Intersect_analysis("roads ; streams ", "stream_crossings", "#", 1.5, "point")

    # Process: Buffer all stream crossings by 100 meters
    arcpy.Buffer_analysis("stream_crossings","stream_crossings_100m", "100 meters")

    # Process: Clip the vegetation feature class to stream_crossings_100m
    arcpy.Clip_analysis("vegetation", "stream_crossings_100m", "veg_within_100m_of_crossings")

    # Process: Summarize how much (area) of each type of vegetation is found within 100 meters of the stream crossings
    arcpy.Statistics_analysis("veg_within_100m_of_crossings", "veg_within_100m_of_crossings_stats","shape_area sum","veg_type")

except:
    # If an error occurred while running a tool print the messages
    print arcpy.GetMessages()

临时工作空间环境

除当前工作空间外,还存在临时工作空间环境设置。临时工作空间设置的访问方式和设置方式与当前工作空间相同。

临时工作空间环境的主要用途是供“模型构建器”使用。“模型构建器”需要使用一个工作空间来写入中间数据集(模型运行后便不再使用)。尽管它主要服务于“模型构建器”,但有时可能也需要为各工具对话框设置临时工作空间。或者更有可能的是,您设置了在“模型构建器”中使用的临时工作空间,但却忘记在使用某工具的对话框执行该工具前重置临时工作空间。

如果设置了临时工作空间环境,工具将使用它(而非当前工作空间)来自动生成输出数据集名称,如下所示。

使用临时工作空间自动生成输出的示例
警告警告:

如果为输出键入了基本名称,则会使用当前工作空间(而非临时工作空间)来构造数据集名称。

规则就是,只要使用的是基本名称,该名称便会与当前工作空间相连,而不与临时工作空间相连。编写脚本时请注意这一点。在以下代码片段中,输出数据集“stream_crossings”将写入当前工作空间,而非临时工作空间。

arcpy.env.workspace = "c:/projects/RedRiverBasin/data.mdb"
arcpy.env.scratchWorkspace = "c:/projects/Scratch/scratch.gdb"
arcpy.Intersect_analysis("roads ; streams ", "stream_crossings", "#", 1.5, "point")
警告警告:

由于临时工作空间仅用于存放临时数据,因此请不要将它设置为 ArcSDE 地理数据库。因为这可能会导致性能上的问题,即您有可能将临时数据写入到企业级数据库中。建议始终为临时工作空间使用文件地理数据库(而非个人地理数据库或 shapefile 工作空间)。

自动生成的输出数据集名称

所有工具均会为您自动创建输出数据集名称。生成输出名称的逻辑如下所示:

相关主题

5/10/2014