几乎所有的地理处理工具都可将数据集作为输入,从而生成新的数据集。使用地理处理工具时需要注意的是,应避免输入较长的数据集名称,例如:
E:\Data\D052753_a\infrastructure\BK16_c1\approved.gdb\roads\mjrst
输入如此长的数据集名称非常繁琐、麻烦并且容易出错。也正因为如此,地理处理才允许将数据集或图层直接拖动到工具对话框,使用浏览按钮 导航至数据集,或者从下拉列表中选择图层。此外,有两个功能专门用于简化输入和输出数据集指定:当前工作空间和临时工作空间环境设置。
下面是关于当前工作空间和临时工作空间的重点:
- 可在地理处理环境窗口中设置当前和临时工作空间,可通过单击地理处理 > 环境访问该窗口。
- 与所有地理处理环境一样,当前和临时工作空间将随地图文档一起保存。
- 在 ArcMap 中,当前和临时工作空间将自动设置为默认地理数据库。可随时将当前或临时工作空间更改为除此默认地理数据库之外的其他地理数据库。
- 使用工具对话框或在 Python 中执行工具时,可输入数据集的基本名称,该工具将在当前工作空间中查找该数据集。
- 使用工具对话框时,输出数据集名称将按照当前工作空间和临时工作空间的设置自动生成。
设置当前工作空间环境
- 在 ArcMap 中,单击地理处理 > 环境。
随即将显示环境设置窗口。
- 展开工作空间类别,然后输入工作空间的路径。下图显示的是将当前工作空间设置为 D:\ArcTutor\BuildingaGeodatabase\Montgomery.gdb\Landbase,这是地理数据库内的一个要素数据集。
您可将当前工作空间设置为系统文件夹、地理数据库或者地理数据库中的要素数据集。
- 单击确定。
还有多种其他的环境设置方法,您可将环境设置为应用于所有工具或者仅执行某个工具、模型、模型过程或脚本。
使用基本名称
当前工作空间蕴含的基本思想是,只设置一次工作空间,然后在键入输入和输出路径时只使用基本名称即可。一个数据集名称由两部分组成,即工作空间和基本名称,如下图所示。
使用基本名称的示例
下图显示的是用作当前工作空间的地理数据库示例。当前工作空间将设置为 D:\BuildingaGeodatabase\Montgomery.gdb\Landbase。
工作空间设置完毕以后,需要使用数据集名称时,仅输入基本名称即可。下面的示例介绍如何使用裁剪工具。
- 基本名称 (Blocks) 加上当前工作空间即为数据集名称 (D:\BuildingaGeodatabase\Montgomery.gdb\Landbase\Blocks)。然后,输入要素参数便替换为该数据集名称。
- 自动生成一个唯一的输出数据集名称。基本名称与附带下划线的输入基本名称 (Blocks) 相同;工具的名称 - 在此示例中为 Clip - 根据需要添加数字,以确保名称唯一。
- 如果不想使用自动生成的输出名称,可删除自动生成的名称并自行输入基本名称,该名称还将扩展到数据集名称中,如下所示。
运行工具后,您可能会发现输出并没有写入预期位置,这可能是因为键入输出名称时出错,或者您只是忘记了写入位置。如果发生此类情况,请打开结果窗口;其中包含已运行工具及其输入数据集和输出数据集的相应记录。
还可在批处理格网中使用基本名称,如下所示。
在工具对话框中显示工作空间
您可将指针悬停在浏览按钮 上片刻,随即将显示您上次浏览的工作空间,如下所示。
单击浏览按钮时,“浏览”对话框将在当前工作空间中显示。
脚本中的当前工作空间和基本名称
在 Python 窗口中,工作空间环境可用于设置当前工作空间。设置完工作空间后,便可使用工作空间中任意数据集的基本名称,如下所示。
import arcpy
arcpy.env.workspace = "c:/projects/RedRiverBasin/data.gdb"
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 arcpy
# Set the workspace (to avoid having to type in the full path to the data
# every time)
arcpy.env.workspace = "c:/projects/RedRiverBasin/data.gdb"
# 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")
临时工作空间环境
除当前工作空间外,还存在临时工作空间环境设置。临时工作空间设置的访问方式和设置方式与当前工作空间相同。
临时工作空间环境的主要用途是供“模型构建器”使用。“模型构建器”需要使用一个工作空间来写入中间数据集(模型运行后便不再使用)。尽管它主要服务于“模型构建器”,但有时可能也需要为各工具对话框设置临时工作空间。或者更有可能的是,您设置了在“模型构建器”中使用的临时工作空间,但却忘记在使用某工具的对话框执行该工具前重置临时工作空间。
如果设置了临时工作空间环境,工具将使用它(而非当前工作空间)来自动生成输出数据集名称,如下所示。
自动生成的输出数据集名称
所有工具均会为您自动创建输出数据集名称。生成输出名称的逻辑如下所示:
- 如果设置了“临时工作空间”环境,则自动生成的输出路径将是临时工作空间。
- 如果未设置“临时工作空间”环境,则会检查当前工作空间环境。如果设置了当前工作空间,则自动生成的输出将是当前工作空间。
- 如果既未设置“临时工作空间”环境,也未设置“当前工作空间”环境,则自动生成的输出路径将是某一输入的工作空间。在这种情况下,需要遵循某些特定限制条件。例如,如果工作空间是文件夹,并且输出是新的要素类,则输出将是 coverage 工作空间的上级目录中的一个 shapefile 文件。还有其他一些限制条件,例如写入权限。在某些情况下,输出将写入到系统临时目录中。
- 如果为输出数据集键入了基本名称,则无论是否设置了“临时工作空间”环境,都将使用“当前工作空间”环境构造输出路径。