Berechnen Sie mit QGIS die Rahmenkoordinaten eines ausgewählten Polygons

17

Ich habe die Begrenzungsrahmenkoordinaten für ein County-Polygon, das eine Auswahl aus einer größeren Ebene von County-Formen darstellt, nur manuell abgerufen (und bin mir etwas ungenau sicher). Ich möchte in der Lage sein, ein QGIS-Plugin oder eine andere Funktion zu verwenden, um dies schnell und nicht von Hand zu berechnen. Dies ist mit ziemlicher Sicherheit möglich, aber ich konnte mit einer Google-Suche nichts finden

boulder_ruby
quelle

Antworten:

26

Die folgende kleine Python-Funktion gibt die Begrenzungsrahmenkoordinaten des derzeit aktiven Features aus:

def printBB():
    feature = iface.activeLayer().selectedFeatures()[0]
    print feature.geometry().boundingBox().toString()

Um die Funktion zu definieren, öffnen Sie die Python-Konsole über das Plugins-Menü, kopieren Sie die drei Zeilen, fügen Sie sie in die Konsole ein und drücken Sie die Eingabetaste. Anschließend können Sie die Funktion aufrufen, printBB()indem Sie die Eingabetaste drücken, während die gewünschte Funktion ausgewählt ist.

Jake
quelle
1
Ich erhalte diese Fehlermeldung, wenn ich versuche, dieses Skript File "<input>", line 4 printBB() ^ SyntaxError: invalid syntax
auszuführen
@cbunn stellen Sie sicher, dass Sie die Ebene im Ebenen / Inhaltsverzeichnis ausgewählt haben - es ist sehr empfindlich dafür!
DPSSpatial,
Danke für die Hilfe. Ich hatte auch vergessen, die Eingabetaste zu drücken, um die Funktion printBB () vollständig zu definieren, bevor ich sie aufrief.
Cbunn
2
Ich musste Verwendung print (feature.geometry () boundingBox () toString ()..) Für die Linie 3
CM1
16

QGIS kann dies über Polygon von Layer Extent aus tun

Vektor - Forschungswerkzeuge - Polygon von der Schicht-Ausdehnung

Erzeugt ein neues Shapefile mit Attributen wie XMIN XMAX YMIN YMAX AREA WIDTH HEIGHT

Jorge Santos
quelle
1
Sie müssen überprüfen Use only selected obectsund calculate for every objectdas gewünschte Ergebnis erhalten.
AndreJ
hmm, das hat bei mir nicht funktioniert, das ausgegebene Shapefile war im Wesentlichen leer
boulder_ruby
1
Sie möchten "Nur ausgewählte Objekte verwenden" nur aktivieren, wenn Sie Objekte ausgewählt haben. Ich habe beide Felder deaktiviert und ein gutes Ergebnis erzielt.
Johanna
4

Sie können dies auch mit dem PyShp-Plugin in Python tun. Es ist viel einfacher ...

import shapefile

sf = shapefile.Reader("Path to shapefile...") 
shapes = sf.shapes() 
bbox = shapes[0].bbox # Retrieves the bounding box of the first shape

print bbox # Will print the bounding box coordinates

Weitere Informationen zu PyShp und anderen Funktionen finden Sie hier .

Akhil
quelle
3

Wenn Sie viele Begrenzungsrahmen für Polygone benötigen, können Sie Ihren Layer mit der Option WRITE_BBOX = YES in GeoJSON "Speichern unter ...". Sogar für Multipolygone wird ein einzelnes Attribut "bbox" vor Ihrem Attribut "geometry" angezeigt.

..., "bbox": [ -70.062408006999874, 12.417669989000046, -69.876820441999939, 12.632147528000104 ], "geometry": ...
thadk
quelle
1

Ich musste dies tun, um ein Feld zu generieren, das ich als Liste an anderer Stelle importieren konnte.

  1. Installieren Sie das QGIS-Plugin FieldPyculator
  2. Schaltet die Bearbeitung der Ebene um
  3. Neue Spalte in der Attributtabelle als String anlegen, zB bbox (Änderungen speichern)
  4. Öffnen Sie den FieldPyculator
  5. Setze Update Field auf bbox
  6. Geben Sie in Feldausdruck Folgendes ein:

    bb = $geom.boundingBox().toString()

    bb = bb.replace(' ','')

    bb = bb.replace(':',',')

    value = bb

  7. Lauf

  8. Deaktivieren Sie die Bearbeitung und speichern Sie die Ebene
Ben
quelle
1

Für einen schnellen Zugriff können Sie die bbox-Koordinaten in der Attributtabelle behalten.

  • Toogle-Bearbeitungsmodus
  • Starten Sie den Feldrechner
  • Set erstelle neues Feld, set Name (zB xmin), Typ (dezimal), Länge, (Genauigkeit)
  • Ausdruck: x_min ($ geometry)
  • Sie erhalten ein neues Feld in der Attributtabelle mit der LINKEN Koordinate.

    Wiederholen Sie dies für RECHTS, UNTEN, OBEN mit den folgenden Ausdrücken:

  • x_max ($ geometry)
  • y_min ($ geometry)
  • y_max ($ geometry)
  • Beispiel für das Ergebnis Bildbeschreibung hier eingeben

    Sie können dann das AutoFields-Plugin so einstellen, dass diese Felder automatisch aktualisiert werden, wenn die Funktion geändert wird.

    jurajb
    quelle