Генерация атрибутов в автоматическом режиме с QGIS?

11

Я хочу автоматически создавать идентификаторы при создании новых функций. Поэтому каждый раз, когда я создаю новую точку, ее идентификатор будет увеличиваться на 1, как показано ниже:

Feature 1: id 1
Feature 2: id 2
Feature 3: id 3

Как я могу атаковать это?

парень
источник

Ответы:

8

Если вы щелкнете правой кнопкой мыши по своему слою и перейдете к Properties > Fieldsзатем щелкните по Text Edit, вы можете установить значения по умолчанию (введя значение или используя выражение), которые будут автоматически отображаться в таблице атрибутов.

К сожалению, использование выражения вроде $rownum(которое должно дать вам уникальные идентификаторы для ваших функций) не работает (я полагаю, потому что функция должна быть зафиксирована первой?). Но мы можем создать функцию, которая подсчитывает количество выполненных функций и добавляет 1. Вы можете получить доступ к редактору функций, как показано на рисунке:

Редактор функций

Затем в редакторе функций создайте новый файл или отредактируйте существующий и используйте следующий код:

from qgis.core import *
from qgis.gui import *

@qgsfunction(args='auto', group='Custom')
def update(feature, parent):
    layer = qgis.utils.iface.activeLayer()
    x = layer.featureCount()
    return x + 1

Нажмите « Загрузить», затем перейдите на вкладку « Выражение » рядом с ней и вставьте выражение:

update()

Затем нажмите OK, и вы должны увидеть значение предварительного просмотра:

предварительный просмотр

Нажмите « ОК» , « Применить» и т. Д., И теперь, надеюсь, когда вы создадите функцию, она автоматически создаст уникальный идентификатор в выбранном вами поле.

Джозеф
источник
6

Вы можете использовать плагин «AutoFields» для автоматического обновления атрибутов при создании или изменении векторных объектов

Даниэле Пикколо
источник
3

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

  • когда вы закончите создание ваших функций, перейдите в таблицу атрибутов
  • Перейдите в калькулятор полей и создайте новый столбец с именем idтипа Int.
  • В качестве значения вставьте, @row_numberчто даст уникальные вейлы в соответствии с номером строки
LaughU
источник