Сравнение значений в атрибутах

0 голосов
спросил 01 Дек, 10 от azot101 (460 баллов) в категории Программные продукты Esri
Вопрос такой: как сравнивать атрибуты разных строк и соответственно писать какие либо зависимости от них в Field Calculator

Например хорошая функция по созданию идентификатора от пользователя Almaz
Static rec As Long
Static i As Long
Dim lStart As Long
Dim lInterval As Long
lStart = 1
lInterval = 1
If (i = 0) Then
rec = lStart
Else
rec = rec + lInterval
End If
i = i + 1

    

10 Ответы

0 голосов
ответил 01 Дек, 10 от TDenis (42,620 баллов)
Вопрос такой: как сравнивать атрибуты разных строк и соответственно писать какие либо зависимости от них в Field Calculator

Создавать курсор, проходить по всем записям.

Чтобы что-то более-менее серьёзное писать в окошечке калькулятора, надо быть знатным мазохистом.
Лучше делать хотя бы во встроенном редакторе макросов. Или вообще в Visual Studio.
0 голосов
ответил 01 Дек, 10 от azot101 (460 баллов)
Я писал в VBA, модуль который ищет повторяющиеся атрибуты, но, если перебирать все атрибуты, то выходит слишком долго, так например при количестве записей 300 он все считал мне за 2-3 минуты, при записи в 500 уже 5-7 мин и так далее. В то время как в Мапинфо есть такой оператор который за 5 сек может подсчитать до нескольких тысяч записей...может есть специальные операторы?
0 голосов
ответил 01 Дек, 10 от TDenis (42,620 баллов)
Не удивлюсь, если ваш модуль для каждой записи запускал перебор всех записей. И в результате Вы получили сложность O(n^2).
Программист Mapinfo, возможно, поступал чуть лучше. Например использовал словарь.
0 голосов
ответил 01 Дек, 10 от Nadiia (2,040 баллов)
возможно не очень красивый метод Ouch, но удобный для тех, кто не дружит с VBA. В случаях, когда нужно обработать большое количество атрибутов,  я открываю таблицу  в excel и уже там провожу все манипуляции, потому что  Field calculator не всегда удобен.
Для повторяющихся атрибутов я бы использовала Conditional formatting (кажется, в русской версии это условное форматирование) -  Hilight cells rules - Duplicate values , а там уже выбрать duplicate или unique. Потом фильтром выбираю по цвету нужные (уникальные или дублирующиеся атрибуты) и обрабатываю их.
Сохраняю эту табличку, а затем делаю JOIN к таблице в Arc'e.



0 голосов
ответил 01 Дек, 10 от azot101 (460 баллов)
Я думаю может такой "словарь" и есть в ArcGIS. Так как например когда выбираешь у слоя закладку Simbology\Categories\Uniqque values и далее у отображается табличка:Symbol....и в конце Count, который пишет ( мгновенно) количество совпадающих значений, может можно как-то этот Count "вытащить"?
0 голосов
ответил 01 Дек, 10 от azot101 (460 баллов)
С вопросами по экспорту данных в Exсel-не мало тонкостей, так как у меня вообще через раз выдает кракозябры (кодировка летит), надо оптимальную методику придумать((
0 голосов
ответил 02 Дек, 10 от lena (4,240 баллов)
<blockquote>может можно как-то этот Count "вытащить"?</blockquote>Возможно функция суммировать (summarized) подойдет?
0 голосов
ответил 03 Дек, 10 от dsavitskiy (10,720 баллов)
Я писал в VBA, модуль который ищет повторяющиеся атрибуты, но, если перебирать все атрибуты, то выходит слишком долго, так например при количестве записей 300 он все считал мне за 2-3 минуты, при записи в 500 уже 5-7 мин и так далее. В то время как в Мапинфо есть такой оператор который за 5 сек может подсчитать до нескольких тысяч записей...может есть специальные операторы?

Frequency из тулбокса чем не устроил?

    
0 голосов
ответил 07 Дек, 10 от azot101 (460 баллов)
Спасибо, хороший тулс) Но не все позволяет сделать(
0 голосов
ответил 07 Дек, 10 от azot101 (460 баллов)
Спасибо, хороший тулс) Но не все позволяет сделать(
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...