Georreferenciación de líneas vectoriales PDF / SVG / DXF con QGIS? [duplicar]

12

Quiero crear una pequeña aplicación web para visualizar los resultados de las elecciones por sitio de votación para mi ciudad. El resultado será muy similar a lo que se ha hecho para Berlín aquí . Espero que esto ayude a entender lo que estoy buscando.

Los datos brutos de las elecciones en la escala que necesito se publican y sé cómo visualizarlos sobre la base de un archivo de formas con polígonos separados que se alinean en los distritos electorales. Mi problema es, como probablemente puedas adivinar, que algo como esto ya no existe.

Sin embargo, lo que en realidad se publica es un archivo PDF que delinea las fronteras de los distritos en los que estoy interesado: http://muenster.de/stadt/stadtplanung/pdf/a3_stimmbezirk.pdf

No estoy interesado en volver a dibujar el linework yo mismo, así que estoy buscando una manera de hacer un archivo de formas con esto. Afortunadamente, el PDf incluye la línea de trabajo como objetos vectoriales separados, los extraje en un archivo SVG: https://www.dropbox.com/s/bn7698yrdh5tdqj/a3_stimmbezirk_ungrouped.svg

Ya intenté convertir el SVG a DXF e importarlo a qgis 2.0.1. Esto realmente funciona, pero (como se esperaba) coloca los vectores en el océano Atlántico y no puedo encontrar una manera de editarlo y solucionarlo.

¿Qué puedo hacer ahora para georreferenciar estos vectores con herramientas de código abierto y finalmente producir un shapefile?

bfncs
fuente
¿No puedes descargar OpenStreeMap Shapefiles para Munster? download.geofabrik.de/europe/germany/nordrhein-westfalen/… los límites administrativos ya están georreferenciados.
Mapperz
Gracias por comentar, Mapperz! Parece que podría, pero no incluye los distritos electorales actuales ("Stimmbezirke") ... ¿o sí?
bfncs

Respuestas:

12

Me topé con tu pregunta mientras intentaba hacer lo mismo, así es como lo hice:

Software utilizado:

  • Inkscape
  • QGIS 2.2
  • Plugin de transformación afín para QGIS

Extraer datos vectoriales de PDF

Es lo que ya ha hecho, básicamente solo abra el PDF en Inkscape, encuentre las formas que desea y elimine todos los fondos y el texto circundante. Guardar como archivo .dxf .

Georreferenciar el archivo vectorial

Para trabajar con el archivo vectorial necesitamos convertirlo a un Shapefile ESRI con QGIS.

Abra QGIS y agregue el archivo dxf como una capa ráster, seleccione DHDN / Gauss-Kruger zona 3 (EPSG: 31467) como el sistema de coordenadas. Haga clic derecho en la capa, guárdela como archivo de forma ESRI. Abra este archivo de forma como una capa ráster y elimine la otra.

Ahora tiene Münsters Wahlbezirke en algún lugar en las coordenadas 0, 0.

Para traducir (mover) y redimensionar el vector en el lugar correcto, necesitamos encontrar las coordenadas y el tamaño del objetivo. Para mantenerlo breve, tenía otro GeoJSON de Wahlbezirke que estaba georreferenciado pero no tan detallado, así que lo usé para calcular los siguientes datos:

  • Objetivo x, y
  • Relación de tamaño entre nuestro vector recién extraído y el tamaño objetivo (mediante el uso de xMin, xMax y yMin, yMax (extraído de los metadatos de capa en QGIS) para obtener las dimensiones en dirección x an y para ambas capas, luego calcular la relación en dirección x e y)

En mi caso, estos resultan ser aproximadamente:

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

Habilite el modo Editar (icono de lápiz) en su capa y coloque estos números en el complemento Transformación afín (Menú vectorial, Herramientas de geoprocesamiento, Afinamiento), seleccione "Capa entera":

Transformacion afin

Haga clic en transformar, deshabilite el modo de edición (y guarde) y terminará con una capa totalmente amarilla aproximadamente en su objetivo. Nunca he descubierto cómo eliminar el color amarillo, así que elimino y vuelvo a agregar la capa para una mejor visibilidad.

Puede terminar con una vista similar a esta, donde su capa de trama es muy pequeña (encerrada en un círculo rojo), acercar aquí: Capa ráster de pequeña escala QGIS 2.2 (Tal vez pasé por alto una configuración aquí, no estoy seguro de qué causa este comportamiento ". Zoom a nivel de capa "no ayuda.)

Agregue una capa que ya esté georreferenciada, puede usar una capa OpenStreetMap (a través de la extensión OpenLayers), un WMS NRW o similar. Su vector aún no está en la posición correcta, así que muévalo habilitando el modo Editar, luego use la herramienta Mover características.

Función de movimiento QGIS 2.2

Ahora que hemos hecho una capa de polilíneas, el último paso es hacer polígonos a partir de estas líneas. No voy a explicar eso aquí, lea aquí para obtener más información:

Mira el resultado aquí .

chrki
fuente
Muchas gracias por la respuesta detallada, ya no esperaba recibir ayuda sobre este problema y, mientras tanto, detuve el proyecto. Todavía no he terminado de replicar sus pasos, pero esto se parece a lo que necesito. Espero poder hacerlo finalmente gracias a su ayuda.
bfncs
La edición con QGIS puede ser tediosa y no es muy intuitiva (como puede ver con el comportamiento / error del zoom y otras cosas ...), el resultado está en línea en Github para que pueda usarlo gratuitamente (enlace al final de la publicación ) Todavía no he dado la vuelta para convertir las polilíneas resultantes en polígonos, lo haré algún tiempo después. Editar: Acabo de ver que necesita el otro mapa con 172 distritos, solo he convertido el mapa de 33 distritos ... lo siento: D
chrki
6

Aquí hay otro flujo de trabajo, usando ogr2ogr con puntos GCP:

  1. Extraiga las líneas como svg (como arriba)
  2. cargar en inkscape y guardar como dxf
  3. Carga en QGIS, con EPSG: 31467 como CRS
  4. Lea un par de coordenadas de bordes significativos de la frontera de la ciudad circundante
  5. Abra el editor OSM JOSM y descargue la relación 62591 de la frontera de la ciudad
  6. Guarda eso como GPX
  7. Cargue el borde en una nueva sesión de QGIS, establezca el proyecto CRS en EPSG: 31467
  8. Lea las coordenadas para los mismos puntos que arriba
  9. cree el siguiente archivo por lotes para 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

Ejecute el lote y cargue el archivo de forma resultante en QGIS:

ingrese la descripción de la imagen aquí

AndreJ
fuente