Краткая информация
Предоставляет доступ к основным свойствам таблицы и методам.
Обсуждение
Существует два способа указания ссылки на таблицы в скрипте для использования в проекте. Чтобы использовать таблицы, уже имеющиеся в проекте, примените метод listTables на Map class. Чтобы использовать таблицы непосредственно из рабочей области, используйте функцию Table. Возможно, вы решите привязать таблицу в проекте с помощью функции listTables, поскольку вам может понадобиться изменить источник данных таблицы или определяющий запрос, или даже удалить эту таблицу из проекта с помощью класса Map и метода removeTable. Функция Table используется для указания ссылки на новые таблицы, которые нужно добавить в проект. Если у вас есть ссылка на новый, внешний источник таблицы, вы можете добавить ее на Карту с помощью метода addTable.
Таблица может поддерживать от нуля до нескольких определяющих запросов, но только один определяющий запрос может быть активным. Также возможно, что присутствует один или несколько определяющих запросов, но ни один из них не активен. Существует два способа управлять определяющими запросами. Во-первых, вы можете использовать свойство definitionQuery. Если вы устанавливаете уникальную строку SQL на таблице, не имеющей определяющего запроса, или на таблице, которая имеет несколько определяющих запросов, добавляется новый определяющий запрос и становится активным запросом. Если вы устанавливаете строку SQL на таблице, которая уже имеет такой же запрос, то она устанавливает строку как активный определяющий запрос, если он еще не активен. Второй способ управлять определяющими запросами - использовать комбинацию функций listDefinitionQueries и updateDefinitionQueries. Функция listDefinitionQueries возвращает список словарей Python, которые содержат свойства, связанные с каждым запросом. Ключи словаря - name, sql и isActive. Определяющие запросы можно добавлять, изменять или удалять из списка Python с помощью базовых функций Python. Значение словаря isActive может быть установлено на True, чтобы установить активный запрос. Снова только один запрос может быть активным. При попытке сделать активным более одного запроса будет возвращена ошибка. После внесения изменений функция updateDefinitionQueries используется для установки новых изменений.
Метод enableTime позволяет включить время на таблице. Когда время включено, свойство time обеспечивает доступ к объекту LayerTime, позволяя выполнить дальнейшую настройку свойств времени для таблицы. См. раздел справки LayerTime с примерами кодов, которые также можно применять к таблицам.
Поля и строки таблицы можно просматривать и настраивать с помощью класса TableFrameElement на Layout. Чтобы создать фрейм таблицы, используйте метод createTableFrameElement на классе Layout. Обратитесь к разделу справки класса TableFrameElement для получения дополнительной информации и примеров кода.
Изменение источника данных таблицы – это общее требование. Более подробное обсуждение, сведения о параметрах, сценарии и примеры кода см. в разделе справки Обновление и исправление источников данных.
Свойства
Свойство | Описание | Тип данных |
connectionProperties (только чтение) | Возвращает информацию о подключении к источнику данных таблицы как словарь Python. | Dictionary |
dataSource (только чтение) | Возвращает полный путь к источнику данных таблицы. Он включает полный путь к рабочей области и имя набора данных. Для таблиц многопользовательских баз геоданных возвращается строка, содержащая информацию о подключении таблицы. Подсказка:Таблицы многопользовательских баз геоданных в проекте ArcGIS Pro не хранят путь к файлу подключения к базе данных (.sde), который использовался для создания слоя. | String |
definitionQuery (чтение и запись) | Дает возможность получать или задавать определяющий запрос к таблице. | String |
isBroken (только чтение) | Возвращает True, если источник данных таблицы поврежден. | Boolean |
isTimeEnabled (только чтение) | Указывает, включено ли время в таблице. Если свойство isTimeEnabled возвращает True, то свойство time таблицы может быть использовано для возврата объекта LayerTime. Если время не включено, используйте метод enableTime для таблицы, содержащей информацию о времени. | Boolean |
longName (только чтение) | Полное имя таблицы, включая информацию о составном слое, если она есть. Например, таблица с именем 'Table' в составном слое с именем 'Group Layer' возвратит значение longName, равное 'Group Layer\\Table'. Если таблица не входит в группу, longName будет таким же, что и значение name. | String |
metadata (чтение и запись) | Получите или задайте информацию класса Метаданные для таблицы. Примечание:Установка метаданных зависит от значения свойства isReadOnly. | Metadata |
name (чтение и запись) | Предоставляет возможность устанавливать или получать имя таблицы способом, обеспечивающим его отображение в таблице содержания. Можно использовать пробелы. | String |
time (только чтение) | Возвращает объект LayerTime, если в таблице включено время. Примечание:Свойства времени объекта LayerTime можно использовать и для объекта Слой, и для объекта Table. | LayerTime |
URI (только чтение) | Universal Resource Indicator таблицы. Это уникальный идентификатор таблицы в проекте, который иногда требуется при использовании доступа Python CIM. После добавления таблицы и установления URI значение со временем не меняется. Например, если вы измените имя таблицы, URI не изменится. | String |
Обзор метода
Метод | Описание |
disableTime () | Отключает свойства времени для объекта Table. |
enableTime ({startTimeField}, {endTimeField}, {autoCalculateTimeRange}, {timeDimension}) | Включает время в таблице, если там имеется информация о времени. |
getDefinition (cim_version) | Получает определение CIM для таблицы. |
getSelectionSet () | Возвращает выборку таблицы в виде набора идентификаторов объектов Python. |
listDefinitionQueries ({wildcard}) | Возвращает список определяющих запросов Python, связанных с таблицей. |
pasteProperties (source_table, {table_paste_properties}) | Метод pasteProperties вставляет свойства из одной таблицы в другую. |
saveACopy (file_name) | Сохраняет таблицу в файл слоя (.lyrx). |
setDefinition (definition_object) | Задает определение CIM для таблицы. |
setSelectionSet ({oidList}, {method}) | Задает выборку таблицы, используя список Object ID Python. |
updateConnectionProperties (current_connection_info, new_connection_info, {auto_update_joins_and_relates}, {validate}, {ignore_case}) | Метод updateConnectionProperties заменяет свойства подключения, используя словарь либо путь к рабочей области. |
updateDefinitionQueries (definitionQueries) | Обновления коллекции определяющих запросов таблицы. |
Методы
disableTime ()
Метод enableTime можно использовать для повторного включения свойств времени.
enableTime ({startTimeField}, {endTimeField}, {autoCalculateTimeRange}, {timeDimension})
Параметр | Описание | Тип данных |
startTimeField | The name of the field containing the start time values. If each row has a single time field, specify that field name in the startTimeField and leave endTimeField blank. If each row has a start and end time field, specify both the startTimeField and endTimeField. (Значение по умолчанию — None) | String |
endTimeField | The name of the field containing the end time values. Not all tables use an end time field. If each row has a single time field, specify that field name in the startTimeField and leave endTimeField blank. If each row has a start and end time field, specify both the startTimeField and endTimeField. (Значение по умолчанию — None) | String |
autoCalculateTimeRange | If set to True, the start and end time attribute information is used to calculate the table's time extent. (Значение по умолчанию — True) | Boolean |
timeDimension | The name of the dimension containing time values when using netCDF data. (Значение по умолчанию — None) | String |
Все параметры метода enableTime являются необязательными. Если startTimeField и endTimeField не указаны, метод оценит данные и попытается найти соответствующие значения по умолчанию.
После запуска метода enableTime свойство time таблицы можно использовать для возврата объекта LayerTime. Если MapFrame в Компоновке содержит слои с включенным временем, класс MapTime можно использовать для доступа к настройкам времени карты.
getDefinition (cim_version)
Параметр | Описание | Тип данных |
cim_version | A string that represents the major version of the CIM. | String |
Тип данных | Описание |
Object | Возвращает определение CIM для объекта Table. |
Уровень доступа CIM для дополнительных свойств объекта был введен в версии ArcGIS Pro 2.4. Если вы хотите вернуть определение CIM объекта, необходимо указать cim_version. Esri использует спецификацию семантического версионирования. Это означает, что критические изменения API разрешены в основных версиях — например, 3.0 Это даст авторам скриптов Python возможность управления версией CIM, которая будет использоваться во время запуска скрипта, если существует вероятность внесения критических изменений в новой версии. При создании скриптов для ArcGIS Pro 2.x укажите значение cim_version как 'V2'. При создании скриптов для ArcGIS Pro 3.x укажите значение cim_version как 'V3'. Скрипты, созданные с использованием cim_version 'V2', будут продолжать работать в ArcGIS Pro 3.x.
Более подробно о работе с CIM и примеры см. Доступ к CIM в Python.
getSelectionSet ()
Тип данных | Описание |
List | Возвращает выборку таблицы в виде набора идентификаторов объектов Python. |
Это простейший способ получения текущей выборки таблицы.
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 используется для установки новых изменений.
pasteProperties (source_table, {table_paste_properties})
Параметр | Описание | Тип данных |
source_table | A table or feature layer with the properties that will be pasted. | Table |
table_paste_properties [table_paste_properties,...] | A single string or a list of strings that specify the property or properties that will be pasted. For example, table_paste_properties="SYMBOLGY" will paste only symbology properties, whereas table_paste_properties=["CHARTS", "FIELD_PROPERTIES", "POPUPS"]) will paste multiple properties.
(Значение по умолчанию — ALL) | String |
Дополнительную информацию о вставке свойств слоя объектов см. в разделе справки Копирование и вставка свойств.
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 | Измененный объект определения CIM, изначально полученный с помощью getDefinition. | Object |
Более подробно о работе с CIM и примеры использования см. в разделе Доступ к Python CIM.
setSelectionSet ({oidList}, {method})
Параметр | Описание | Тип данных |
oidList [oidList,...] | Список Object ID Python для работы с соответствующим способом выборки объектов. (Значение по умолчанию — None) | List |
method | Строка, задающая используемый метод выборки.
(Значение по умолчанию — NEW) | String |
Это простейший способ управления текущей выборкой таблицы. Чтобы очистить выборку, воспользуйтесь методом выборки NEW с пустым списком, или без параметров. Списки Python можно применять для oidList, но наборы возвращаются методом getSelectionSet объекта Table.
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