38 votos

¿Georreferenciar una capa vectorial con puntos de control mediante QGIS?

Tengo una capa vectorial no georreferenciada que necesito que sea georreferenciada. Con las capas ráster la tarea es fácil y sencilla, pero no tengo ni idea de qué debo hacer con mi capa vectorial. Tengo unos cuantos puntos de control con coordenadas conocidas que deberían proporcionar alguna base para la transformación. Así, digamos que sé que los puntos con id-s de 1, 2 y 3 deben tener las coordenadas de x1,y1 ; x2,y2 ; x3,y3. Es posible que haya alguna transformación de rotación y escala, además de un simple desplazamiento.

¿Alguna idea?

13voto

Mashimom Puntos 21

Para georreferenciar una capa vectorial, pruebe el plugin qgsAffine.

Hay más información en ¿Dónde encontrar qgsaffine en el menú?

13voto

Mike Puntos 1103

Recomiendo el plugin Vector Bender para QGIS. Lo he probado y funciona bien y es fácil de usar. Dependiendo de la cantidad de par de puntos que se define, usted puede hacer:

  • traducciones: traducción de un punto inicial a uno final (1 par)
  • uniforme: traslación, escalado y rotación (2 pares)
  • flexión: deformación adicional (3 pares o más)

Encontrará un breve vídeo ici y te aconsejo que leas la ayuda de Vector Bender una vez que hayas instalado el plugin.

10voto

JAL Puntos 11164

Varias de las respuestas proporcionadas aquí ya no son opciones para QGIS 3, y/o sólo permiten transformaciones lineales del archivo vectorial que se está georreferenciando. Esto puede responder a la pregunta del OP, pero otros que miran este post pueden querer otras opciones de transformación para georreferenciar archivos vectoriales.

Problemas con algunas de las soluciones para georreferenciar archivos vectoriales:

  • El plugin qgsAffine sólo permite transformaciones lineales. Esto Esto significa que puede escalar, rotar y mover el archivo vectorial, pero no puede doblar o deformar el archivo vectorial. El Georreferenciador para archivos rasterizados ofrece más opciones, y permite una variedad de transformaciones, incluyendo el polinomio de segundo orden y el spline de placa fina. Además, no parece no parece que el plugin qgsAffine esté todavía disponible en QGIS 3.

  • El módulo v.transform de GRASS es similar al plugin qgsAffine, y sólo permite transformaciones lineales.

  • El plugin Vector Bender parece que era una buena opción, pero tiene no ha sido completamente portado a QGIS 3, por lo que no es actualmente una opción. En parece que ya no se mantiene.

Usar ogr2ogr, como se sugiere en el post de HeikkiVesanto, es una buena opción. Permite utilizar GCPs (Ground Control Points), y especificar el tipo de transformación que se desea. No pude encontrar instrucciones en ninguna parte sobre cómo hacer esto, así que he incluido algunas instrucciones a continuación:

  1. Generar un conjunto de pares de GCP, siendo un punto el original original en el archivo vectorial no georreferenciado, y el otro punto es la ubicación deseada en su espacio de trabajo georreferenciado.

  2. Hay varias formas de generar BPC. Yo he utilizado el Georeferencer GDAL en QGIS. Está disponible en el menú desplegable Raster, una vez instalado con el gestor de plugins. Sólo funciona con archivos ráster, por lo que primero hay que convertir el archivo vectorial vectorial a un archivo raster. Esto es posible con "Processing Toolbox: GDAL: Conversión de vectores: Rasterize (vector to raster)". Establezca la resolución a un número que todavía le permita ver las características del archivo vectorial.

  3. El Georreferenciador tiene una bonita interfaz, que permite añadir muchos puntos GCP. También puede probar diferentes transformaciones, y ver cuál funciona mejor. Y puede ver si alguno de sus puntos GCP está de sus puntos GCP está en error, observando sus residuos. Una vez que haya una vez que haya añadido todos los puntos GCP y haya comprobado que le gusta el resultado, puede puede exportar el archivo GCP desde el Georreferenciador para utilizarlo en la georreferenciación del archivo vectorial original.

  4. Es necesario cambiar el archivo GCP para que tenga el siguiente formato. Usted puede añadir tantos puntos GCP como desee, cada uno va precedido de un -gcp y separado por un espacio. He ejecutado esto con más de 800 puntos GCP, y funcionó muy bien.

    -gcp <ungeoref_x1> <ungeoref_y1> <georef_x1> <georef_y1> -gcp <ungeoref_x2> <ungeoref_y2> <georef_x2> <georef_y2>
  5. Hay varias maneras de cambiar los puntos GCP en el formato correcto. Yo los importé a Excel como un archivo csv y creé una columna para dar salida al formato correcto para cada punto. Luego pegué esa columna en TextEdit y sustituí los finales de línea con espacios.

  6. El archivo vectorial que se desea georreferenciar debe ser importado en su espacio de trabajo utilizando el mismo SRS que desea para el archivo final georreferenciado, que debe ser el mismo SRS que su espacio de trabajo. Puede que esté muy lejos de donde debería estar, si originalmente originalmente usaba un SRS diferente, pero la transformación lo moverá a la ubicación correcta.

  7. Acceda a ogr2ogr a través de "Processing Toolbox: GDAL: Conversión de vectores: Convertir formato". Esto le permite seleccionar el archivo vectorial que desea georreferenciar, y su archivo de salida. En el campo "Additional creation opciones adicionales", añada un comando que especifique el tipo de transformación que que desea, y luego la línea con todos sus puntos GCP.

  8. Los comandos para los diferentes tipos de transformación incluyen:

    • "-orden 1" para lineal
    • "-orden 2" para el polinomio de segundo orden
    • "-orden 3" para el polinomio de tercer orden
    • "-tps" para Thin Plate Spline.
  9. Por ejemplo, el código añadido en el campo "Opciones adicionales de creación" podría tener el siguiente aspecto:

    -order 2 -gcp <ungeoref_x1> <ungeoref_y1> <georef_x1> <georef_y1> -gcp <ungeoref_x2> <ungeoref_y2> <georef_x2> <georef_y2>

9voto

Chris Puntos 128

Con el lanzamiento de GDAL 1.10 esto ya es posible.

Se hace realizando una transformación básica en ogr2ogr y suministrando los puntos de control en la etiqueta -gcp. http://www.gdal.org/ogr2ogr.html

Para obtener una guía, consulte: http://gisforthought.com/georeferencing-vector-data-using-qgis-and-ogr2ogr/

8voto

masi Puntos 88

Dado que tiene algunos puntos de control, debería poder utilizar una transformación Affine para desplazar sus datos vectoriales. Echa un vistazo a esta receta . El proceso consta de dos partes:

  1. Utilice sus puntos de control para definir los coeficientes de su función afín requerida
  2. tomar los coeficientes y aplicarlos a la ST_Affine() en postgis.

Si pones tus puntos de control en un archivo CSV (old_x,old_y,new_x,new_y), puedes cortar y pegar los comandos R del enlace para resolver la parte de los coeficientes.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X