2013-04-16 1 views
1

Я ищу для создания скрипта/инструмента GP с помощью ArcPy, который позволяет пользователю отправлять таблицу для загрузки в существующий класс объектов (по существу, добавить/insert type of operation. Однако мне хотелось бы, чтобы таблица была «проверена» для дубликатов: в этом случае дубликаты определяются конкатенацией нескольких полей для создания уникального идентификатора.Вставка курсора ArcPY с проверкой данных или функцией «удалить дубликаты»

Выполняя мой предварительный поиск здесь , это было довольно близко: Removing duplicates before inserting into database

Цель может быть таблицей SQL, но все предлагаемые решения относятся к запросам в SQL. Моему решению необходимо b e на основе Интернета, и мне больше всего нравится Python. Есть ли способ опубликовать базовые запросы/ограничения/индексы БД, как предлагается в приведенной выше ссылке через ArcPy/Python?

ответ

0

Этот вопрос немного расплывчатый. Вам нужно убедиться, что добавление табличных данных в класс пространственных объектов имеет смысл, но есть несколько способов приблизиться к этому. Я предполагаю, что вы используете 10.x ArcGIS (т. Е. Дуги, а не gp).

Вы можете использовать

arcpy.Frequency_analysis(in_table, out_table, frequency_fields;frequency_fields..., {summary_fields;summary_fields...}) 

, а затем посмотреть, если есть какие-либо записи, где частота превышает 1, может быть, используя что-то вроде:

arcpy.MakeTableView_management(out_table, 'out_tableTV', '"FREQUENCY" > 1') 
numEvents=int(arcpy.GetCount_management('out_tableTV')) 
if numEvents > 0: 
    print 'duplicates' 

В качестве альтернативы, вы можете извлечь свои значения в список питона объект, создайте набор из этого (который исключает дубликаты), а также сравните список и задайте объекты.

>>> x=[1,2,1] 
>>> type(x) 
<type 'list'> 
>>> y=set(x) 
>>> type(y) 
<type 'set'> 
>>> y 
set([1, 2]) 
>>> if x!=y: 
...  print 'duplicates exist' 
...  
duplicates exist 
Смежные вопросы