Längen von Linien und Statistiken berechnen

Warnung

This tutorial is now obsolete. A new and updated version is available at Berechnung der Länge von Linien und Statistiken (QGSI3)

QGIS hat integrierte Funktionen, um unterschiedliche Eigenschaften basierend auf der Geometrie eines Features zu berechnen. So z.B. Länge, Fläche, Umfang etc. Dieses Tutorial zeigt, wie Sie den Feldrechner verwenden, eine Spalte mit dem Längenwert jedes Features hinzuzufügen.

Übersicht der Aufgabe

Wir benutzen eine Shapedatei mit Linienzügen der Eisenbahnlinien in Nord Amerika und versuchen, die Gesamtlänge der Gleise der Vereinigten Staaten zu bestimmen.

Weitere Fähigkeiten, die Sie erlernen

  • Ausdrücke verwenden, um Features zu selektieren.

  • Umprojektion eines Layers von einem geografischen zu einem projezierten Koodinatenbezugssystem (KBS).

  • Darstellen von Statistiken für die Werte eines Attributs in einem Layer.

Daten besorgen

Natural Earth hat einen öffentlichen Datensatz mit Eisenbahnlinien. Laden Sie die North America supplement ZIP-Datei von der Seite.

For convenience, you may directly download a copy of the dataset from the link below:

ne_10m_railroads_north_america..zip

Datenquelle [NATURALEARTH]

Arbeitsablauf

  1. Gehe zu Layer ‣ Layer hinzufügen ‣ Vektorlayer hinzufügen… (neu in QGIS 2.8).

../_images/1170.png
  1. Suchen Sie die ne_10m_railroads_north_america.zip Datei und klicke OK.

../_images/2140.png
  1. Im Dialog Einzufügende Vektorlayer wählen…, wählen Sie ne_10m_railroads_north_america.shp.

../_images/380.png
  1. Sobald der Layer geladen ist, sehen Sie Linien, die die Eisenbahnstrecken Nord Amerikas darstellen. Da wir die Länge der Linien nur für die Vereinigten Staaten berechnen wollen, müssen wir diejenigen auswählen, die in diesen Bereich fallen. Machen Sie einen Rechtsklick auf den Layereintrag und wählen Sie Attributtabelle öffnen.

../_images/448.png
  1. Der Layer hat ein Attribut sov_a3. Dies ist ein Code aus drei Buchstaben für das Land zu dem das jeweilige Feature gehört. Wir können dieses Attribut verwenden, um die Features auszuwählen, die in den USA liegen.

../_images/542.png
  1. Im Fenster Attributtabelle klicke Objekte mit einem Ausdruck wählen.

../_images/641.png
  1. Ein neuer Dialog Auswählen mit Auswählen öffnet sich. Finden Sie das Attribut sov_a3 unter Felder und Werte in der Liste Funktionen. Machen Sie einen Doppelklick auf den Eintrag und fügen Sie diesen dem Bereich Ausdruck hinzu. Vervollständigen Sie den Ausdruck zu "sov_a3" = 'USA'. Klicke Auswahl gefolgt von Schließen.

../_images/741.png
  1. Zurück im Hauptfenster sehen Sie, dass die Linien im Bereich der USA ausgewählt sind und in Gelb dargestellt werden.

../_images/840.png
  1. Nun speichern wir unsere Auswahl als neue Shapedatei. Machen Sie einen Rechtsklick auf den Layer ne_10m_railroads_north_america und wählen Sie Speichern als…. (neu in QGIS 2.8).

../_images/941.png
  1. Klicke Durchsuchen und benennen Sie die Ausgabedatei als usa_railroads.shp. Setzen Sie den Haken bei Nur gewählte Objekte speichern (neu in QGIS 2.8). Weiter möchten wir das KBS des Layers ändern. Klicken Sie auf KBS wählen (neu in QGIS 2.8).

Bemerkung

Die integrierte Funktion, die die Geometry eines Features für Berechnungen benutzt, verwendet die Einheiten des KBS des Layers. Geografische Koordinatenbezugssysteme (KBS) wie EPSG:4326 haben Grad als Einheit, so ist die Länge des Features auch in Grad und die Fläche in Quadrat-Grad, was bedeutungslos ist. Sie brauchen eine projeziertes Koordinatenbezugssystem, das Meter oder Fuß als Einheit verwendet, um diese Berechnungen durchzuführen.

../_images/1048.png
  1. Da wir an der Berechnung der Länge interessiert sind, wählen wir eine längentreue Projektion. Geben Sie north america equ im Suchfeld Filter ein. In der unteren Ergebnisliste selektieren Sie North_America_Equidistant_Conic EPSG:102010 als KBS. Klicke OK.

../_images/1171.png
  1. Im Dialog Vektorlayer speichern als…, aktivieren Sie Gespeicherte Datei zur Karte hinzufügen und klicken Sie OK.

../_images/1251.png
  1. Sobald der Exportprozess abgeschlossen ist, sehen Sie einen neuen geladenen Layer usa_railroads. Sie können die Box neben dem Layer ne_10m_railroads_north_america deaktivieren, um ihn auszuschalten, da wir ihn nicht mehr brauchen.

../_images/1349.png
  1. Machen Sie einen Rechtsklick auf usa_railroads und wählen Attributtabelle öffnen.

../_images/1446.png
  1. Jetzt ist es an der Zeit, eine Spalte mit der Länge eines jeden Features hinzuzufügen. Versetzen Sie den Layer in den Bearbeitungsmodus, indem Sie Bearbeitungsmodus umschalten klicken. Sobald dieser aktiv ist, klicken Sie Feldrechner öffnen.

../_images/1542.png
  1. Im Feldrechner aktivieren Sie Neues Feld anlegen. Geben Sie length_km als Ausgabefeldname an. Als Ausgabefeldtyp wählen Sie Dezimalzahl (real). Ändern Sie die Genauigkeit auf 2. Im Bereich Funktionen suchen Sie $length unter Geometrie. Mit Doppelklick übernehmen Sie dies in den Bereich Ausdruck. Vervollständigen Sie den Ausdruck zu $length / 1000, da das KBS die Einheit Meter verwendet und wir die Ausgabe in KM möchten. Klicke OK.

../_images/1640.png
  1. Zurück in der Attributtabelle, sehen Sie eine neue Spalte length_km. Klicken Sie Bearbeitungsmodus umschalten und speichern Sie die Änderungen.

../_images/1738.png
  1. Jetzt haben wir die Länge jeder einzelnen Linie in unserem Layer und können diese einfach zusammenrechnen, um die Gesamtlänge erhalten. Gehe zu Vektor ‣ Analysewerkzeuge ‣ Grundstatistik….

../_images/1835.png
  1. Selektieren Sie usa_railroads als Eingabevektorlayer und length_km als Zielfeld. Klicke OK. Sie bekommen verschiedene Statistiken. Der Wert Summe ist die Gesamtlänge der Eisenbahnlinien, nach der wir gesucht haben.

Bemerkung

Das Ergebnis kann bei verschiedenen Projektionen leicht variieren. In der Praxis werden Straßen und andere Linien am Boden gemessen und als Attribut versorgt. Diese Methode funktioniert bei Fehlen eines solchen Attributs als Näherungswert von Linienlängen.

../_images/1926.png

If you want to give feedback or share your experience with this tutorial, please comment below. (requires GitHub account)