Страница 1 из 1
Работа с атрибутивными таблицами
Добавлено: 30 авг 2014, 11:32
destribution
Здравствуйте, уважаемые пользователи!
Быть может создал тему, зря, но не судите строго (обратите внимание на стаж)
В общем проблема заключается в чем...
Имеется таблица с атрибутами, в которой две колонки. Первая содержит несколько повторяющихся значений (к примеру десять значений под номером 1 и десять значений под номером 2). Как автоматически присвоить порядковый номер для этих значений, но только во вторую колонку ?
На практике хочу чтоб получилось так...
1-1
1-2
1-3
1-4
...
2-1
2-2
2-3
2-4
...
Буду очень признателен за помощь.
Re: Работа с атрибутивными таблицами
Добавлено: 30 авг 2014, 17:33
swdartvader
Здравствуйте. Посредством выражения на python, с помощью инструмента "калькулятор поля" ("field calculator...") Вы можете произвести необходимые расчеты
1. Создайте текстовое поле
2. Войдите в калькулятор поля для него
3. Выберите парсер Python
4. Используйте "%s-%s" % (!FID!, !Field!)
где FID - обычно поле с порядковым номером с нуля
Field - второе необходимое поле
"%s-%s" - здесь вы можете заменить "-" на любой другой знак
Если необходимо поле с порядковыми от "1", то вы, в первую очередь, можете создать новое поле, где посредством [FID] + 1 можете их рассчитать
Re: Работа с атрибутивными таблицами
Добавлено: 31 авг 2014, 09:49
destribution
Извиняюсь за оценку, случайно оценил Ваш пост. То что Вы описали, полезная информация, но для требуемой задачи это не совсем то что нужно.
Вероятнее всего я не так изложил ситуацию. Для полной ясности прикладываю скриншот таблицы.
Ещё раз попытаюсь объяснить. Дело в том, что данные для колонки "№" взять негде, а в неё требуется внести порядковый номер, при этом для каждого из значений колонки "KV", он должен начинаться сначало...
В результате вот чего ожидаю...
KV №
1 1
1 2
1 3
1 4
2 1
2 2
2 3
2 4
Re: Работа с атрибутивными таблицами
Добавлено: 31 авг 2014, 10:09
nadiopt
знакомая ситуация
я делаю очень коряво. экспортирую в эксель. потом завожу колонку "да или нет", в ней логическое выражение "kv= [предыдущая строка]". Ну и в колонке номер - Если да, то номер равен предыдущей строке+1. если нет, то номер равен 1. вот как-то так. и подсоединяю назад по FID
Re: Работа с атрибутивными таблицами
Добавлено: 31 авг 2014, 10:14
lam
Re: Работа с атрибутивными таблицами
Добавлено: 31 авг 2014, 12:15
destribution
nadiopt писал(а):знакомая ситуация
я делаю очень коряво. экспортирую в эксель. потом завожу колонку "да или нет", в ней логическое выражение "kv= [предыдущая строка]". Ну и в колонке номер - Если да, то номер равен предыдущей строке+1. если нет, то номер равен 1. вот как-то так. и подсоединяю назад по FID
А вы не могли бы отправить пример excel таблицы ?
Re: Работа с атрибутивными таблицами
Добавлено: 31 авг 2014, 14:50
nadiopt
простите ради Бога за корявость, не нашла правильно написанного кода (когда-то писала, но уже не помню). пока придумался такой костыль:
1) включаем в Эксель стиль формул R1C1 (как на картинке)
2) заводим первую строку "нулевой квартал", иначе не сработает
3) в следующей строке (1 квартал 1 выдел) прописываем в колонке "да или нет" формулу: =RC[-1]=R[-1]C[-1]
4) тянем до низу
5) фильтруем значения "ложь"
6) прописываем номер выдела = 1
7) фильтруем значения "истина"

прописываем в первой строке формулу =R[-1]+1
ну и присобачиваем обратно по FID
Re: Работа с атрибутивными таблицами
Добавлено: 03 сен 2014, 14:04
destribution
Всех благодарю за совет!
Воспользовался методом от nadiopt
nadiopt Вам отдельное спасибо, за столь подробные разъяснения.
Re: Работа с атрибутивными таблицами
Добавлено: 04 сен 2014, 01:42
doujin
На мой взгляд
lam указал более правильное направление для решения этой задачи. Предлагаю (опять таки на мой взгляд) более удобный скрипт на python для калькулятора поля чем тот, что приведен в справке:
Код: Выделить всё
def get_counter(field_value, start_from=1, interval=1, d={}):
start_from -= interval
counter = d.setdefault(field_value, start_from) + interval
d[field_value] = counter
return counter
Он сам учтет разные значения в поле, а еще ему не обязательно, что бы эти значения были сгруппированы и шли подряд.
Вызываем, если нужно начинать с 1 и с шагом 1, так:
Для иного начального значения и шага, например, начиная с 2 и с шагом 3, так:
P.S. Знаю, что предлагаю решение уже после того, как задача решена, но может кому-то в будущем оно пригодится.
Re: Работа с атрибутивными таблицами
Добавлено: 05 сен 2014, 05:32
destribution
Согласен,
lam дал правильное направление, но к сожалению я так и не смог допонять как всё таки выполнить такую операцию. И на этот раз, по вашему предложению не смог использовать указанные выражения.
Вставляю указанные выражения в калькулятор и в ходе обработки возникает ошибка.
Для того чтобы выражение сработао вместо !Field1! подставлял !KV 1!, возможно в этом кроется ошибка ?
Re: Работа с атрибутивными таблицами
Добавлено: 05 сен 2014, 07:45
doujin
Без описания ошибки сложно сказать, что пошло не так.
Возможно, дело в кавычке, которая затесалась в мой код из предыдущего поста. Только сейчас обратил на это внимание и исправил. Досадная оплошность.
Либо вы как-то неправильно вызываете калькулятор.
показал, на что стоит обратить внимание, и куда вносить соответствующий код. Имя поля вы правильно вписали. Больше и не знаю, что предположить.
Re: Работа с атрибутивными таблицами
Добавлено: 06 сен 2014, 06:57
destribution
doujin, отличное решение, всё получилось как надо! В будущем сбережёт много времени и терпения

спасибо
