ValueTable (arcpy)
Резюме
Таблица значений – это гибкий объект, который можно использовать в качестве входных данных для многозначного параметра. Она существует только в течение срока существования создавшего ее объекта геообработки.
Обсуждение
Значение аргумента setRow разделяется пробелами. Любое значение в аргументе значения, которое содержит пробелы, необходимо заключить в кавычки. В следующем примере в таблицу значений с двумя столбцами добавляются класс объектов и значение индекса:
vtab.setRow(0, "'c:/temp/land use.shp' 2")
Синтаксис
Параметр | Объяснение | Тип данных |
columns |
Число столбцов. (Значение по умолчанию — 1) | Integer |
Свойства
Свойство | Объяснение | Тип данных |
columnCount (только чтение) |
Число столбцов. | Integer |
rowCount (только чтение) |
Число строк. | Integer |
Обзор метода
Метод | Объяснение |
addRow (value) |
Добавляет строку в таблицу значений.
Значение аргумента addRow разделяется пробелами. Любое значение в аргументе значения, которое содержит пробелы, необходимо заключить в кавычки. В следующем примере в таблицу значений с двумя столбцами добавляются класс объектов и значение индекса: |
exportToString () |
Экспортирует объект в его строковое представление. |
getRow (row) |
Получает строку из таблицы значений. |
getTrueValue (row, column) |
Получает значение из данного столбца и строки. |
getValue (row, column) |
Получает значение из данного столбца и строки. |
loadFromString (string) |
Восстановление объекта с помощью его строкового представления. Метод exportToString может использоваться для создания строкового представления. |
removeRow (row) |
Удаляет строку из таблицы значений. |
setColumns (number_of_columns) |
Устанавливает количество столбцов в таблице значений. |
setRow (row, value) |
Обновляет заданную строку в таблице значений. Значение аргумента setRow разделяется пробелами. Любое значение в аргументе значения, которое содержит пробелы, необходимо заключить в кавычки. В следующем примере в таблицу значений с двумя столбцами добавляются класс объектов и значение индекса:
|
setValue (row, column, value) |
Обновляет значение заданной строки и столбца. |
Методы
Параметр | Объяснение | Тип данных |
value |
Добавляемая строка. | Object |
Тип данных | Объяснение |
String |
Строковое представление объекта. |
Параметр | Объяснение | Тип данных |
row |
Значение индекса строки. | Integer |
Тип данных | Объяснение |
String |
Строка из таблицы значений. |
Параметр | Объяснение | Тип данных |
row |
Значение индекса строки. | Integer |
column |
Значение индекса столбца. | Integer |
Тип данных | Объяснение |
String |
Значение данного столбца и строки. |
Параметр | Объяснение | Тип данных |
row |
Значение индекса строки. | Integer |
column |
Значение индекса столбца. | Integer |
Тип данных | Объяснение |
String |
Значение данного столбца и строки. |
Параметр | Объяснение | Тип данных |
string |
Строковое представление объекта. | String |
Параметр | Объяснение | Тип данных |
row |
Значение индекса строки, которая будет удалена. | Integer |
Параметр | Объяснение | Тип данных |
number_of_columns |
Число столбцов изображения для таблицы значений. | Integer |
Параметр | Объяснение | Тип данных |
row |
Значение индекса строки, которая будет обновлена. | Integer |
value |
Значение для обновления данной строки. | Object |
Параметр | Объяснение | Тип данных |
row |
Индекс строки. | Integer |
column |
Индекс столбца | Integer |
value |
Значение для обновления данной строки и столбца. | Object |
Пример кода
Используйте ValueTable для размещения имен и рангов классов пространственных объектов для инструмента Объединение (Union).
import arcpy
from arcpy import env
# Set the workspace. List all of the feature classes in the dataset
#
env.workspace = "C:/Data/Landbase.gdb/Wetlands"
fcs = arcpy.ListFeatureClasses()
# Create the value table for the Analysis Union tool with 2 columns
#
vtab = arcpy.ValueTable(2)
# Iterate through the list of feature classes
#
for fc in fcs:
# Update the value table with a rank of 2 for each record, except
# for BigBog
#
if fc.lower() <> "bigbog":
vtab.addRow(fc + " 2")
else:
vtab.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
#
vtab.addRow("C:/Data/Landbase.gdb/land_use 2")
arcpy.Union_analysis(vtab, "C:/Data/Landbase.gdb/wetlands_use")
Таблицу значений можно заполнить многозначной строкой, переданной скрипту в виде аргумента, что позволяет легко извлечь каждую из записей. В примере ниже показано, как это сделать:
import arcpy
from arcpy import env
import os
# Set the output workspace
#
env.workspace = arcpy.GetParameterAsText(1)
# Create a value table with 2 columns
#
vtab = arcpy.ValueTable(2)
# Set the values of the table with the contents of the first argument
#
vtab.loadFromString(arcpy.GetParameterAsText(0))
x = 1
# Loop through the list of inputs
#
while x < vtab.rowCount:
# Validate the output name for the new workspace
#
name = vtab.getRow(x)
out_name = arcpy.ValidateTablename(os.path.basename(name))
# Copy the features to the new workspace
#
arcpy.CopyFeatures_management(name, out_name)
x += 1