Transformar coordenadas con MySql

La semana pasada trasteando en casa  con el MySql quería cambiar la proyección de unas geometrías y me hacia pereza exportar la tabla, proyectar y volver a importar.

Busqué por internet y encontré esta extensión LIB_MYSQLUDF_FPROJ4 que permite transformar un punto de una proyección a otra.  De hecho sólo permite una de las coordenadas del punto (X o Y). Hice algunas pruebas pero era difícil de usar para transformar una tabla con geometrías poli línea.

Total que decidí implementarme mi propio UDF.

MySql almacena las geometrías con formato SRID + WKB por lo que necesitaba unas rutinas para decodificar WKB. Podía usar las de PostGis, MapNik, etc … pero decidí usar la de GEOS básicamente porqué además del decodificador proporciona muchas funciones espaciales que MySql no tiene y además la usan Postgis y Spatialite. Total que es una librería  estándar de la mayoría  de proyectos GIS de código abierto.

Del mismo modo escogí la librería PROJ.4  para realizar las proyecciones ya que es la mas usada en proyectos de código abierto y seguramente una de las mas completas.

Con un par de horas ya podía decodificar y  codificar una geometría. Una horita mas y ya realizaba las primeras transformaciones.

Copié al MySql la tabla que contenía la definición de todos los sistemas de referencia de una base de datos. Quería leer esta tabla des de la función UDF para convertir el SRID en una definición de proyección PROJ.4. Aquí me encontré con un problema gordo: para leer la tabla se tenia que crear una nueva conexión con la base de datos y facilitar un usuario y password. Pero como podías obtener el password del usuario que ha llamado al UDF ? Total que al final  lo descarté y añadí un par de funciones SQL para trabajar con SRID’s y que llaman a la función UDF con la definición de proyección PROJ.4 origen, destino y el SRID que debe tener la geometría destino.

Cuando tenga un poco de tiempo intentaré publicar la librería en github para quien pueda interesar …

Ya está publicada la podéis descargar de MySQL-Spatial-UDF

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


A %d blogueros les gusta esto: