Calcular parámetros para la transformación QGIS Affine?


15

Tengo un plano de vector (DXF) que he agregado a un proyecto en blanco en QGIS usando el complemento Dxf2Shp.

He estado leyendo tutoriales y subprocesos de StackExchange, pero parece que no puedo encontrar cómo "georreferenciar" mi capa.

Supongo que de alguna manera puedo seleccionar las esquinas del edificio y establecer el lat / long.

Mi objetivo es exportar un shapefile que pueda usar con TileMill y TileStache .

Me di cuenta de que las coordenadas del proyecto eran en realidad coordenadas lat / long:

ingrese la descripción de la imagen aquí

y necesito usar el complemento "Afinar (rotación, traducción, escala)" para "colocar" mi dibujo CAD.


Respuestas:


2

Usando OpenJump para calcular el rendimiento de los parámetros de transformación afines:

Scale x: 0.02550720529745378
Scale y: 0.025669710194697357
Rotation: -88.6538203230914
Dx: 357101.9 (Translation x)
Dy: 4512814.6 (Translation y)

Estos parámetros, cuando se aplican correctamente, deben transformar su archivo de forma del CRS local que utiliza para WGS84 / UTM Zone 17 North (EPSG: 32617). En QGIS, los datos transformados se podrían exportar ("guardar como") a cualquier CRS requerido; Google Mercator o lat / lon, por ejemplo.

La mala noticia es que nunca he podido usar con éxito el complemento afín QGIS para transformaciones que incluyen rotación. Según algunas cuentas, funciona para otras personas, pero no para mí, por lo que debe ser algo que estoy haciendo mal. Si alguien pudiera decirme qué es esto, estaría agradecido.

Hubo un hilo aquí sobre los vectores de afinación que vale la pena leer. El método que uso para afinar vectores se explica aquí en la parte inferior de la primera página.

Si realmente se atasca, podría publicar un enlace al archivo de forma y todos podríamos intentar transformarlo.

Una idea de último momento. Si decide probar el método OpenJump, necesitará las coordenadas WGS84 / UTM Zone 17 North (EPSG: 32617) para sus puntos lat / lon:

EPSG:32617: 361154.4 4513930.1
lat/long: 40.764622,-82.645056
shapefile coor: 947.3,1242.8

EPSG:32617: 361152.2 4513850.3
lat/long: 40.763903,-82.645064
shapefile coor: 4050.3,1035.7

EPSG:32617: 361246.5 4513886.7
lat/long: 40.764247,-82.643956
shapefile coor: 2710.5,4765.2

2
no parece existir un flujo de trabajo consistente y fácil de explicar para la transformación afín en QGIS. El enlace del foro en su explicación está muerto. Todas las búsquedas sobre cómo usar OpenJump para esta tarea terminan aquí nuevamente. ¿Tal vez tienes alguna actualización sobre esto?
Bernd V.

Ahora puede usar GRASS v.transform del kit de herramientas Sextante para llevar a cabo transformaciones afines de vectores. La documentación para esto se puede encontrar aquí: grass.osgeo.org/grass64/manuals/v.transform.html, pero en realidad todo lo que tendrá que ver es el formato del archivo de texto. N.
nhopton

27

Primero debe proyectar sus coordenadas geográficas en un sistema de coordenadas 2D cartesiano, ya que las transformaciones afines no se aplican a los sistemas de coordenadas geográficas.

Puede aplicar una transformación afín desde puntos de control o desde parámetros de transformación. El complemento QGIS le pide parámetros de transformación, pero es mucho más común que un usuario tenga puntos de control.

Desde los puntos de control puede calcular los parámetros de transformación. Para una transformación afín hay 6 parámetros de transformación, por lo que necesita al menos 3 puntos de control (cada punto de control implica 4 coordenadas: Xsource, Ysource, Xtarget, Ytarget), pero se recomienda tener más puntos de control para tener redundancia y así poder aplicar Mínimos cuadrados, que le darían una estimación de la calidad de la transformación. Recuerde que las transformaciones afines pueden rotar, desplazarse, escalar (incluso aplicando diferentes factores en cada eje) y sesgar las geometrías.

Los puntos de control deben tener la forma:

X SOURCE: Xs
Y SOURCE: Ys
X TARGET: Xt
Y TARGET: Yt

Los parámetros son:

a: Scale X 
e: Scale Y
d: Rotation X
b: Rotation Y
c: Translation X
f: Translation Y

Y sabemos:

Xt = X*a + Y*b + c
Yt = X*d + Y*e + f

Por lo tanto, debe resolver este sistema de ecuaciones (para 3 puntos de control):

¦ Xs1 Ys1 1 0 0 0 ¦ | a ¦   ¦ Xt1 ¦
¦ Xs2 Ys2 1 0 0 0 ¦ ¦ b ¦   ¦ Xt2 ¦ 
¦ Xs3 Ys3 1 0 0 0 ¦ ¦ c ¦ = ¦ Xt3 ¦ 
¦ 0 0 0 Xs1 Ys1 1 ¦ ¦ d ¦   ¦ Yt1 ¦ 
¦ 0 0 0 Xs2 Ys2 1 ¦ ¦ e ¦   ¦ Yt2 ¦ 
¦ 0 0 0 Xs3 Ys3 1 ¦ ¦ f ¦   ¦ Yt3 ¦

Donde los parámetros a, b, c, d, e y f son desconocidos.

Una vez que calcule los parámetros a, b, c, d, e y f, (por ejemplo con este solucionador de ecuaciones en línea ) colóquelos en la interfaz del complemento QGIS de esta manera:

X' = a*x + b*y + c
Y' = d*x + e*y + f

o:

Parámetros de transformación afines

Creo que esto resuelve tus dos preguntas.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.