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 字符串与水平坐标系和垂直坐标系配合使用。 请注意,将在 WKT 的 VERTCS 部分中定义垂直坐标系。
    # 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 保存联合工具的要素类名称和等级。

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)