Mehr

Sortierpunkte nach Hoch- und Rechtswert

Sortierpunkte nach Hoch- und Rechtswert


Ich habe ungefähr 1320 Punkt-/Schwerpunkt-Features in einem Shapefile für meine Forschungsdiagramme. Jedem Punkt/Schwerpunkt sind X- und Y-Koordinate zugeordnet, die mit berechnet wurden Feldrechner > Geometrie > $X $Y in QGIS. Derzeit sind die Referenz-IDs in keiner bestimmten Reihenfolge. Aber schließlich möchte ich eine neue Attributspalte in der im folgenden Bild gezeigten Reihenfolge erstellen. .

Zuerst habe ich versucht, meine Punkte nach X und Y zu sortieren (wobei ich jeweils 10 aufeinanderfolgende Punkte ausgewählt habe), aber da nicht alle Punkte in einer einzelnen Reihe auf derselben Nord- oder Ostlinie liegen, war die Plotreihenfolge nicht richtig .

Daher würde ich gerne wissen, ob es eine saubere Möglichkeit gibt, diese Punkte räumlich (X und Y) zu sortieren und dann eine Sequenz-ID in der im Bild gezeigten Reihenfolge zuzuweisen.


Es ist vielleicht nicht der "ordentliche Weg", nach dem Sie gefragt haben, aber ich würde dies tun, wenn ich viele Punkte habe (aber Sie haben nur 1400 (c) Punkte).

  1. Trennen Sie jeden Block (in Ihrem Bild gibt es drei Blöcke) mit dem Arcmap-Fischnetzwerkzeug oder anderen.
  2. Führen Sie nun die folgende Operation für jeden Block aus (für Ihr Bild der ganz rechte Block, in dem 90 Punkte vorhanden sind)
  3. Führen Sie das Sortierwerkzeug aus, verwenden Sie das Feld "Form" mit "Aufsteigend" und wählen Sie als erstes "UR" und als zweites "Absteigend" mit derselben anderen Einstellung aus. Dadurch werden zwei Feature-Classes erstellt, eine davon "von links nach rechts" und "von oben nach unten". "Right to Left" und "Bottom to Top" in Bezug auf die Feature-Ausrichtung.

  4. Weisen Sie nun jeder Zeile ein Attribut zu - Sie können den folgenden Feldrechnercode verwenden (dies fügt 1,2,3 usw. für jede Spalte hinzu, z. B. alle Punkte in einer Zeile mit dem Attributwert eins.).

    flg = 0 def x(f):## Wobei f die Objekt-ID eines sequentiellen Feldes ist global flg if math.fmod(int(f),38)==1.0: ## für meinen Fall ist 38 der Punkt in jeder Zeile flg+ =1 Rückkehr flg sonst: Rückkehr flg
  5. Löschen Sie dann die mit "Ungerade" gekennzeichneten Zeilen aus der Feature-Class "Aufsteigend" und "Gerade" aus der Feature-Class "Absteigend" (Sie haben zwei Feature-Classes mit entgegengesetzter Richtung, aber das Attribut ändert sich nicht)

  6. Führen Sie nun das Werkzeug "Zusammenführen" für diese beiden Feature-Classes aus, die die ursprüngliche Feature-Class zurückgeben, aber damit "ZICKZACK" Richtung.

  7. Wenden Sie diese Methoden für andere Blöcke an.

Hinweis All dies kann mit besserem Verständnis automatisiert werden