Jak zmienić kolejność funkcji w pliku kształtu?

18

Mam plik kształtu i chcę zmienić kolejność funkcji. Czy to jest możliwe?

Chcę posortować funkcje w pliku shapefile, ponieważ osadzam ten plik shapefile w aplikacji mobilnej. Aplikacja wyświetli listę funkcji i chociaż mogę sortować w czasie ładowania, wolałbym je posortować.

tato
źródło
4
Cel jest uzasadniony, środek nie. Jeśli potrzebujesz ich posortować, użyj wyniku zapytania, nie zakładaj, że są i pozostaną posortowane.
GuillaumeC

Odpowiedzi:

6

Zawsze możesz otworzyć tabelę atrybutów w ArcMap i kliknąć prawym przyciskiem myszy nagłówek kolumn i wybrać Sortuj rosnąco ... / Malejąco ... dla pojedynczych pól.

W przypadku wielu pól zamiast tego kliknij Zaawansowane sortowanie, aby wybrać wiele pól.

UWAGA: Dodanie, na przykład, sekwencyjnego pola ID opartego na bieżącym sortowaniu (które jest tymczasowe, przechowywane tylko w tej mapie / mxd) podczas korzystania z powyższej metody będzie uporządkowane według oryginalnego OID / ObjectID klasy obiektów.

Dostępny jest ArcScripts, który trwale sortuje rekordy i generuje nowy plik kształtu: http://arcscripts.esri.com/details.asp?dbid=16771

Mam nadzieję, że kiedy podacie „kolejność funkcji”, to jest to kolejność znaleziona w tabeli atrybutów, a nie kolejność rysowania dla poziomów spisu treści / symboli.

SaultDon
źródło
7

Oto rozwiązanie, aby przepisać nowy i posortowany plik kształtu za pomocą narzędzia wiersza polecenia GDAL / OGR ogr2ogr.

Na przykład plik kształtu orig.shpma pole numeryczne volumedo sortowania. Ta konkretna instrukcja SQL wykonuje odwrotne sortowanie (z DESC), dzięki czemu obiekty o dużych volumewartościach są rysowane przed (pod) elementami o małych wartościach:

ogr2ogr -sql "SELECT * FROM orig ORDER BY volume DESC" sorted.shp orig.shp
Mike T.
źródło
5

Jeśli masz dostęp do licencji arcinfo, możesz użyć opcji Sortuj w (przyborniku do zarządzania danymi), która zapisuje rekordy w nowym pliku kształtu lub sortowaniu przestrzennym lub atrybutowym opartym na gdb fc

gotchula
źródło
niestety działa z FGDB, a nie z kształtami
tato
1
tato, narzędzie działa z fgdb lub shapefile jako wejściem i wyjściem, nie mam pojęcia, co oznacza twój komentarz powyżej.
gotchula
2

Bardzo, bardzo SZYBKA i łatwa metoda sortowania warstwy pliku kształtu (przy użyciu różnych pól).

1 - Eksportuj plik kształtu do CSV (wybierz dobry separator, np. Średnik) i dodaj GEOMETRIĘ, używając „opcji warstw” -> „AS WKT”

wprowadź opis zdjęcia tutaj

2 - Otwórz plik.csv za pomocą LIBREOFFICE (calc) i użyj MENU-> DANE-> SORT (bardzo intuicyjny, wydajny i BARDZO SZYBKI (Sortuj w locie 50000 funkcji za pomocą 3 kolumn, takich jak klucz sortowania, opcje rosnące i malejące oraz i mieć bardzo wolny notatnik;))

3 - Zapisz ponownie plik z LIBREOFFICE (calc) jako „Tekst CSV” (zaznacz „Edytuj ustawienia filtra” i wybierz separator jako „średnik”, nie ważne ostrzeżenie z libreoffice, zapisz jak CSV i wybierz „średnik” jako separator)

4 - W Qgis otwórz nowy plik.csv (i posortowany) z menu „Dodaj warstwę” -> Dodaj warstwę tekstową ogranicznika.

Wady: - Bardzo, bardzo szybkie, sortowanie z różnych pól - Działa poprawnie z danymi zakodowanymi w UTF_8

Wady: - Potrzebujesz LIBREOFFICE (ale czy to oprogramowanie typu open source)

Alternatywna metoda sortowania (punkty 2 i 3, które są najszybsze) za pomocą konsoli (BASH)

  • Otwórz konsolę i przejdź tam, gdzie masz plik.csv

    Załóżmy, że chcesz sortować plik za pomocą klucza:

    field6 (desc) + field1 (ascen) + field3 (desce)

    więc polecenie będzie:

    sort -t ';' -k6,6r -k1,1 -k3,3r plik.csv> plik_sort.csv

    UWAGI:

    • możesz dodać -kn, n dla każdego numeru kolumny „n” (pole), którego potrzebujesz, dodać do swojego „klucza sortowania”
    • dodawanie „r” po każdym n, n będzie sortować w trybie wstecznym (opadanie)
    • Musi przekazać separator znaków użyty do pliku csv z opcją -t param
Juanma Font
źródło
Alternatywna metoda sortowania bez LibreOffice przy użyciu bash (konsola):
Juanma Font
-3
  1. Eksportuj dane jako csv
  2. Otwórz w programie Excel przejdź do Dane ---- Sortuj --- Rozwiń zaznaczenie i gotowe
użytkownik102129
źródło