Автоматичне створення атрибутів за допомогою 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()

Потім натисніть кнопку ОК, і ви побачите значення попереднього перегляду:

Попередній перегляд

Натисніть кнопку ОК , Застосувати і т. Д. І тепер, сподіваємось, коли ви створите функцію, вона автоматично створить унікальний ідентифікатор у вибраному вами полі.



3

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

  • після закінчення створення ваших функцій перейдіть до таблиці атрибутів
  • Перейдіть до польового калькулятора і створіть новий стовпець, який називається idтипу Int
  • Вставте значення, @row_numberяке дасть унікальні вали відповідно до номера рядка
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.