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?

5voto

xipher Puntos 1

Sólo tuve que hacer eso, y terminé haciendo esto :

  1. Rasterizar el shapefile
  2. Georreferenciar el raster utilizando el plugin Georeferencer
  3. Guarde el GCP como gcps.points archivo
  4. Calcule la transformación afín utilizando este archivo
  5. Aplicar la transformación afín al shapefile utilizando qgsAffine

El siguiente script calcula la matriz de transformación afín utilizando los GCPs guardados:

# Computes an affine transform based on QGis GCPs
# Usage: gcp_affine.py gcps.points

import csv
import sys
import numpy as np
from skimage.transform import AffineTransform

u = list(csv.DictReader(open(sys.argv[1], "rb")))
source = [(d["pixelX"], d["pixelY"]) for d in u]
dest = [(d["mapX"], d["mapY"]) for d in u]
source = [map(float, s) for s in source]
dest = [map(float, s) for s in dest]
source = np.array(source)
dest = np.array(dest)
aft = AffineTransform()
aft.estimate(source, dest)
np.set_printoptions(suppress=True)
print aft._matrix

2voto

Siguiendo mis comentarios sobre la respuesta de Rayner, GRASS v.transform, que puede ejecutarse desde la caja de herramientas de Sextante, puede utilizarse para calcular los parámetros de transformación y aplicarlos a una capa vectorial para realizar una transformación afín. Se requiere un archivo de texto que contenga puntos de control, en el formato mostrado ici .

Es muy fácil de usar y funciona bien.

2voto

Daryl Spitzer Puntos 220

Ver mi respuesta a Unir dos polígonos y prueba el openjump gratuito.

Creo que su transformación afín es mucho más fácil de usar que el plugin afín de qgis.

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