Projizieren von Attributen von einer Polygonebene zu einer anderen in QGIS?

16

Ich habe 2 Polygonebenen, die hier zu finden sind . Die beiden Schichten überlappen sich. Die erste enthält eine Karte der deutschen Landkreise von 1928 und die zweite die Landkreise von 2014.

Der Layer 2014 enthält Informationen zur Population (im Datensatz Bev genannt). Ist es möglich, das Populationsattribut von einem Polygon-Layer auf den anderen zu projizieren?

Genauer gesagt:

Stellen Sie sich vor, ich habe zwei Landkreise im Layer mit dem Bevölkerungsattribut, aber im selben Bereich auf dem anderen Layer gibt es nur einen County. Kann QGIS die Bevölkerung der beiden Landkreise aggregieren und diese Informationen in die andere Ebene schreiben?

Wenn dies funktioniert, gibt es auch eine Möglichkeit, dies zu tun, wenn der Layer mit den Informationen in einem bestimmten Bereich nur 1 Grafschaft hat, sich jedoch 2 Landkreise im anderen Layer befinden? In diesem Fall möchte ich die Bevölkerung proportional zur Größe des Landkreises aufteilen.

Alex
quelle
Diese Antwort soll Ihnen den Einstieg in einen allgemeinen Arbeitsablauf erleichtern
Tom
Ich denke, der oben erwähnte Link ist ein guter Ausgangspunkt - aber (!) er impliziert, dass die Population innerhalb der betroffenen Polygone gleichmäßig verteilt ist. Das ist nicht die Tatsache
Robert Tuw
2
... leider die 5 Minuten verpasst. Fortsetzung folgt: und wenn Sie beide Formdateien vergleichen, gibt es einen signifikanten Unterschied in der Detailebene - was zu einer Vielzahl von Splitterpolygonen führt ... siehe [link] ( dropbox.com/sh/7w97kjey33k7jdi/ AAARDwyyMryOBwjtY6IrFsh9a? Dl = 0 ). Wenn Sie zu diesem Zeitpunkt Informationen über Siedlungsgebiete hatten, könnten die Ergebnisse erheblich verbessert werden
robert tuw
... z. B. könnten die freien Landbedeckungsdaten von Corine dazu beitragen, das derzeit besiedelte Gebiet zu identifizieren und so die Ergebnisse der flächenbezogenen Bevölkerungsverteilung zu verbessern.
Robert Tuw

Antworten:

8

Haftungsausschluss:

  1. Ich glaube, dass es in diesem speziellen Fall viel genauer wäre, Bevölkerungsdaten von 2014 als Punktschicht mit so vielen Details wie möglich zu verwenden (Schwerpunkt von Vororten, Städten, Dörfern ...).

  2. Wenn BEV_ wirklich bevölkert ist, gibt es einige wirklich seltsame Werte wie GEN = Uelzen, BEV_ = 92553, bei denen dieses Polygon mit der Google-Satellitenbildfläche mit der Schlammgröße von maximal wenigen Fußballfeldern verglichen wird.

Wenn Sie wirklich Zahlenwerte basierend auf dem Verhältnis der Polygonflächenüberlappung zwischen Ebenen erhalten möchten (L1 = counties_2014, L2 = german empire 1928):

  1. Vor jeder Berechnung empfehle ich, projizierte Koordinatensysteme in Meter-Einheiten bzw. Quadratmeter-Einheiten für die Fläche zu verwenden. In diesem Fall habe ich EPSG: 3857 verwendet
  2. Erstellen Sie in L1 mit Field Calculator die Spalte " Area " und füllen Sie sie mit $ area
  3. Ebenen schneiden - Vektor / Geoverarbeitungswerkzeuge / Schneiden ... - Eingabe = L1, Schneiden = L2
  4. In der Schicht Geschnittene Verwendung Feldberechnung , erstellen Spalt für Bevölkerung durch neuen Bereich „eingestellt POPAREA “, und füllen Sie mit „Population“ * $ Bereich / „Area“
  5. Man löst das Geschnittene Schicht mit Processing Toolbox - finden auflösen Polygonen
    • Wählen Sie eine eindeutige Spalte mit Polygonwerten wie "Name" aus L2
    • überprüfen Compute min / max / Summe ... und berechnen sie auf " POPAREA "
    • Die letzte Ebene wird die Spalte sum_diss haben, nach der Sie suchen (in diesem speziellen Fall bereinigte Bevölkerung für 1928 Grafschaften von 2014).

Wenn Sie alles gut gemacht haben, sollten Sie von 81 Millionen Menschen in L1 etwa 77 Millionen Menschen auf der Grundlage des L2-Bezirks verteilen.

Bildbeschreibung hier eingeben

Miro
quelle
Danke für deine Antwort. Zu den ersten beiden Punkten: Ich habe auch versucht, mit Zentroiden zu erreichen, was ich will. Es hat ganz gut geklappt, aber besonders für die kleineren Polygone hat das Matching nicht sehr gut geklappt. Ich denke, die Bevölkerungsdaten sind irgendwie durcheinander geraten. Aber das ist nur ein kleines Problem, das ich selbst lösen kann.
Alex
@Alex Ich glaube, die Verwendung von Punkten oder Zentroiden in diesem Fall ist aus meiner Sicht zu weit von der Lösung entfernt, die ich aufgrund einer sehr zufälligen Überlappung als ausreichend bezeichnen würde. Auf diese Weise gehen zu viele Daten verloren.
Miro
9

Wenn ich Ihre Frage richtig verstehe, könnte dies Ihre erste Frage lösen. Ich habe einen kurzen Test durchgeführt und die folgende Methode scheint zu funktionieren, aber es lohnt sich, genauer hinzuschauen, um zu überprüfen, ob sie korrekt ist.

  1. Erstellen Sie zufällige Punkte in der 1928-Ebene (Zentroide funktionieren möglicherweise besser. Sie müssen dies überprüfen).
  2. Überschneide die Punkte-Ebene mit der 2014-Ebene (Punkte-Ebene sollte die Eingabe-Ebene sein);
  3. Attribute nach Standort verbinden. Zielebene ist die Ebene 2014 und die Punktebene ist die Verbindungsebene. Verwenden Sie include als geometrisches Prädikat. Belassen Sie die Attributzusammenfassung als Standard (zuerst gefundenes Feature). Behalten Sie alle Datensätze im Dropdown-Feld Verknüpfungstabelle bei.

Überprüfen Sie, ob die Ausgabeebene korrekt ist.

Wenn möglich, führen Sie es über die Verarbeitungs-Toolbox in qgis aus (Sie müssen nicht jede Ebene speichern, sondern müssen sie als temporäre Ebene speichern).

Ich bin mir nicht ganz sicher, was Ihre zweite Frage beinhaltet. Könntest du das näher erläutern?

PyMapr
quelle