Czy istnieje sposób przypisania numeru wiersza do posortowanej tabeli według kolumny w QGIS?

13

Kalkulator pola ma świetną funkcję pod „Rekordy” o nazwie „$ rownum”, która zwraca (przypisuje) numer bieżącego wiersza.

Czy istnieje sposób, aby współpracować z sortowaniem? Powiedzmy, że chcę posortować tabelę według kolumny „długość” i uzyskać porządek (sekwencję) wierszy według długości od najkrótszej do najdłuższej.

Wiem, że mogę łatwo korzystać z oprogramowania biurowego arkusza kalkulacyjnego do sortowania według kolumn i wypełniania nowej kolumny kolejnością (sekwencją). Ale wolałbym wykonać całą pracę w QGIS.

Aktualizacja: W celu obejścia tego problemu można również zmienić kolejność funkcji w pliku kształtu? - używając wtyczki mmqgis i funkcji modyfikacji / sortowania, a następnie użyj „$ rownum” na nowym zapisanym pliku.

Miro
źródło

Odpowiedzi:

20

Więc napisałem wtyczkę ( Sortuj i Numeruj ), aby rozwiązać Twój problem. Pozwala wybrać do 3 pól i uporządkować tabelę atrybutów zgodnie z tymi polami. Następnie numeruje tabelę atrybutów w nowym polu (domyślnie nazywanym „porządkiem”), zaczynając od 1.

wprowadź opis zdjęcia tutaj

ArMoraer
źródło
To wygląda niesamowicie. Mam zamiar przetestować teraz tę wtyczkę, dziękuję.
Miro
Po pierwszej instalacji w wersji 2.8 pojawił się błąd, ale po teście w wersji 2.14 i wersji 2.8 działa doskonale. Dziękuję Ci.
Miro
@Miro: nie ma za co. Mam nadzieję, że przyda się także innym ludziom.
ArMoraer
@ArMoraer - Świetna wtyczka!
Joseph
1
Czy potrafisz przekodować to dla Bonn 3 -> uwielbiałem to narzędzie!
lowsparked
7

Nie jestem pewien, czy potrafisz z kalkulatorem pola, ale możesz użyć wirtualnej warstwy z zapytaniem:

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
źródło
Dziękuję, wciąż pracuję z długoterminową wersją 2.8, więc po raz pierwszy odkryłem wirtualną warstwę w 2.14. Poza tym działało bardzo, bardzo wolno. Zasadniczo jest to do przyjęcia, ale zamierzam poczekać jeszcze trochę na inne odpowiedzi, jeśli w ogóle.
Miro