Por la gran dificultad que hubo en obtenerlos, se muestran los parámetros que definen el datum «Pico de Las Nieves», empleado en Canarias hasta 1995, fecha en que se implantó el REGCAN95 (a efectos prácticos, el WGS84). No lo confundan con el datum «Piton des Neiges», que corresponde a la isla de Reunión, en el archipiélago de las Mascareñas.
Son los siguientes:
Elipsoide Internacional 1924 (Hayford)
a = 6378388,0
1/f = 297,0
dx = –307
dy = –92
dz = 127
Lo que sigue a continuación funciona bien y me ha ido muy bien para reciclar cartografía digital antigua.
Nota: En la actual tabla spatial_ref_sys de PostGIS aparece correctamente como EPSG:4728. Sin embargo, sólo sirve para la transformación en coordenadas geográficas, no en coordenadas de la proyección UTM para los husos 27 y 28, por lo que este artículo sigue siendo de utilidad. Comprueben en cualquier caso que aparecen las correcciones dx, dy y dz en, p. ej., el campo srtext (tendría que aparecer TOWGS84[-307,-92,127,0,0,0,0]); antaño no aparecían.
Puede encontrarlo actualmente junto con otros «raros» en
GPS-Infos (en alemán), o, mejor aún, en
este archivo.
Preliminares e instalación
Los cambios que se han de efectuar en PostgreSQL se encuentran en este archivo (de texto con los comandos SQL) y se instalan de la misma manera que spatial_ref_sys.sql. Aparecerá un error si ya ha definido los SRID 1001, 1027 y 1028; en este caso tendrá que cambiarlos manualmente editando el archivo.
Nota: Ya no hace falta definir el registro para SRID 1001, puesto que es del todo equivalente a SRID 4728.
Las definiciones EBNF de los sistemas de coordenadas geográfico y proyectados UTM 28N y 27N (este último se empleaba en El Hierro), junto con los parámetros de transformación para la librería proj4, se muestran a continuación.
N.B.: Lo que no está definido en EPSG, lo defino como «JAVCUS» de manera arbitraria —para su mejor localización y porque, al fin al cabo, me ha dado trabajo determinarlos— y se le asigna un identificador de sistema de referencia espacial (SRID) arbitrario no empleado en PostGIS; de este modo, puede localizar fácilmente los cambios y/o adaptar las definiciones a sus necesidades.
Explicación de pico_de_las_nieves.sql
En las secciones siguientes se muestran tanto el strtext OpenGIS (sangrado, para su mejor lectura e interpretación) que define completamente el datum y el sistema de proyección empleado, como los parámetros para la conversión a cualquier otro mediante proj4, el motor de transformación opcional de PostGIS, que recomiendo encarecidamente instalar.
JAVCUS:1001 «Pico de Las Nieves» (geográficas)
Corresponde al expresado en coordenadas geográficas (latitud/longitud). Arbitrariamente le he asignado el ID 1001 en la tabla spatial_ref_sys. Equivalente en las últimas versiones a SRID 4728.
Srtext OpenGIS
GEOGCS[
"Pico de las Nieves",
DATUM[
"Pico de las Nieves",
SPHEROID[
"International 1924",
6378388,
297,
AUTHORITY["EPSG","7022"]
],
TOWGS84[-307,-92,127,0,0,0,0],
AUTHORITY["JAVCUS","1000"]
],
PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],
UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],
AUTHORITY["JAVCUS","1001"]
]
Parámetros para proj4
+proj=longlat +ellps=intl +towgs84=-307,-92,127,0,0,0,0 +no_defs
JAVCUS:1028 «Pico de Las Nieves» / UTM zone 28N
Corresponde a la proyección UTM zona 28, que era la más empleada para escalas medias y grandes en casi todas las islas del archipiélago. Arbitrariamente le he asignado el ID 1028 en la tabla spatial_ref_sys.
Srtext OpenGIS
PROJCS[
"Pico de las Nieves / UTM zone 28N",
GEOGCS[
"Pico de las Nieves",
DATUM[
"Pico de las Nieves",
SPHEROID[
"International 1924",
6378388,
297,
AUTHORITY["EPSG","7022"]
],
TOWGS84[-307,-92,127,0,0,0,0],
AUTHORITY["JAVCUS","1000"]
],
PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],
UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],
AUTHORITY["JAVCUS","1001"]
],
PROJECTION["Transverse_Mercator"],
PARAMETER["latitude_of_origin",0],
PARAMETER["central_meridian",-15],
PARAMETER["scale_factor",0.9996],
PARAMETER["false_easting",500000],
PARAMETER["false_northing",0],
UNIT["metre",1,AUTHORITY["EPSG","9001"]],
AUTHORITY["JAVCUS","1028"]
]
Parámetros para proj4:
+proj=utm +zone=28 +ellps=intl +towgs84=-307,-92,127,0,0,0,0
+units=m +no_defs
JAVCUS:1027 «Pico de Las Nieves» / UTM zone 27N
Corresponde a la proyección UTM zona 27, que sólo se empleó en la cartografía de la isla de El Hierro (la más occidental). En la cartografía digital es bastante común representarla en el huso 28, y además la distorsión se mantiene por debajo del 1 ‰ (está muy poco alejada del límite de la zona). Arbitrariamente le he asignado el ID 1027 en la tabla spatial_ref_sys.
Srtext OpenGIS
PROJCS[
"Pico de las Nieves / UTM zone 27N",
GEOGCS[
"Pico de las Nieves",
DATUM[
"Pico de las Nieves",
SPHEROID[
"International 1924",
6378388,
297,
AUTHORITY["EPSG","7022"]
],
TOWGS84[-307,-92,127,0,0,0,0],
AUTHORITY["JAVCUS","1000"]
],
PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],
UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],
AUTHORITY["JAVCUS","1001"]
],
PROJECTION["Transverse_Mercator"],
PARAMETER["latitude_of_origin",0],
PARAMETER["central_meridian",-21],
PARAMETER["scale_factor",0.9996],
PARAMETER["false_easting",500000],
PARAMETER["false_northing",0],
UNIT["metre",1,AUTHORITY["EPSG","9001"]],
AUTHORITY["JAVCUS","1027"]
]
Parámetros para proj4
+proj=utm +zone=27 +ellps=intl +towgs84=-307,-92,127,0,0,0,0
+units=m +no_defs
Empleo en PostGIS
Se me podrá preguntar: ¿y este rollo, para qué sirve? Pues para obtener la transformación de cualquier tipo geometry de PostGIS, y muy fácilmente. Por ejemplo, si se dispone de una columna figura de tipo geometry que contiene POLYGON con el SRID 1028 (el que se ha asignado a «Pico de Las Nieves» / UTM zona 28N), la función
Transform(figura, 32628)
devuelve el POLYGON transformado en WGS84 UTM zona 28N.
Si no se le había asignado al campo figura ningún SRID (o sea, vale –1), que es lo único sensato que se puede hacer a menos que se instale lo que se explica en este artículo, y se sabe que son POLIGON en «Pico de Las Nieves» / UTM zona 28N, se modifica el código con:
Transform(SetSRID(figura, 1028), 32628)
La función SetSRID fuerza a que el SRID sea el del segundo argumento si es indefinido (–1).
Existen otras alternativas que se explican en el manual de PostGIS, pero se comentarán en otro artículo bajo demanda.