ValueTable

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

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

Обсуждение

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

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

Синтаксис

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

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

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

Integer

Свойства

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

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

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

Число строк.

Integer

Обзор метода

МетодОписание
addRow (value)

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

exportToString ()

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

getRow (row)

Возвращает строку из ValueTable.

getTrueValue (row, column)

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

getValue (row, column)

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

loadFromString (string)

Восстановление и обновление объекта пространственной привязки с помощью строки WKT Метод exportToString может использоваться для экспорта строки WKT пространственной привязки.

  • Использование строки WKT с горизонтальной системой координат.
    # The following string is the WKT for the 
    # Geographic Coordinate system "WGS 1984" (factory code=4326)
    wkt = 'GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],\
                  PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]];\
                  -400 -400 1000000000;-100000 10000;-100000 10000;8.98315284119522E-09;\
                  0.001;0.001;IsHighPrecision'
    
    sr = arcpy.SpatialReference()
    sr.loadFromString(wkt)
  • Использование строки WKT с горизонтальной и вертикальной системами координат. Помните, что вертикальная система координат задается в разделе VERTCS WKT.
    # The following string is the WKT for the 
    # Geographic Coordinate system "WGS 1984" (factory code=4326), 
    # with a vertical coordinate system "WGS 1984" (factory code=115700)
    
    wkt = 'GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],\
                  PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],\
                  VERTCS["WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],\
                  PARAMETER["Vertical_Shift",0.0],PARAMETER["Direction",1.0],UNIT["Meter",1.0]];\
                  -400 -400 1000000000;-100000 10000;-100000 10000;8.98315284119522E-09;\
                  0.001;0.001;IsHighPrecision'
    
    sr = arcpy.SpatialReference()
    sr.loadFromString(wkt)

removeRow (row)

Удаляет строку из объекта ValueTable.

setColumns (number_of_columns)

Устанавливает количество столбцов в таблице значений.

setRow (row, value)

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

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

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

Обновляет значение заданной строки и столбца.

Методы

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

Добавляемая строка.

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

vtab.addRow("'c:/temp/land use.shp' 2")
Object
exportToString ()
Возвращаемое значение
Тип данныхОписание
String

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

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

The row index position.

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

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

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 WKT string representation of the object.

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

The index position of the row to remove.

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

Число столбцов изображения для таблицы значений.

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

Индекс строки.

Integer
column

Индекс столбца

Integer
value

Значение для обновления данной строки и столбца.

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 Union tool 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)