Как да добавя ред към таблица със стойности (ArcPy) в Python?

Уча се как да използвам Python за създаване на скриптове, които се изпълняват в ArcMap (10.1). Кодът по-долу кара потребителя да избере папката, където се намират шейп файловете, след което преминава през шейп файловете, за да създаде таблица със стойности само на тези шейп файлове, които започват с „landuse“.

Не съм сигурен как да добавя ред към таблицата със стойности, тъй като стойностите се избират в аргумент и папката не може да бъде поставена директно в кода. Вижте кода по-долу...

#imports
import sys, os, arcpy 

#arguments
arcpy.env.workspace = sys.argv[1] #workspace where shapefiles are located

#populate a list of feature classes that are in the workspace
fcs = arcpy.ListFeatureClasses()

#create an ArcGIS desktop ValueTable to hold names of all input shapefiles
#one column to hold feature names
vtab = arcpy.ValueTable(1)

#create for loop to check for each feature class in feature class list
for fc in fcs:
    #check the first 7 characters of feature class name == landuse
    first7 = str(fc[:7])
    if first7 == "landuse":
        vtab.addRow() #****THIS LINE**** vtab.addRow(??)

person user3044023    schedule 05.06.2014    source източник


Отговори (1)


В цикъла for fc ще бъде името като низ на всеки клас характеристики в списъка fcs. Така че, когато използвате метода addRow, ще подадете fc като аргумент.

Ето един пример, който може да помогне за изясняване:

# generic feature class list
feature_classes = ['landuse_a', 'landuse_b', 'misc_fc']

# create a value table
value_table = arcpy.ValueTable(1)

for feature in feature_classes:       # iterate over feature class list
    if feature.startswith('landuse'): # if feature starts with 'landuse'
        value_table.addRow(feature)   # add it to the value table as a row

print(value_table)

>>> landuse_a;landuse_b
person atlasologist    schedule 05.06.2014