Есть ли способ назначить номер строки для отсортированной таблицы по столбцу в QGIS?

13

Полевой калькулятор имеет отличную функцию в разделе «Записи» под названием «$ rownum», которая возвращает (присваивает) номер текущей строки.

Есть ли способ заставить его работать вместе с сортировкой? Допустим, я хочу отсортировать таблицу по столбцу «длина» и получить порядок (последовательность) строк по длине от самой короткой до самой длинной.

Я знаю, что могу легко использовать некоторые офисные программы для работы с электронными таблицами, чтобы сортировать по столбцам и заполнять новые столбцы порядком (последовательностью). Но я бы предпочел сделать всю работу в QGIS.

Обновление: В качестве обходного пути есть также Как изменить порядок объектов в шейп-файле? - используя плагин mmqgis и функцию modify / sort и после этого используйте «$ rownum» в новом сохраненном файле.

Miro
источник

Ответы:

20

Итак, я написал плагин ( Sort and Number ) для решения вашей проблемы. Это позволяет вам выбрать до 3 полей и упорядочить таблицу атрибутов в соответствии с этими полями. Затем он нумерует таблицу атрибутов в новом поле (по умолчанию называется "order"), начиная с 1.

введите описание изображения здесь

ArMoraer
источник
Это выглядит потрясающе. Я собираюсь протестировать этот плагин сейчас, спасибо.
Миро
При первой установке в 2.8 возникла ошибка, но после тестирования в 2.14 и обратно в 2.8 все работает отлично. Спасибо.
Миро
@Miro: пожалуйста. Я надеюсь, что это будет полезно и для других людей.
ArMoraer
@ArMoraer - Отличный плагин!
Джозеф
1
Можете ли вы перекодировать это для Бонна 3 -> я любил этот инструмент!
низким искром
7

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

SELECT 
    * ,
    (SELECT count(*) FROM your_layer AS b WHERE a.length >= b.length) AS length_position
FROM your_layer AS a 
ORDER BY a.length
Pierma
источник
Спасибо, я все еще работаю с долгосрочным выпуском 2.8, поэтому я впервые обнаружил виртуальный слой в 2.14. Помимо этого было очень очень очень медленно это работает. Как правило, это приемлемо, хотя я собираюсь немного подождать, чтобы найти другие ответы, если таковые имеются.
Миро