ValueTable

Краткая информация

Таблица значений - это гибкий объект типа таблицы, состоящий из строк и столбцов и содержащий разные значения.

Обсуждение

Нативные объекты Python такие как long, str, bool, double, datetime.datetime() поддерживаются объектом ValueTable. С ними часто легче работать, и они делают код более надежным на разных компьютерах, особенно для таких типов, как GPDate, которые требуют синтаксического анализа системы при преобразовании в строку и из строки. Чтобы получить объекты Python из объекта ValueTable, используйте функции getTrueValue и getTrueRow. Чтобы добавить или записать объекты Python в объект ValueTable, используйте функции setValue и addRow.

Список поддерживаемых типов данных столбцов см. в статье Типы данных.

Синтаксис

 ValueTable  ({columns})
ПараметрОписаниеТип данных
columns

Добавляет столбцы к объекту ValueTable. Значения могут быть следующими:

  • Число столбцов как целое. Каждый столбец будет добавлен как тип данных GPString.
  • Тип данных одного столбца в виде строки, например, "GPString".
  • Типы данных для нескольких столбцов в виде списка строк, например, ["GPDate", "GPLong"].

(Значение по умолчанию — 1)

Integer

Свойства

СвойствоОписаниеТип данных
columnCount
(только чтение)

Число столбцов.

Integer
rowCount
(только чтение)

Число строк.

Integer

Обзор метода

МетодОписание
addColumns (number_of_columns)

Добавляет столбцы к объекту ValueTable. Значения могут быть следующими:

  • Число столбцов как целое. Каждый столбец будет добавлен как тип данных GPString.
  • Тип данных одного столбца в виде строки, например, "GPString".
  • Типы данных для нескольких столбцов в виде списка строк, например, ["GPDate", "GPLong"].

Метод addColumns по функциональности эквивалентен методу setColumns.

addRow (value)

Добавляет строку с заданными значениями в таблицу значений.

exportToString ()

Экспортирует объект в его строковое представление.

getRow (row)

Возвращает значения из строк в указанном индексе. Значения строк возвращаются как строка с разделителями-пробелами.

getTrueRow (row)

Возвращает значения из строк в указанном индексе. Значения строк возвращаются как список с соответствующими объектами Python.

Тип данных столбца для сопоставлений объектов Python приведены ниже:

  • Целое как int
  • Двойной точности как float
  • Булево как bool
  • Дата как datetime.datetime

getTrueValue (row, column)

Заданный индекс строк и столбцов, возвращает значение в виде соответствующего объекта Python.

Тип данных столбца для сопоставлений объектов Python приведены ниже:

  • Целое как int
  • Двойной точности как float
  • Булево как bool
  • Дата как datetime.datetime

Значение для всех остальных типов столбцов возвращается как строки.

getValue (row, column)

Возвращает значение из заданного столбца и строки в виде строки.

loadFromString (string)

Определяет объект SpatialReference из отформатированной строки.

removeRow (row)

Удаляет строку, которая найдена в указанном индексе.

setColumns (number_of_columns)

Добавляет столбцы к объекту ValueTable. Значения могут быть следующими:

  • Число столбцов как целое. Каждый столбец будет добавлен как тип данных GPString.
  • Тип данных одного столбца в виде строки, например, "GPString".
  • Типы данных для нескольких столбцов в виде списка строк, например, ["GPDate", "GPLong"].

Метод setColumns по функциональности эквивалентен методу addColumns.

setRow (row, value)

Обновляет заданную строку в объекте ValueTable.

Аргумент value разделен пробелами. Любое значение, содержащее пробелы, должно быть заключено в кавычки. В следующем примере класс пространственных объектов и значение индекса добавляются к объекту ValueTable с двумя столбцами.

vtab.setRow(0, "'c:/temp/land use.shp' 2")

В отличие от других строковых операторов setRow поддерживает только строковое.

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)

Методы

addColumns (number_of_columns)
ПараметрОписаниеТип данных
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:

  • A list containing appropriate native Python objects, for example, vtab.addRow(['c:/temp/land use.shp', 2]).
  • A space-delimited string representation. Values within the string that contain spaces must be enclosed in quotations, for example, vtab.addRow("'c:/temp/land use.shp' 2").

Object
exportToString ()
Возвращаемое значение
Тип данныхОписание
String

WKT-строковое представление объекта.

getRow (row)
ПараметрОписаниеТип данных
row

The row index position.

Integer
Возвращаемое значение
Тип данныхОписание
String

Строка из объекта ValueTable.

getTrueRow (row)
ПараметрОписаниеТип данных
row

The row index position.

Integer
Возвращаемое значение
Тип данныхОписание
Object

Список Python, содержащий значение заданной строки с соответствующими объектами Python.

getTrueValue (row, column)
ПараметрОписаниеТип данных
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)
ПараметрОписаниеТип данных
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 ValueTable will have a data type of GPString.

String
removeRow (row)
ПараметрОписаниеТип данных
row

The index position of the row to remove.

Integer
setColumns (number_of_columns)
ПараметрОписаниеТип данных
number_of_columns

The number of columns for the value table.

Integer
setRow (row, value)
ПараметрОписаниеТип данных
row

The index position of the row to update.

Integer
value

The value to update in the given row.

Object
setValue (row, column, value)
ПараметрОписаниеТип данных
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 (int, bool, or datetime.datetime).

Object

Пример кода

Пример ValueTable

Используйте объект 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.Union_analysis(value_table, "c:/data/landbase.gdb/wetlands_use")
ValueTable, пример 2

Таблицу значений можно заполнить строкой с множеством значений, которая была передана в скрипт в виде аргумента, это упрощает извлечение каждой записи.

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.CopyFeatures_management(name, out_name)
ValueTable, пример 3

Создает и добавляет значения в объект 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)