Wie ändere ich die Reihenfolge der Features in einem Shapefile?

18

Ich habe ein Shapefile und möchte die Reihenfolge der Features ändern. Ist das möglich?

Ich möchte die Features im Shapefile sortieren, da ich dieses Shapefile in eine mobile App einbetten möchte. Die App zeigt eine Liste der Funktionen an, und obwohl ich die Sortierung beim Laden durchführen könnte, würde ich es vorziehen, sie zu sortieren.

tato
quelle
4
Das Ziel ist legitim, der Mittelwert nicht. Wenn Sie sie sortiert benötigen, verwenden Sie das Ergebnis einer Abfrage. Gehen Sie nicht davon aus, dass sie sortiert sind und bleiben.
GuillaumeC

Antworten:

6

Sie können die Attributtabelle jederzeit in ArcMap öffnen, mit der rechten Maustaste auf die Spaltenüberschrift klicken und für einzelne Felder Aufsteigend ... / Absteigend ... sortieren auswählen.

Bei mehreren Feldern klicken Sie stattdessen auf Erweiterte Sortierung, um mehrere Felder auszuwählen.

ANMERKUNG: Das Hinzufügen eines sequentiellen ID-Felds basierend auf der aktuellen Sortierung (die temporär ist und nur in dieser Map / mxd gespeichert wird) bei Verwendung der obigen Methode wird nach der ursprünglichen OID / ObjectID der Feature-Class sortiert.

Es ist ein ArcScripts verfügbar, das Datensätze permanent sortiert und ein neues Shapefile ausgibt: http://arcscripts.esri.com/details.asp?dbid=16771

Ich hoffe, wenn Sie die Reihenfolge der Features angeben, ist dies die Reihenfolge in der Attributtabelle und nicht die Zeichenreihenfolge für das Inhaltsverzeichnis / die Symbologieebenen.

SaultDon
quelle
7

Hier ist eine Lösung zum Umschreiben eines neuen und sortierten Shapefiles mit dem GDAL / OGR-Befehlszeilentool ogr2ogr.

Ein Shapefile orig.shpverfügt beispielsweise über ein numerisches Feld, volumenach dem sortiert werden kann. Diese spezielle SQL-Anweisung führt eine umgekehrte Sortierung (mit DESC) durch, sodass Features mit großen volumeWerten vor Features mit kleinen Werten (darunter) gezeichnet werden:

ogr2ogr -sql "SELECT * FROM orig ORDER BY volume DESC" sorted.shp orig.shp
Mike T
quelle
5

Wenn Sie Zugriff auf eine arcinfo-Lizenz haben, können Sie die Option " Sortieren" in der (Toolbox "Datenverwaltung") verwenden, mit der die Datensätze in neue Shapefiles oder GDB-fc-basierte räumliche oder Attributsortierungen geschrieben werden

Gotchula
quelle
Leider funktioniert es mit FGDB, nicht mit Shapes
tato
1
tato, das tool arbeitet mit fgdb oder shapefile als eingabe und ausgabe, ich habe keine ahnung was dein kommentar oben bedeutet.
Gotchula
2

Eine sehr, sehr SCHNELLE und einfache Methode zum Sortieren einer Shapefile-Ebene (unter Verwendung verschiedener Felder).

1 - Shapefile nach CSV exportieren (gutes Trennzeichen wie Semikolon auswählen) und GEOMETRIE über "Ebenenoptionen" -> "AS WKT" hinzufügen

Bildbeschreibung hier eingeben

2 - Öffnen Sie file.csv mit LIBREOFFICE (calc) und verwenden Sie MENU-> DATA-> SORT (sehr intuitiv, leistungsstark und SEHR SCHNELL) habe ein sehr langsames notebook;))

3 - Datei aus LIBREOFFICE (calc) erneut als "Text CSV" speichern ("Filtereinstellungen bearbeiten" markieren und Trennzeichen als "Semikolon" auswählen, keine Warnung aus libreoffice, wie CSV speichern und "Semikolon" als Trennzeichen auswählen)

4 - Öffnen Sie in Qgis die neue Datei ".csv" (und sortieren Sie sie) über das Menü "Ebene hinzufügen" -> Trennzeichen-Textebene hinzufügen.

PROS: - Sehr, sehr schnell, sortiere aus verschiedenen Bereichen - Funktioniert einwandfrei mit UTF_8-codierten Daten

Nachteile: - Brauchen Sie LIBREOFFICE (aber ist es Open-Source-Software)

Alternative Methode zum Sortieren (Punkte 2 und 3 ersetzen und am schnellsten) mit der Konsole (BASH)

  • Öffnen Sie die Konsole und gehen Sie dorthin, wo Sie file.csv haben

    Angenommen, Sie möchten die Datei mit dem Schlüssel sortieren:

    feld6 (ab) + feld1 (auf) + feld3 (ab)

    So lautet der Befehl:

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

    ANMERKUNGEN:

    • Sie können -kn, n für jede Spaltennummer 'n' (Feld), die Sie benötigen, zu Ihrem "Sortierschlüssel" hinzufügen.
    • Hinzufügen von 'r' nach jedem n, n wird in umgekehrter Reihenfolge sortiert (absteigend)
    • Muss das verwendete Zeichentrennzeichen mit -t param in die csv-Datei übergeben
Juanma Font
quelle
Alternative Methode zum Sortieren ohne LibreOffice mit bash (Konsole):
Juanma Font
-3
  1. Daten als CSV exportieren
  2. Mit Excel öffnen gehe zu Daten ---- Sortieren --- Auswahl erweitern und fertig
user102129
quelle