Berechnung von Polygonflächen in QGIS?

72

Wie berechne ich Flächen eines Flächen-Shapefiles in Quadratmetern oder in Hektar (ha)?

Diese Funktionalität habe ich in den Vektorwerkzeugen nicht gefunden.

desputin
quelle
Folgefrage: Ich habe eine Ebene in State Plane NAD83. Wenn ich diese Befehle verwende, wird der Bereich in Fuß erstellt. Was ist, wenn ich Hektar oder Quadratmeilen haben möchte? Danke
C_K
Die beiden Antworten funktionieren, sind jedoch etwas langsam zu implementieren, insbesondere wenn versucht wird, den Bereich vieler Polygonvektordateien zu bestimmen. Gibt es kein Plug-In oder eine andere Möglichkeit, um den Bereich eines Polygons zu ermitteln, indem Sie einfach mit der rechten Maustaste auf das Polygon klicken? Die angegebenen Antworten erhalten ein neues Feldattribut (dh area), der Wert wird jedoch nicht aktualisiert, wenn das Polygon geändert wird. In vielen Fällen ist es daher nicht erforderlich, den Bereich in einem separaten Feldattribut anzuzeigen. Wenn der Bereich nur als Zahl in einem kleinen Diagramm, am unteren Rand der Seite usw. angezeigt werden könnte, wäre dies ausreichend. Also, ist der
David
2
Klicken Sie mit dem Identifizierungswerkzeug auf ein Polygon. Die Fläche wird berechnet und im Identifizierungsfenster unter "Abgeleitet" angezeigt. Sie können die Einheiten unter Einstellungen ändern.
csk

Antworten:

70

Machen Sie die Ebene bearbeitbar und verwenden Sie dann den Feldrechner (Ebene> Attributtabelle öffnen> Feldrechner / Strg + I oder Rechtsklick-Shapefile> Attributtabelle öffnen> Feldrechner / Strg + I). Es gibt einen Operator "$ area", der die Fläche jeder Zeile in der Tabelle berechnet. Alle Einheiten werden in den Einheiten der Projektion berechnet. Daher möchten Sie diese wahrscheinlich auf eine Projektion projizieren, die vorher Fuß oder Meter verwendet, anstatt Lat / Lon.

Stev_k
quelle
6
In aktuellen Versionen von QGIS können Sie, wenn sich Ihre Daten in einem geografischen CRS befinden, die Funktion transform () verwenden, um die Geometrien in ein projiziertes System (vorzugsweise ein System mit gleicher Fläche) zu projizieren, ohne dass Sie Ihre Daten duplizieren müssen. Im Feldrechner sollte so etwas funktionieren: area ($ geometry, 'EPSG: 4326', 'EPSG: 3763')
Alexandre Neto
9
@AlexandreNeto: Meinst du area(transform($geometry, 'EPSG:4326','EPSG:3763'))?
Stewart Macdonald
@smacdonald ja mein fehler.
Alexandre Neto
18

Dies kann auch mit den Optionen Vektor | Geometriewerkzeuge | Geometriespalten hinzufügen / exportieren erfolgen. Dabei wird ein neues Shapefile mit hinzugefügten Spalten für Fläche und Umfang (oder Länge) erstellt.

Bearbeiten: (Mit dem obigen Werkzeug können Sie auch "Als neue Formdatei speichern" in V1.8 deaktivieren, das Shapefile wird jetzt nur noch aktualisiert!)

Die Verwendung des Feldrechners ist jedoch wahrscheinlich eine bessere Idee, da kein neues Shapefile erstellt werden muss.

Simbamangu
quelle
Sie können die Attribute des Shapefiles nicht ändern, ohne zuerst die Bearbeitung zu aktivieren (die Berechnung der Fläche gilt als Bearbeitung der Attribute, Sie fügen eine neue Spalte hinzu). Denken Sie daran, dass alle Einheiten in den Einheiten der Projektion berechnet werden (Meter bu Standard), sodass Sie sie zuerst in ein projiziertes Koordinatensystem neu projizieren müssen.
Hasan Mustafa
4

Ich habe eigens dafür ein Drehbuch geschrieben. Wenn Sie Ihre Daten nicht erneut projizieren möchten, können Sie die Fläche mit Ellipsoid-Mathematik berechnen.

Processing Toolbox -> Tools -> Get scripts from on-line scripts collection -> Ellipsoidal Area

Sie finden das Skript installiert in Processing Toolbox -> Utils -> Ellipsoidal area

Das Tool sollte selbsterklärend sein und es Ihnen ermöglichen, die Fläche unabhängig von der Projektion in Einheiten Ihrer Wahl zu berechnen.

räumliche Gedanken
quelle
Kannst du ein besseres Beispiel als Code geben?
Léo Léopold Hertz 준영
0

Wenn sich die Bereiche, die Sie betrachten, ändern können, z. B. Infrastrukturlayouts, Einzugsgebiete, Untersuchungsgebiete usw., finde ich es nützlich, die Bereiche einfach zu kennzeichnen , anstatt sie als Attribute hinzuzufügen.

Label-> round($area/10000,2)||' ha'

Auf diese Weise müssen Sie nicht so oft daran denken, die Einzugsbereiche in den Attributtabellen zu aktualisieren.

Gordon Huang
quelle