创建表视图 (Data Management)
摘要
根据输入表或要素类创建表视图。由于此工具创建的表视图是临时性的,如果不保存文档,该图层将在会话结束后消失。
用法
-
此工具通常用于创建包含所选属性或字段集的表视图。
-
ArcCatalog 不显示这些表视图,但可将其用作当前 ArcGIS 会话中其他地理处理工具的输入。一旦 ArcGIS 应用程序退出,即会删除这些表视图。
-
在 ArcCatalog 中创建的表视图无法在 ArcMap 中使用。
如果使用了 SQL 表达式但却没有返回任何内容,则输出为空。
可以使用字段信息控件为字段名指定新名称。此控件的第二列列出来自输入的现有字段名。要对某字段重新命名,请单击字段名,然后输入一个新字段名。
在后续工具中将采用字段信息控件中定义的新字段名。但是,如果此工具是模型中的最后一个工具,则将从磁盘的源数据中获取字段名。要保留新字段名,必须使用复制行或复制要素工具将新图层写出到新数据。
字段名将通过指定输入工作空间来进行验证。因此,如果输入是地理数据库要素类,而输出工作空间是文件夹,则字段名可能会被截断,这是由于 shapefile 属性的名称最多只能具有十个字符。可以使用字段信息控件查看和更改新名称。
通过使用字段信息控件的可见属性,可使字段的子集在新图层中不可用。控件的第三列提供了一个下拉选项,用于指定字段在新图层中是显示还是隐藏。默认值为 TRUE。选择 FALSE 将隐藏字段。如果新建的图层是后续处理过程或工具的输入,则不能在工作流中使用隐藏的字段。如果将输出保存到磁盘,则只有列出的可见字段将显示在新数据中。
-
字段信息控件中的分割策略选项不适用于此工具。
语法
参数 | 说明 | 数据类型 |
in_table |
输入表或要素类。 | Table View;Raster Layer |
out_view |
要创建的表视图的名称。 | Table View ;Raster Layer |
where_clause (可选) |
用于选择要素子集的 SQL 表达式。表达式的语法会因数据源的不同而稍有不同。例如,如果要查询文件或 ArcSDE 地理数据库、shapefile 或 coverage,字段名需用双引号: "MY_FIELD" 如果要查询个人地理数据库,需将字段用方括号括起: [MY_FIELD] 在 Python 中,字符串用成对的单引号或双引号括起。要创建含有引号的字符串(常见于 SQL 表达式中的 WHERE 子句),可以对引号进行转义(使用反斜线)或对字符串使用三重引号。例如,如果所需的 WHERE 子句为 "CITY_NAME" = 'Chicago' 可以将整个字符串用双引号括起,然后如下所示对内部双引号进行转义: " \"CITY_NAME\" = 'Chicago' " 或者可以将整个字符串用单引号括起,然后如下所示对内部单引号进行转义: ' "CITY_NAME" = \'Chicago\' ' 或者不进行转义,而将整个字符串用三重引号括起: """ "CITY_NAME" = 'Chicago' """ 有关 SQL 语法及其在不同数据源中的差异的详细信息,请参阅帮助主题在 ArcGIS 中使用查询表达式的 SQL 参考。 | SQL Expression |
workspace (可选) |
用于验证字段名的输入工作空间。如果输入是地理数据库表,而输出工作空间是 dBASE 表,则字段名可能会被截断,这是由于 dBASE 字段名最多只能具有十个字符。可以使用字段信息控件查看和更改新名称。 | Workspace |
field_info (可选) |
指定要对输入表中的哪些字段进行重命名并使这些字段在输出表视图中可见。 | Field Info |
代码实例
以下 Python 窗口脚本演示了如何在即时模式下使用 MakeTableView 函数。
import arcpy
arcpy.MakeTableView_management("C:/data/input/crimefrequency.dbf", "crimefreq_tview")
以下独立脚本演示了如何使用带有 FieldInfo 对象的 MakeTableView 过滤输出中的字段。
# Name: MakeTableView_Example2.py
# Description: Uses a FieldInfo object to select a subset of fields and renaming one field's name.
# Import system modules
import arcpy
# Set data path
intable = "C:/data/tables.gdb/crimefreq"
# Get the fields from the input
fields= arcpy.ListFields(intable)
# Create a fieldinfo object
fieldinfo = arcpy.FieldInfo()
# Iterate through the fields and set them to fieldinfo
for field in fields:
if field.name == "FREQUENCY":
fieldinfo.addField(field.name, "NEWFREQ", "VISIBLE", "")
elif field.name == "CRIME_CAT":
fieldinfo.addField(field.name, field.name, "HIDDEN", "")
elif field.name == "BEAT":
fieldinfo.addField(field.name, field.name, "VISIBLE", "")
# The created crime_view layer will have fields as set in fieldinfo object
arcpy.MakeTableView_management(intable, "crime_view", "", "", fieldinfo)
# To persist the layer on disk make a copy of the view
arcpy.CopyRows_management("crime_view", "C:/temp/newfreq.dbf")