Відповіді:
Насправді дуже простий трюк. Припустимо, ви хочете спершу сортувати за полем "А", а потім за полем "В" в межах "А". Першим клацанням лівою кнопкою миші на заголовок поля "В" (клацніть один раз для зростання сортування, другий раз для спадання) в таблиці атрибутів. Потім клацніть лівою кнопкою миші на заголовку поля "А" (один раз для ASC, другий раз для DESC). Ця остання дія буде сортувати поле "А", зберігаючи сортування поля "В" в межах однакових значень "А". Спробував його з 3-х полів, і він також працює (тоді набридло). Я використовую QGIS 3.6.3-Noosa.
Ви можете використовувати плагін сортування та числа . Це дозволяє сортувати таблицю атрибутів до трьох полів, потім створює додаткове поле, яке містить порядок відсортованих функцій.
Відмова: Я є автором плагіна.
sort()
функцію Python , мені цікаво, чому це так повільно. Я спробую знайти якийсь трюк, щоб прискорити процес у майбутній версії.
Якщо все добре, щоб зберегти результат назавжди, ви можете сортувати файл форми за допомогою GDAL
ogr2ogr -f "ESRI Shapefile" -dialect sqlite -sql "SELECT *
FROM my_shapefile ORDER BY attr_1, attr_2, attr_3" sorted.shp my_shapefile.shp
Знадобилося менше ніж 3 хвилини, щоб мати форму форми, що містить мільйон багатокутників.
Тепер плагін DB Manager в QGIS має вузол "Віртуальний рівень", який дозволяє записувати команди SQL проти форм-файлів, завантажених у ваш проект QGIS.
Отже, тепер, коли ви маєте цю здатність, логіка SQL для сортування за кількома полями знаходиться в операторі ORDER BY, використовуючи asc (зростаючий), desc (спадаючий), і ви можете об'єднати їх для сортування за кількома стовпцями:
Додатковим бонусом є те, що ви дізнаєтесь більше SQL, тож, коли ви захворієте на форм-файли та більшість з PostGIS, стрибок не буде таким великим !!!
Тепер це можна зробити без будь-яких плагінів або роботи з базою даних, принаймні для версії 3.2+. Щоб сортувати за кількома стовпцями:
concat()
разом із полями, за якими потрібно сортувати, у відповідному порядку (напр.concat("column1", "column2")
). Під кодом повинен бути показаний попередній попередній перегляд.Ця функціональність була додана через випуск № 1137 та висвітлена в останній (розробці) версії керівництва користувача .
concat("col1", right( ('000' || tostring( "col2" )), 4))
Що ж, це 2018 рік, тому я не можу повірити, що на це ще не відповіли.
Відкрийте подання таблиці атрибутів і клацніть правою кнопкою миші на будь-якому стовпці, а потім виберіть Сортувати ...
Діалогове вікно Налаштування порядку сортування таблиці атрибутів зараз відкрито і з редактором повних виразів
Використовуйте функцію COALESCE з потрібними стовпцями, наприклад, це буде сортувати таблицю за 3 стовпцями (спочатку за ідентифікатором, а потім за VERSION, а потім fid)
coalesce("ID","VERSION","fid" )
Натиснувши кнопку ОК, ви сортуєте таблицю
Ви не можете (принаймні, не зараз). Вибачте!
Дивіться документацію QGIS і прокрутіть вниз до останнього рядка.
Неприємною проблемою було б втягнути DBF Shapefile в Excel. Сортуйте його там і збережіть результат. Крім того, імпортуйте ваш Shapefile у PostGIS або SpatialLite, де ви маєте більшу функцію сортування. В основному вам доведеться обійти QGIS для розширеного сортування.
Як запропонував @Sylvester Sneekly, якщо ваші дані завантажуються в такі RDBMS, як PosGIS або SpatialLite, ви можете розглянути можливість створення перегляду бази даних у RDBMS, яка призначає табличні дані, а потім завантажте зібраний вид у QGIS як шар.