Antes de
iniciar este post, deseo saludar al amigo Eddison
Araya de Costa Rica por la
sugerencia de este tema. A veces en la tabla spatial_ref_sys
del PostGis no hay Proyecciones o Datums que necesitamos como es el caso del
“CRTM 05” de Costa Rica, cuyos parámetros son:
Elipsoide: WGS84
Factor de Escala: 0.9999
Falso Norte: 0
Falso Este 500000
Longitud de Origen: -84°
Latitud de Origen: 0°
Shift X : 0
Shift Y: 0
Shift Z: 0
Factor de Escala: 0.9999
Falso Norte: 0
Falso Este 500000
Longitud de Origen: -84°
Latitud de Origen: 0°
Shift X : 0
Shift Y: 0
Shift Z: 0
A) Estructura de la tabla spatial_ref_sys
Luego veamos
la estructura de la tabla spatial_ref_sys y el contenido de la nueva Proyección
/ Datum
COLUMNAS
|
CONTENIDO
|
COMENTARIO
|
srid
|
123456
|
código de la proyección, tu
puedes poner un código que quieras, pero debe ser único en la tabla spatial_ref_sys
|
auth_name
|
ingeografos
|
nombre del autor, puedes poner
tu nombre
|
auth_srid
|
123456
|
código de la proyección dado
por el autor. Debe ser el mismo que el de la Columna srid
|
srtext
|
PROJCS["COSTA RICA (CRTM 05)", GEOGCS["CR05 /
CRTM05",DATUM["CR05",SPHEROID["WGS84",6378137,298.257223563,AUTHORITY["EPSG","7030“]],AUTHORITY["EPSG","1065“]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901“]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","5367“]],UNIT["metre",1,AUTHORITY"EPSG","9001"]],
PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",-84],PARAMETER"scale_factor",0.9999],PARAMETER"false_easting",500000],PARAMETER["false_northing",0],AUTHORITY["EPSG","123456"],AXIS["Easting“,EAST],AXIS["Northing",NORTH]]
|
Sistema de Coordenadas
representado en el formato WELL KNOW TEXT (WKT)
|
proj4text
|
+proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=500000 +y_0=0
+ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
|
Sistema de Coordenadas según el
formato de PROJ4
|
Dónde los códigos son (en el orden presentado):
a. 7030:
código del esferoide (WGS 84)
b. 1065:
Datum (CR05)
c. 8901:
Meridiano Central (Greenwich)
d. 9122:
Unidad de medida usado por el Sistema de Referencia de Coordenadas (Grados sexagesimales)
e. 5367:
código del Sistema de Referencia de Coordenadas (CR05 / CRTM05)
f. 9001:
Unidad de la Proyección (metros)
g. 123456:
código de la Proyección / Datum ingresado
Los códigos desde la a, hasta el f, están en la base
de datos que está disponible en
http://www.epsg.org/
Sistema de Referencia obtenido de la pagina http://www.epsg.org/ Los códigos hablados anteriormente enmarcados en rojo |
Datum obtenido de la pagina http://www.epsg.org/ y los códigos hablados anteriormente enmarcados en rojo |
B) Modo de ingreso de la nueva Proyección / Datum a la tabla spatial_ref_sys
Hay dos formar de ingresar una nueva Proyección /
Datum a la tabla spatial_ref_sys:
- Directamente en la tabla spatial_ref_sys:
haciendo doble click en la parte final de la tabla en mención y colocar los
parámetros respectivos descritos en el apartado A de este Post.
2) Luego coloca los parámetros de acuerdo al apartado A de este Post.
- Mediante una sentencia SQL de Inserción a la
tabla spatial_ref_sys: para eso abrimos una consulta SQL y ponemos esta
sentencia:
INSERT INTO spatial_ref_sys(srid, auth_name, auth_srid, srtext, proj4text) VALUES (123456,'ingeografos',123456, 'PROJCS["COSTA RICA (CRTM 05)", GEOGCS["CR05 / CRTM05",DATUM["CR05",SPHEROID ["WGS84",6378137,298.257223563,AUTHORITY["EPSG","7030“]],AUTHORITY["EPSG","1065“]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901“]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","5367“]],UNIT["metre",1,AUTHORITY"EPSG","9001"]], PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",-84],PARAMETER"scale_factor",0.9999],PARAMETER"false_easting",500000],PARAMETER["false_northing",0],AUTHORITY["EPSG","123456"],AXIS["Easting“,EAST],AXIS["Northing",NORTH]]', '+proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m ');
Y luego ejecutamos la consulta y actualizamos la tabla y veremos la nueva Proyección / Datum
C) Verificación
de la nueva Proyección / Datum ingresada a la tabla spatial_ref_sys
Para verificarlo, hacemos otra consulta SQL tal como
esta:
SELECT ST_AsEWKT(st_Transform((ST_SetSRID(ST_MakePoint(-82.94439225, 8.64435069),4326)),123456))
Dónde:
ST_SetSRID(ST_MakePoint(-82.94439225, 8.64435069),4326)), crea un punto con las coordenadas Longitud -82.94439225, Latitud 8.64435069 con
el datum que tiene por código 4326 en la tabla spatial_ref_sys , que es el datum WGS84, Proyección Geográfica.
(ST_Transform((ST_SetSRID(ST_MakePoint(-82.94439225, 8.64435069),4326)),123456), crea un punto con las coordenadas Longitud -82.94439225, Latitud 8.64435069 con el datum que tiene por código 4326 en la tabla spatial_ref_sys , que es el datum WGS84, Proyección Geográfica y lo
transforma al Datum CR05, Proyección CRTM05, cuyo código en la misma tabla es el 123456.
SELECT
ST_AsEWKT(ST_Transform((ST_SetSRID(ST_MakePoint(-82.94439225, 8.64435069),4326)),123456)), que es toda la sentencia sql, y muestra las
coordenadas -82.94439225, 8.64435069 cuyo datum de origen es el WGS84 proyectadas al
CRTM05 con este resultado:
"SRID=123456;POINT(61678.33129184 955980.598525378)"
se puede usar el documento de este enlace:
http://www.rnpdigital.com/catastro/Documentos/GUiA_TEC_GEORREF_PLAN_AGRIM_ACT_FEBR_2013.pdf
en la pagina 18 del mismo, hay 8 coordenadas Geográficas en WGS84 y se pueden transformar a CRTM 05 para comparar los resultados, viendo que hay una diferencia desde el tercer decimal (en los milímetros), concluyendo que la transformación es aceptable.
Esperando que este post sea de ayuda y otra vez saludando al amigo Eddison Araya de Costa Rica, será hasta el otro mes. Hasta luego