ArcPy: при создании новой таблицы выберите столбец со значением B, если значение в столбце A = x - PullRequest
0 голосов
/ 13 марта 2019

Я новичок в arcpy и пытаюсь создать новую таблицу из существующей таблицы.Я хочу создать таблицу: если type_1 равно H, экспортируйте значения, содержащиеся в comment_1.

Входной слой / таблица атрибутов:

Number  type_1  value_1   comment_1   type_2    value_1   comment_2
23587   H                   abcdef     xyz                something
13878   P                   sdferw     H                  jldoeroslj
156798  Y                   eiroeow    H                  dfadfsdf

Выходная таблица:

Number  comment_1          comment_2
23587   abcdef
13878                      jldoeroslj
156798                     dfadfsdf

Я попробовал следующее, но вывод не то, что я ищу:

import arcpy

keepFieldList = ('Number', 'comment_1','comment_2')
Trees = "layername"
fieldInfo=""
fieldList = arcpy.ListFields(layername)

for field in fieldList:
    if field.name not in keepFieldList:
        fieldInfo = fieldInfo + field.name + " " + field.name + " HIDDEN;"

arcpy.MakeFeatureLayer_management("layername", "outputlayer", "", "",
                                  fieldInfo)

1 Ответ

0 голосов
/ 17 марта 2019

Вы можете скопировать шейп-файл, а затем перебрать строки в этом скопированном файле, удалив строки, которые не соответствуют вашим условиям:

import arcpy
input_shp = r'C:\Users\path\whatever.shp'
copy_shp = r'C:\Users\path\myfiltered.shp'
arcpy.CopyFeatures_management(input_shp, copy_shp)
with arcpy.da.UpdateCursor(copy_shp, 'type_1') as cursor:
        for row in cursor:
                if row[0] != 'H':
                    cursor.deleteRow()

или другим способом, если вам нужно сделать это дляво многих комбинациях полей и строк используется выражение SQL, удаляющее в скопированном файле строки, которые не соответствуют вашему условию:

import arcpy
input_shp = r'C:\Users\path\whatever.shp'
copy_shp = r'C:\Users\path\myfiltered.shp'
fieldname = 'type_1'
keepValue = 'H'
sql = fieldname + " <> " + "'" + str(keepValue) + "'"
with arcpy.da.UpdateCursor(copy_shp, fieldname, sql) as cursor:
    for row in cursor:
        cursor.deleteRow()

и, наконец, третий способ описан здесь

но, как сказал @PolyGeo, форум по обмену стеками ГИС намного лучше для вопросов ГИС

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...