Transformar de ED50 a ETRS89 en PostGIS

Transformar de ED50 a ETRS89 en PostGIS

Topografia-ETRS89Aunque ya hace tiempo que se produjo la transformación de los datos al sistema ETRS89, todavía hoy en día es fácil encontrarnos con datos  en origen en el sistema ED50.

Existen distintos métodos para transformar datos entre un sistema a otro, como por ejemplo con GvSIG.

Vamos a abordar el proceso de transformación de datos desde ED50  23030 a ETRS89 25830 mediante funciones PostGIS directamente. Para ello, tenemos que seguir una serie de pasos que deberemos seguir en el orden correcto. Es un proceso muy sencillo y fácil de comprobar para ver si se ha realizado correctamente.

 

 

Primer paso:

Copiar la rejilla PENR2009.gsb en la ruta donde se encuentra instalador PostgreSQL en su ordenador. Normalmente, y dependiendo de la versión del mismo puede hallarse en “C:Program Files (x86)PostgreSQL9.xsharecontribpostgisproj”

Segundo paso:

Ejecutar las siguientes sentencias SQL en la base de datos donde queramos realizar la transformación.

  • update spatial_ref_sys set proj4text=proj4text ||’  +nadgrids=PENR2009.gsb’ where srid =23030 ;
  • update spatial_ref_sys set proj4text=proj4text || ‘ +nadgrids=null’ where srid =25830 ;

Con estos 2 pasos habremos completado el proceso en PostGIS y ya estará preparado para transformar los datos.

Para comprobar que tenemos correctamente generado el modelo de rejilla ejecutaremos la siguiente sentencia SQL que transforma de ED50 a ETRS89.

  • select st_astext(st_transform (st_geomfromtext (‘POINT(288859.9995 4003943.5001)’,23030),25830))

Si todo ha ido bien, el resultado debe ser el siguiente:

  • “POINT(288746.623944277 4003738.9449728)”

La sentencia SQL para transformar de ETRS89 a ED50 sería:

  • select st_astext(st_transform (st_geomfromtext (‘POINT(288746.623944276 4003738.9449728)’,25830),23030))

Cuyo resultado debe ser:

  • “POINT(288859.999497576 4003943.50009807)”

Tercer paso:

Como último paso, actualizaremos las geometrías a EPSG:25830 y después reproyectaremos.

  • select UpdateGeometrySRID(‘tabla’,’campo_geometrico’, 25830);
  • update tabla set campo_geometrico = st_transform(ST_SetSRID(campos_geometrico,23030) ,25830);

Con esto último ya tendremos las coordenadas en la tabla en el sistema que queremos.

 

 




Notice: ob_end_flush(): Failed to send buffer of zlib output compression (0) in /home/avantgeo/public_html/wp-includes/functions.php on line 5427

Notice: ob_end_flush(): Failed to send buffer of zlib output compression (0) in /home/avantgeo/public_html/wp-content/plugins/really-simple-ssl/class-mixed-content-fixer.php on line 107