Georeferenzierung von PDF / SVG / DXF-Linien mit QGIS? [Duplikat]


12

Ich möchte eine kleine Webanwendung erstellen, um die Wahlergebnisse für meine Stadt auf der Basis von Abstimmungsseiten zu visualisieren. Das Ergebnis wird sich sehr ähnlich sein , was für Berlin geschehen ist hier . Hoffentlich hilft das dabei zu verstehen, was ich vorhabe.

Die Wahlrohdaten in der von mir benötigten Größenordnung werden veröffentlicht und ich weiß, wie ich sie anhand eines Shapefiles mit separaten Polygonen, die die Wahlbezirke abgrenzen, visualisieren kann. Mein Problem ist - wie Sie wahrscheinlich erraten können -, dass so etwas noch nicht existiert.

Was jedoch tatsächlich veröffentlicht wird, ist eine PDF-Datei, die die Grenzen der Bezirke aufzeigt, an denen ich interessiert bin: http://muenster.de/stadt/stadtplanung/pdf/a3_stimmbezirk.pdf

Ich bin nicht daran interessiert, die Linien selbst neu zu zeichnen, daher suche ich nach einer Möglichkeit, daraus ein Shapefile zu erstellen. Zum Glück enthält die PDF die Linien als separate Vektorobjekte. Diese habe ich in eine SVG-Datei extrahiert: https://www.dropbox.com/s/bn7698yrdh5tdqj/a3_stimmbezirk_ungrouped.svg

Ich habe bereits versucht, die SVG-Datei in eine DXF-Datei umzuwandeln und in qgis 2.0.1 zu importieren. Dies funktioniert tatsächlich, aber (wie erwartet) platziert die Vektoren im Atlantik und ich kann keinen Weg finden, dies zu bearbeiten und zu korrigieren.

Was kann ich jetzt tun, um diese Vektoren mit Open-Source-Werkzeugen zu georeferenzieren und schließlich ein Shapefile zu erstellen?


Können Sie OpenStreeMap Shapefiles für Münster nicht herunterladen? download.geofabrik.de/europe/germany/nordrhein-westfalen/… administrative grenzen sind dort bereits georeferenziert.
Mapperz

Danke für den Kommentar, Mapperz! Sieht so aus, als könnte ich es, enthält aber keine aktuellen Stimmbezirke ... oder doch?
bfncs

Antworten:


11

Ich bin auf Ihre Frage gestoßen, als ich versucht habe, dasselbe zu tun. So habe ich es gemacht:

Software verwendet:

  • Inkscape
  • QGIS 2.2
  • Affine Transformation Plugin für QGIS

Vektordaten aus PDF extrahieren

Es ist das, was Sie bereits getan haben. Öffnen Sie einfach die PDF-Datei in Inkscape, suchen Sie die gewünschten Formen und entfernen Sie alle Hintergründe und den umgebenden Text. Speichern als .dxf Datei.

Georeferenzierung der Vektordatei

Um mit der Vektordatei zu arbeiten, müssen wir sie mit QGIS in ein ESRI-Shapefile konvertieren.

Öffnen Sie QGIS und fügen Sie die DXF-Datei als Rasterebene hinzu. Wählen Sie DHDN / Gauss-Kruger Zone 3 (EPSG: 31467). als Koordinatensystem aus. Klicken Sie mit der rechten Maustaste auf die Ebene und speichern Sie sie als ESRI-Shapefile. Öffnen Sie dieses Shapefile als Rasterebene und entfernen Sie die andere.

Sie haben jetzt Münsters Wahlbezirke irgendwo bei den Koordinaten 0, 0.

Um den Vektor an die richtige Stelle zu verschieben (zu verschieben) und seine Größe zu ändern, müssen wir die Zielkoordinaten und die Zielgröße ermitteln. Um es kurz zu machen, ich hatte ein anderes GeoJSON von Wahlbezirke, das georeferenziert, aber nicht so detailliert war, also habe ich das verwendet, um die folgenden Daten zu berechnen:

  • Ziel x, y
  • Größenverhältnis zwischen unserem gerade extrahierten Vektor und der Zielgröße (mithilfe von xMin, xMax und yMin, yMax (extrahiert aus den Ebenenmetadaten in QGIS), um die Dimensionen in x- und y-Richtung für beide Ebenen zu erhalten, dann Verhältnis in x- und y-Richtung berechnen)

In meinem Fall stellen sich diese als ungefähr heraus:

target x 3406388
target y 5745290
yratio 118,539696
xratio 118,637678

Aktivieren Sie den Bearbeitungsmodus (Stiftsymbol) in Ihrer Ebene und fügen Sie diese Zahlen in das Plugin für die affine Transformation ein (Menü Vektor, Geoverarbeitungswerkzeuge, Affine). Wählen Sie "Ganze Ebene" aus:

Affine Transformation

Klicken Sie auf Transformieren, deaktivieren Sie den Bearbeitungsmodus (und speichern Sie ihn), und Sie erhalten ungefähr eine gelbe Ebene auf Ihrem Ziel. Ich habe noch nie herausgefunden, wie ich die gelbe Farbe entfernen kann. Deshalb entferne ich die Ebene und füge sie zur besseren Sichtbarkeit wieder hinzu.

Möglicherweise wird eine Ansicht angezeigt, die in etwa so aussieht, in der die Rasterebene sehr klein ist (rot eingekreist). Vergrößern Sie sie hier: QGIS 2.2 Kleine Rasterebene (Möglicherweise habe ich eine Einstellung hier übersehen. Ich bin nicht sicher, was dieses Verhalten verursacht. "Zoom zum schichtenumfang "hilft nicht.)

Wenn Sie einen Layer hinzufügen, der bereits georeferenziert ist, können Sie einen OpenStreetMap-Layer (über die OpenLayers-Erweiterung), ein NRW-WMS oder ähnliches verwenden. Ihr Vektor befindet sich noch nicht an der richtigen Position. Verschieben Sie ihn, indem Sie den Bearbeitungsmodus aktivieren, und verwenden Sie dann das Werkzeug "Features verschieben".

QGIS 2.2-Verschiebungsfunktion

Jetzt haben wir eine Ebene aus Polylinien erstellt. Der letzte Schritt besteht darin, aus diesen Linien Polygone zu erstellen. Ich werde das hier nicht erklären, lesen Sie hier für weitere Informationen:

Sehen Sie das Ergebnis hier .


Vielen Dank für die ausführliche Antwort, ich habe nicht mehr damit gerechnet, Hilfe zu diesem Problem zu bekommen und habe das Projekt in der Zwischenzeit zurückgestellt. Ich bin immer noch nicht mit der Replikation Ihrer Schritte fertig, aber dies scheint genau das zu sein, was ich brauche. Ich freue mich darauf, es dank Ihrer Hilfe endlich zu erledigen.
bfncs

Das Bearbeiten mit QGIS kann langwierig sein und ist nicht ganz intuitiv (wie Sie am Zoomverhalten / -fehler und anderen Dingen sehen können ...). Das Ergebnis können Sie kostenlos bei Github online verwenden (Link am Ende des Beitrags) ). Ich habe die resultierenden Polylinien noch nicht in Polygone konvertiert und werde dies einige Zeit später tun. Edit:
Habe

5

Hier ist ein weiterer Workflow, bei dem ogr2ogr mit GCP-Punkten verwendet wird:

  1. Extrahiere die Zeilen als svg (wie oben)
  2. In Inkscape laden und als DXF speichern
  3. Laden Sie in QGIS mit EPSG: 31467 als CRS
  4. Lesen Sie ein paar Koordinaten von wichtigen Rändern der umliegenden Stadtgrenze
  5. Öffnen Sie den OSM-Editor JOSM und laden Sie die Relation 62591 der Stadtgrenze herunter
  6. Speichern Sie das als GPX
  7. Laden Sie den Rahmen in eine neue QGIS-Sitzung und setzen Sie das Projekt CRS auf EPSG: 31467
  8. Lesen Sie die Koordinaten für die gleichen Punkte wie oben
  9. Erstellen Sie die folgende Batchdatei für GDAL:
ogr2ogr -a_srs EPSG:31467 -gcp 66.2423 264.3829 3397709. 5756806. -gcp 227.530 17.636 3404474. 5746477. -gcp 443.61 153.42 3413517. 5752162. -gcp 456.24 421.97 3414043. 5763404. -gcp 294.56 552.56 3407296. 5768889. stimmbezirke.shp stimmbezirke.dxf

Führen Sie den Stapel aus und laden Sie das resultierende Shapefile in QGIS:

Bildbeschreibung hier eingeben

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.