Georeferenziazione vettoriale PDF / SVG / DXF linework usando QGIS? [duplicare]


12

Voglio creare una piccola applicazione web per visualizzare i risultati delle elezioni in base al sito di votazione per la mia città. Il risultato sarà molto simile a quello che è stato fatto per Berlino qui . Spero che questo aiuti a capire cosa sto cercando.

I dati grezzi delle elezioni sulla scala di cui ho bisogno sono pubblicati e so come visualizzarli sulla base di un file di forma con poligoni separati che allineano i distretti elettorali. Il mio problema è - come probabilmente si può immaginare - che qualcosa del genere non esiste già.

Ciò che in realtà viene pubblicato, tuttavia, è un file PDF che allinea i confini dei distretti che mi interessano: http://muenster.de/stadt/stadtplanung/pdf/a3_stimmbezirk.pdf

Non ho voglia di ridisegnare il lavoro di linea da solo, quindi sto cercando un modo per ricavarne uno shapefile. Fortunatamente, il PDf include il disegno al tratto come oggetti vettoriali separati, li ho estratti in un file SVG: https://www.dropbox.com/s/bn7698yrdh5tdqj/a3_stimmbezirk_ungrouped.svg

Ho già provato a convertire SVG in DXF e importarlo in qgis 2.0.1. In realtà funziona, ma (come previsto) posiziona i vettori nell'Oceano Atlantico e non riesco a trovare un modo per modificarlo e risolverlo.

Cosa posso fare ora per georeferenziare questi vettori con strumenti open source e infine produrre un file di forma?


Non riesci a scaricare gli Shapefile OpenStreeMap per Munster? download.geofabrik.de/europe/germany/nordrhein-westfalen/… i confini amministrativi sono già georeferenziati.
Mapperz

Grazie per il commento, Mapperz! Sembra che potrei, ma non include gli attuali distretti elettorali ("Stimmbezirke") ... o no?
bfncs,

Risposte:


12

Mi sono imbattuto nella tua domanda mentre cercavo di fare la stessa cosa, ecco come l'ho fatto:

Software utilizzato:

  • Inkscape
  • QGIS 2.2
  • Plugin di trasformazione affine per QGIS

Estrazione di dati vettoriali da PDF

È quello che hai già fatto, in pratica basta aprire il PDF in Inkscape, trovare le forme che desideri e rimuovere tutti gli sfondi e il testo circostante. Salva come file .dxf .

Georeferenziazione del file vettoriale

Per lavorare con il file vettoriale è necessario convertirlo in uno Shapefile ESRI con QGIS.

Apri QGIS e aggiungi il file dxf come layer raster, seleziona DHDN / Gauss-Kruger zone 3 (EPSG: 31467) come sistema di coordinate. Fare clic con il tasto destro sul layer, salvare come Shapefile ESRI. Apri questo file di forma come livello raster e rimuovi l'altro.

Ora hai Münsters Wahlbezirke da qualche parte alle coordinate 0, 0.

Per tradurre (spostare) e ridimensionare il vettore nel posto giusto, dobbiamo scoprire le coordinate e le dimensioni del bersaglio. Per farla breve, avevo un altro GeoJSON di Wahlbezirke che era georeferenziato ma non così dettagliato, quindi l'ho usato per calcolare i seguenti dati:

  • Target x, y
  • Rapporto dimensionale tra il vettore appena estratto e la dimensione target (utilizzando xMin, xMax e yMin, yMax (estratto dai metadati del livello in QGIS) per ottenere le dimensioni in direzione xey per entrambi i livelli, quindi calcolare il rapporto in direzione xey

Nel mio caso questi si rivelano approssimativamente:

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

Abilita la modalità Modifica (icona a forma di matita) sul tuo livello e inserisci questi numeri nel plug-in di trasformazione affine (Menu Vector, Strumenti di geoprocessing, Affine), seleziona "Livello intero":

Trasformazione affine

Fai clic su Trasforma, disabilita la modalità di modifica (e salva) e finirai con un livello tutto giallo all'incirca sul tuo target. Non ho mai capito come rimuovere il colore giallo, quindi rimuovo e aggiungo nuovamente il livello per una migliore visibilità.

Potresti finire con una vista che assomiglia a questa, in cui il tuo livello raster è super piccolo (cerchiato in rosso), ingrandisci qui: QGIS 2.2 Small Raster Layer (Forse ho trascurato un'impostazione qui, non sono sicuro di ciò che causa questo comportamento. "Zoom a livello di estensione "non aiuta.)

Aggiungi un livello già georeferenziato, potresti usare un livello OpenStreetMap (tramite l'estensione OpenLayers), un WW NRW o simile. Il tuo vettore non è ancora nella posizione giusta, quindi spostalo abilitando la modalità Modifica, quindi usa lo strumento Sposta funzionalità.

QGIS 2.2 Funzione di spostamento

Ora abbiamo creato uno strato di polilinee, l'ultimo passo è creare poligoni da queste linee. Non lo spiegherò qui, leggi qui per maggiori informazioni:

Vedi il risultato qui .


Grazie mille per la risposta dettagliata, non mi aspettavo più di ricevere aiuto su questo problema e nel frattempo ho sospeso il progetto. Non ho ancora finito di replicare i tuoi passi, ma sembra proprio quello di cui ho bisogno. Non vedo l'ora di farlo finalmente grazie al tuo aiuto.
bfncs,

La modifica con QGIS può essere noiosa e non è abbastanza intuitiva (come puoi vedere con il comportamento / bug dello zoom? E altre cose ...), il risultato è online su Github e puoi usarlo gratuitamente (link alla fine del post ). Non sono ancora andato in giro per convertire le polilinee risultanti in poligoni, lo farò qualche tempo dopo. Modifica: Ho appena visto che hai bisogno dell'altra mappa con 172 distretti, ho convertito solo la mappa di 33 distretti .. scusa: D
chrki

6

Ecco un altro flusso di lavoro, usando ogr2ogr con punti GCP:

  1. Estrai le linee come svg (come sopra)
  2. carica in inkscape e salva come dxf
  3. Carica in QGIS, con EPSG: 31467 come CRS
  4. Leggi un paio di coordinate dai bordi significativi del confine della città circostante
  5. Apri l'editor OSM JOSM e scarica la relazione 62591 del confine della città
  6. Salvalo come GPX
  7. Carica il bordo in una nuova sessione QGIS, imposta il progetto CRS su EPSG: 31467
  8. Leggi le coordinate per gli stessi punti di cui sopra
  9. creare il seguente file batch per 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

Esegui il batch e carica lo shapefile risultante in QGIS:

inserisci qui la descrizione dell'immagine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.