摘要
用于对基本表属性和方法进行访问。
说明
有两种方法可以在脚本中引用表以用于工程。 要引用工程中已有的表,请在地图类上使用 listTables 方法。 要直接从工作空间引用表,请使用表函数。
您可能希望使用 listTables 函数引用工程中的表,因为您可能需要更改表的数据源或定义查询,甚至使用 removeTable 方法从工程中删除表。
Table 函数对于引用要添加到工程中的新表很有用。 一旦有了对新的外部表源的引用,就可以使用 addTable 方法将其添加到地图中。
表可以支持零到多个定义查询,但只能激活一个定义查询。 也有可能存在一个或多个定义查询但没有一个是活动的。 有几种方法可以管理定义查询。 第一种方式,可以使用 definitionQuery 属性。 如果在不具有定义查询的表或具有多个定义查询的表上设置唯一 SQL 字符串,则会添加新定义查询并将其设置为活动查询。 如果在具有相同查询的表上设置 SQL 字符串,则会将其设置为活动定义查询(如果它尚未处于活动状态)。 管理定义查询的第二种方法是结合使用 listDefinitionQueries 和 updateDefinitionQueries 函数。 listDefinitionQueries 函数返回 Python 字典列表,这些字典表示与每个查询关联的属性。 字典关键字是 name、sql 和 isActive。 可以使用核心 Python 从 Python 列表中添加、修改或删除定义查询。 可以将字典 isActive 值设置为 True 以设置活动查询。 同样,只有一个查询可以处于活动状态。 如果您尝试将多个查询设置为活动状态,则会返回错误。 更改完成后,使用 updateDefinitionQueries 函数设置新的更改。
更改表的数据源是一项常见要求。 Layer 对象中的方法和属性可帮助解决此问题。 有关详细说明、参数信息、案例和代码示例,请参阅更新和修复数据源帮助主题。
属性
属性 | 说明 | 数据类型 |
connectionProperties (只读) | 将表的数据源连接信息返回为 Python 字典。 | Dictionary |
dataSource (只读) | 返回表的数据源的完整路径。 其中包括完整的工作空间路径和数据集的名称。 对于企业级地理数据库表,将返回包含表的连接信息的字符串。 提示:ArcGIS Pro 工程中的企业级地理数据库表不保留用于创建图层的数据库连接文件的路径 (.sde)。 | String |
definitionQuery (可读写) | 用于获得或设置表的定义查询。 | String |
isBroken (只读) | 如果表的数据源已损坏,则返回 True。 | Boolean |
longName (只读) | 表的完整路径和名称,包括图层组。 | String |
metadata (可读写) | 获取或设置表格的元数据类信息。 注:设置元数据取决于 isReadOnly 属性值。 | Metadata |
name (可读写) | 用于以表在内容列表中显示的方式设置或获得表名称。 可包含空格。 | String |
URI (只读) | 表的统一资源指示符。 这是工程中表的唯一标识符,使用 Python CIM 访问时有时需要它。 添加表并建立 URI 后,该值不会随时间变化。 例如,如果您修改表的名称,则 URI 不会更改。 | String |
方法概述
方法 | 说明 |
getDefinition (cim_version) | 获取表的 CIM 定义。 |
getSelectionSet () | 以 Python 对象 ID 集的形式返回表选择。 |
listDefinitionQueries ({wildcard}) | 返回与表关联的定义查询的 Python 列表。 |
saveACopy (file_name) | 将表保存为图层文件 (.lyrx)。 |
setDefinition (definition_object) | 设置表的 CIM 定义。 |
setSelectionSet ({oidList}, {method}) | 使用 Python 对象 ID 列表设置表选择。 |
updateConnectionProperties (current_connection_info, new_connection_info, {auto_update_joins_and_relates}, {validate}, {ignore_case}) | 使用工作空间字典或路径替换连接属性。 |
updateDefinitionQueries (definitionQueries) | 更新表的定义查询集合。 |
方法
getDefinition (cim_version)
参数 | 说明 | 数据类型 |
cim_version | 用于表示 CIM 的主要版本的字符串。 | String |
在版本 2.4 中引入了对其他对象属性的 CIM 级别访问权限。Esri 遵循语义版本规范。这意味着,在允许突破性 API 更改的下一个主要版本(例如,3.0)之前,与 cim_version 搭配使用的值为 V2。发布 3.0 之后,新 V3 选项将可用。如果可能在新版本中引入突破性更改,Python 脚本作者可通过该选项控制执行期间将使用的 CIM 版本。
有关使用 CIM 和示例的详细信息,请参阅 Python CIM 访问。
getSelectionSet ()
数据类型 | 说明 |
List | 以 Python 对象 ID 集的形式返回表选择。 |
提供检索表当前选择的简便方式。
listDefinitionQueries ({wildcard})
参数 | 说明 | 数据类型 |
wildcard | A wildcard is based on the query name and is not case sensitive. A combination of asterisks (*) and characters can be used to limit the resulting list. (默认值为 None) | String |
数据类型 | 说明 |
List | 表示与每个查询关联的属性的 Python 字典列表。 字典关键字是 name、sql 和 isActive。 |
可以使用标准做法从 Python 列表中添加、修改或删除定义查询。 可以将字典 isActive 值设置为 True 以设置活动查询。 同样,只有一个查询可以处于活动状态。 如果您尝试将多个查询设置为活动状态,则会返回错误。 更改完成后,使用 updateDefinitionQueries 函数设置新的更改。
saveACopy (file_name)
参数 | 说明 | 数据类型 |
file_name | A string that includes the location and name of the output layer file (.lyrx). | String |
表和图层可保存到图层文件 (.lyrx)。
setDefinition (definition_object)
参数 | 说明 | 数据类型 |
definition_object | 使用 getDefinition 最初检索的已修改 CIM 定义对象。 | Object |
有关使用 CIM 和示例的详细信息,请参阅 Python CIM 访问。
setSelectionSet ({oidList}, {method})
参数 | 说明 | 数据类型 |
oidList [oidList,...] | 与相应的选择方法一起使用的 Python 对象 ID 列表。 (默认值为 None) | List |
method | 用于指定要使用的选择方法的字符串。
(默认值为 NEW) | String |
利用此方法可方便管理表选择。要清空选择,请使用包含空列表的 NEW 选择方法或不设置任何参数。Python 列表可用于 oidList,但会针对 Table 对象使用 getSelectionSet 方法返回集。
updateConnectionProperties (current_connection_info, new_connection_info, {auto_update_joins_and_relates}, {validate}, {ignore_case})
参数 | 说明 | 数据类型 |
current_connection_info | 用于表示工作空间路径或 Python 字典(包含要更新的源的连接属性)的字符串。 | String |
new_connection_info | 用于表示包含连接属性与新源信息的工作空间路径或 Python 字典的字符串。 | String |
auto_update_joins_and_relates | 如果设置为 True,则 updateConnectionProperties 方法还将更新相关连接或关联的连接。 (默认值为 True) | Boolean |
validate | 如果设置为 True,则仅在 new_connection_info 值为有效连接时,才会更新连接属性。如果为无效连接,则不会替换连接。如果设置为 False,则无论匹配是否有效,此方法都会将所有连接设置为匹配 new_connection_info。在这种情况下,如果匹配不存在,则将损坏数据源。 (默认值为 True) | Boolean |
ignore_case | 确定搜索是否区分大小写。默认情况下,查询区分大小写。要执行不区分大小写的查询,请将 ignore_case 设置为 True。 (默认值为 False) | Boolean |
有关详细说明、参数信息、案例和代码示例,请参阅更新和修复数据源帮助主题。
updateDefinitionQueries (definitionQueries)
参数 | 说明 | 数据类型 |
definitionQueries [definitionQueries,...] | Updates a list of dictionaries that represent the properties of each definition query for a table. | List |
此函数通常用于应用对 listDefinitionQueries 函数返回的结果所做的更改。
代码示例
以下脚本为所有地图中的所有表打印具有损坏数据源的独立表名称:
import arcpy
aprx = arcpy.mp.ArcGISProject(r"C:\Projects\YosemiteNP\Yosemite.aprx")
for m in aprx.listMaps():
for tbl in m.listTables():
if tbl.isBroken:
print(f"Table: {tbl.name} is broken in map: {m.name}")
del aprx
以下脚本将文件地理数据库中的表添加到地图中:
import arcpy
aprx = arcpy.mp.ArcGISProject(r"C:\Projects\YosemiteNP\Yosemite.aprx")
addTab = arcpy.mp.Table(r"C:\Projects\YosemiteNP\Data_Vector\YosemiteData.gdb\NHDFCode")
m = aprx.listMaps("Yose*")[0]
m.addTable(addTab)
del aprx