ValueTable
Краткая информация
Таблица значений - это гибкий объект типа таблицы, состоящий из строк и столбцов и содержащий разные значения.
Обсуждение
Нативные объекты Python такие как long, str, bool, double, datetime.datetime() поддерживаются объектом ValueTable. С ними часто легче работать, и они делают код более надежным на разных компьютерах, особенно для таких типов, как GPDate, которые требуют синтаксического анализа системы при преобразовании в строку и из строки. Чтобы получить объекты Python из объекта ValueTable, используйте функции getTrueValue и getTrueRow. Чтобы добавить или записать объекты Python в объект ValueTable, используйте функции setValue и addRow.
Список поддерживаемых типов данных столбцов см. в статье Типы данных.
Синтаксис
ValueTable({columns})
| Имя | Объяснение | Тип данных |
|---|---|---|
|
columns (Дополнительный) |
Добавляет столбцы к объекту
(Значение по умолчанию — 1) |
Integer |
Свойства
| Имя | Объяснение | Тип данных |
|---|---|---|
|
columnCount (Только для чтения) |
Число столбцов. |
Integer |
|
rowCount (Только для чтения) |
Число строк. |
Integer |
Методы
addColumns(number_of_columns)
Добавляет столбцы к объекту ValueTable. Значения могут быть следующими:
Число столбцов как целое. Каждый столбец будет добавлен как тип данных
GPString.Тип данных одного столбца в виде строки, например,
"GPString".Типы данных для нескольких столбцов в виде списка строк, например,
["GPDate", "GPLong"].
Метод addColumns по функциональности эквивалентен методу setColumns.
| Имя | Объяснение | Тип данных |
|---|---|---|
|
number_of_columns |
The number of columns for the value table. |
Integer |
addRow(value)
Добавляет строку с заданными значениями в таблицу значений.
| Имя | Объяснение | Тип данных |
|---|---|---|
|
value |
A list of values to be added as a new row. The value argument can be as follows:
|
Object |
exportToString()
Экспортирует объект в его строковое представление.
Возвращаемое значение
| Тип данных | Объяснение |
|---|---|
|
String |
Строковое представление объекта. |
getRow(row)
Возвращает значения из строк в указанном индексе. Значения строк возвращаются как строка с разделителями-пробелами.
| Имя | Объяснение | Тип данных |
|---|---|---|
|
row |
The row index position. |
Integer |
Возвращаемое значение
| Тип данных | Объяснение |
|---|---|
|
String |
Строка из объекта |
getTrueRow(row)
Возвращает значения из строк в указанном индексе. Значения строк возвращаются как список с соответствующими объектами Python.
Тип данных столбца для сопоставлений объектов Python приведены ниже:
Целое как
intДвойной точности как
floatБулево как
boolДата как
datetime.datetime
| Имя | Объяснение | Тип данных |
|---|---|---|
|
row |
The row index position. |
Integer |
Возвращаемое значение
| Тип данных | Объяснение |
|---|---|
|
Object |
Список Python, содержащий значение заданной строки с соответствующими объектами Python. |
getTrueValue(row, column)
Заданный индекс строк и столбцов, возвращает значение в виде соответствующего объекта Python.
Тип данных столбца для сопоставлений объектов Python приведены ниже:
Целое как
intДвойной точности как
floatБулево как
boolДата как
datetime.datetime
Значение для всех остальных типов столбцов возвращается как строки.
| Имя | Объяснение | Тип данных |
|---|---|---|
|
row |
The row index position. |
Integer |
|
column |
The column index position. |
Integer |
Возвращаемое значение
| Тип данных | Объяснение |
|---|---|
|
String |
Значение заданного столбца и строки. |
getValue(row, column)
Возвращает значение из заданного столбца и строки в виде строки.
| Имя | Объяснение | Тип данных |
|---|---|---|
|
row |
The row index position. |
Integer |
|
column |
The column index position. |
Integer |
Возвращаемое значение
| Тип данных | Объяснение |
|---|---|
|
String |
Значение заданного столбца и строки. |
loadFromString(string)
Определяет объект ValueTable из отформатированной строки.
| Имя | Объяснение | Тип данных |
|---|---|---|
|
string |
The string representation of the object. Within the string, all values are wrapped in single quotes, with each value in a row separated by a space, and each row separated by a semicolon. Each column in the |
String |
removeRow(row)
Удаляет строку, которая найдена в указанном индексе.
| Имя | Объяснение | Тип данных |
|---|---|---|
|
row |
The index position of the row to remove. |
Integer |
setColumns(number_of_columns)
Добавляет столбцы к объекту ValueTable. Значения могут быть следующими:
Число столбцов как целое. Каждый столбец будет добавлен как тип данных
GPString.Тип данных одного столбца в виде строки, например,
"GPString".Типы данных для нескольких столбцов в виде списка строк, например,
["GPDate", "GPLong"].
Метод setColumns по функциональности эквивалентен методу addColumns.
| Имя | Объяснение | Тип данных |
|---|---|---|
|
number_of_columns |
The number of columns for the value table. |
Integer |
setRow(row, value)
Обновляет заданную строку в объекте ValueTable.
Примечание:
Аргумент
valueразделен пробелами. Любое значение, содержащее пробелы, должно быть заключено в кавычки. В следующем примере класс пространственных объектов и значение индекса добавляются к объектуValueTableс двумя столбцами.
vtab.setRow(0, "'c:/temp/land use.shp' 2")
В отличие от других строковых операторов setRow поддерживает только строковое.
| Имя | Объяснение | Тип данных |
|---|---|---|
|
row |
The index position of the row to update. |
Integer |
|
value |
The value to update in the given row. |
Object |
setValue(row, column, value)
Обновляет значение заданных строки и столбца. Значение может быть строковым представлением или соответствующим нативным типом Python.
Например, если столбец - это тип данных, то можно использовать строку или объект datetime.datetime.
# Must be system appropriate string representation of a date
vtab.setValue(0, 1, "2021-06-17")
vtab.setValue(0, 1, datetime.datetime(2021, 6, 17))
| Имя | Объяснение | Тип данных |
|---|---|---|
|
row |
The row index. |
Integer |
|
column |
The column index. |
Integer |
|
value |
The value to update the given row and column. This can be a string representation or a native Python type ( |
Object |
Пример кода
Используйте объект ValueTable для хранения имен классов объектов и рангов для функции Union.
import arcpy
# Set the workspace. List all of the feature classes in the dataset
arcpy.env.workspace = "c:/data/landbase.gdb/Wetlands"
feature_classes = arcpy.ListFeatureClasses()
# Create the value table for the Analysis toolbox Union function with 2 columns
value_table = arcpy.ValueTable(2)
# Iterate through the list of feature classes
for fc in feature_classes:
# Update the value table with a rank of 2 for each record, except
# for BigBog
if fc.lower() != "bigbog":
value_table.addRow(fc + " 2")
else:
value_table.addRow(fc + " 1")
# Union the wetlands feature classes with the land use feature class to create
# a single feature class with all of the wetlands and land use data
value_table.addRow("c:/data/landbase.gdb/land_use 2")
arcpy.analysis.Union(value_table, "c:/data/landbase.gdb/wetlands_use")
Таблицу значений можно заполнить строкой с множеством значений, которая была передана в скрипт в виде аргумента, это упрощает извлечение каждой записи.
import os
import arcpy
# Set the output workspace
arcpy.env.workspace = arcpy.GetParameterAsText(1)
# Create a value table with 2 columns
value_table = arcpy.ValueTable(2)
# Set the values of the table with the contents of the first argument
value_table.loadFromString(arcpy.GetParameterAsText(0))
# Loop through the list of inputs
for i in range(0, value_table.rowCount):
# Validate the output name for the new workspace
name = value_table.getRow(i)
out_name = arcpy.ValidateTableName(os.path.basename(name))
# Copy the features to the new workspace
arcpy.management.CopyFeatures(name, out_name)
Создает и добавляет значения в объект ValueTable с помощью нативных типов Python.
import arcpy
import datetime
# Create a value table with 3 columns
value_table = arcpy.ValueTable(["GPLong", "GPBoolean", "GPDate"])
# Set the values of the table with native Python types
value_table.addRow([1, True, datetime.datetime(2004, 12, 19)])
value_table.addRow([2, False, datetime.datetime(2008, 2, 13)])
# Retrieve true Python object from ValueTable
event_date = value_table.getTrueValue(1, 2)