摘要
用于对基本表属性和方法进行访问。
说明
有两种方法可以在脚本中引用表以用于工程。 要引用工程中已有的表,请在地图类上使用 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}) | updateConnectionProperties 方法使用工作空间字典或路径替换连接属性。 |
updateDefinitionQueries (definitionQueries) | 更新表的定义查询集合。 |
方法
getDefinition (cim_version)
参数 | 说明 | 数据类型 |
cim_version | A string that represents the major version of the CIM. | String |
在 ArcGIS Pro 2.4 中引入了对其他对象属性的 CIM 级别访问权限。 要返回对象的 CIM 定义,必须指定 cim_version。 Esri 遵循语义版本规范。 这意味着在主要版本(例如 3.0)中允许突破性 API 更改。 如果可能在新版本中引入突破性更改,Python 脚本作者可通过该值控制脚本运行期间使用的 CIM 版本。 如果您正在为 ArcGIS Pro 2.x 创作脚本,可将 cim_version 指定为 'V2'。 如果您正在为 ArcGIS Pro 3.x 创作脚本,可将 cim_version 指定为 'V3'。 使用 cim_version 'V2' 创作的脚本可继续在 ArcGIS Pro 3.x 中使用。
有关使用 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 | A string that represents the workspace path or a Python dictionary that contains connection properties to the source you want to update. If an empty string or None is used in current_connection_info, all connection properties will be replaced with the new_workspace_info, depending on the value of the validate parameter. | String |
new_connection_info | A string that represents the workspace path or a Python dictionary that contains connection properties with the new source information. | String |
auto_update_joins_and_relates | If set to True, the updateConnectionProperties method will also update the connections for associated joins or relates. (默认值为 True) | Boolean |
validate | If set to True, the connection properties will only be updated if the new_connection_info value is a valid connection. If it is not valid, the connection will not be replaced. If set to False, the method will set all connections to match the new_connection_info value, regardless of a valid match. In this case, if a match does not exist, the data sources would be broken. (默认值为 True) | Boolean |
ignore_case | Determines whether searches will be case sensitive. By default, queries are case sensitive. To perform queries that are not case sensitive, set ignore_case to 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