El objetivo del proceso de transformación de coordenadas es obtener las coordenadas de un punto, dadas en un sistema de referencia, en otro, basándose en la especificación de OGC Web Transformation Coordinate Service (WCTS). Este proceso permite la utilización de cualquier datum. En la página de API processes coordinatesTransform podemos consultar los parámetros de entrada y de salida:
Datos de entrada:
- «point»: corresponde a pares de coordenadas separadas por comas. Las coordenadas geográficas deben introducirse en grado y fracción de grado (GG.GGGG) mientras que las coordenadas UTM se introducen en metros. En las coordenadas geográficas, en las longitudes oeste y latitudes sur, poner un signo negativo. Tipo de dato: string.
- «source»: es el Sistema de Referencia Coordenadas de la geometría de entrada. Valor por defecto 4230 (ED50). Para la transformación entre ED50 y ETRS89 se usarán las rejillas PENR2009.gsb y BALR2009.gsb. Tipo de dato: integer.
- «target»: es el Sistema de Referencia Coordenadas de la geometría de salida. Valor por defecto 4258 (ETRS89). Para la transformación entre ED50 y ETRS89 se usarán las rejillas PENR2009.gsb y BALR2009.gsb. Tipo de dato: integer.
Datos de salida:
- «outformat»: son los pares de coordenadas transformadas al sistema de referencia indicado. Las coordenadas UTM se darán en metros mientras que las geográficas serán en grados sexagesimales. Si éstas se encuentran en las longitudes oeste y latitudes sur se mostrarán con un signo negativo.
Ejecución del proceso:
Una opción para verificar los API de procesos es utilizar
Swagger UI que ofrece la misma interfaz de procesos. Desde aquí podemos acceder al
coordinatesTransform de una manera sencilla, de modo que podemos verificar el procedimiento para la obtención la transformación de coordenadas. Otra forma más experta de explotar lo servicios es a través del comando
cURL o de una biblioteca de Python llamada
requests.
A continuación, veremos varios ejemplos en los que iremos variando el sistema de coordenadas de entrada y, utilizando el servicio OGC API de procesos: transformación de coordenadas, obtendremos las coordenadas de un punto en otros sistemas de coordenadas diferentes:
|
Datos de entrada
|
Ejemplo
|
Punto
|
Source
|
Target
|
1
|
P
|
4326
|
25830
|
2
|
P
|
4326
|
23030
|
3
|
P
|
25830
|
4326
|
4
|
P
|
25830
|
4258
|
Ejemplo 1
Partimos de las coordenadas geográficas de un punto P en WGS84 (-3.960924, 40.823162) y queremos obtener
las coordenadas en el Sistema de Referencia de Coordenadas ETR89 UTM Huso
30N (EPSG 25830). El código JSON de entrada que emplearemos para aplicar
el proceso coordinatesTransform para obtención de coordenadas transformadas,
es el siguiente:
{
"inputs": {
"points": [-3.960924, 40.823162],
"source": 4326,
"target": 25830
}
}
El cURL que se ejecuta:
curl -X POST "https://api-processes.idee.es/processescoordinatesTransform/execution" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"inputs\":{\"points\":[-3.960924,40.823162],\"source\":4326,\"target\":25830}}
El resultado de las coordenadas en el el sistema de referencia ETRS89 UTM Huso
30N son:
{
"x": 418968.65169915627,
"y": 4519570.897995114
}
Ejemplo de petición desde script Python
En el siguiente ejemplo se muestra cómo realizar la misma petición HTTP POST al servicio publicado en una OGC API
processes desde un
script de Python. Para ello, se utiliza la librería
requests, cuya importación se realiza en la primera línea. Posteriormente se definen las variables «url» (texto con la URL a la que se va a realizar la petición) y «myObj» (json con los parámetros de entrada de la función a ejecutar). Por último, se realiza la petición y se guarda en el parámetro «result».
Dentro de la variable tenemos distintos métodos, entre los que destacan:
- «request» para obtener los datos de la petición
- «.json()» para obtener el resultado de la operación ejecutada en formato json
- «.status_code» para obtener el estado de la petición HTTP.
import requests
# URL del proceso en el processes
url = 'https://api-processes.idee.es//processes/coordinatesTransform/execution'
myObj = {
"inputs": {
"points": [
-3.960924,
40.823162
],
"source": 4326,
"target": 25840
}
}
result = requests.post(url, json = myObj)
print('resultado de la petición: ',result.request)
print('resultado del proceso: ',result.json())
print('estado de la petición: ',result.status_code)
En los siguientes ejemplos sólo se muestra la petición cURL, por simplificar. Para crear el script de Python, solo habría que modificar el objeto myObj con el JSON indicado en cada caso.
Ejemplo 2
En este segundo ejemplo, se muestra el código JSON de entrada empleado para la transformación de las coordenadas del Sistema de Referencia WGS84 (EPSG 4326) al ED50 UTM Huso 30N (EPSG 23030).
{
"inputs": {
"points": [-3.960924, 40.823162],
"source": 4326,
"target": 23030
}
}
El cURL que se ejecuta:
curl -X POST "https://api-processes.idee.es/processescoordinatesTransform/execution" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"inputs\":{\"points\":[-3.960924,40.823162],\"source\":4326,\"target\":23030}}
El resultado de las coordenadas en EPSG 23030:
{
"x": 19077.64189113514,
"y": 4519778.135371966
}
Ejemplo 3
En este ejemplo se quiere realizar una transformación del Sistema de Referencia de Coordenadas ETR89 UTM Huso 30N (EPSG 25830) al Sistema WGS84 (EPSG 4326), es un ejemplo de transformación de coordenadas inverso al ejemplo 1. Para ello, utilizaremos el siguiente código JSON:
{
"inputs": {
"points": [418968.65169915627, 4519570.897995114],
"source": 25830,
"target": 4326
}
}
El cURL que se ejecuta:
curl -X POST "https://api-processes.idee.es/processescoordinatesTransform/execution" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"inputs\":{\"points\":[418968.65169915627, 4519570.897995114],\"source\":25830,\"target\":4326}}
El resultado de las coordenadas en EPSG 4326:
{
"x": -3.960924,
"y": 40.82316200000001
}
Ejemplo 4
En este ejemplo se quiere obtener
las coordenadas del Sistema de Referencia de Coordenadas ETR89 UTM Huso 30N
(EPSG 25830) al Sistema ETR89 (EPSG 4258),
el código JSON de entrada que utilizaremos es el siguiente:
{
"inputs": {
"points": [418968.65169915627, 4519570.897995114],
"source": 25830,
"target": 4258
}
}
El cURL que se ejecuta:
curl -X POST "https://api-processes.idee.es/processescoordinatesTransform/execution" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"inputs\":{\"points\":[418968.65169915627, 4519570.897995114],\"source\":25830,\"target\":4258}}
El resultado de las coordenadas en EPSG 4258:
{
"x": -3.960924,
"y": 40.82316200000001
}
Caso de Uso
Se está utilizando este proceso API de transformación de coordenadas en el servicio de transformación de coordenadas del IGN que permite transformar las coordenadas de un punto o un conjunto de datos en formato GML de un Sistema de Referencia a otro.
El anterior servicio WPS (Web Processing Service) ha dejado de estar operativo, debido a que ya se está utilizando en su lugar el nuevo servicio API processes.
Códigos EPSG
Los códigos EPSG (European Petroleum Survey Group) nos indican el Sistema de Referencia de Coordenadas (SRC). Estos nos servirán para realizar la transformación de coordenadas de un punto con un SRC origen a otro SRC destino en el servicio API processes.
Los códigos EPSG normalmente utilizados en España son:
Códigos EPSG
|
Descripción
|
EPSG: 3857
|
Proyección WGS84 / Pseudo-Mercator
|
EPSG: 4230
|
Coordenadas Geográficas ED50
|
EPSG:4326
|
Coordenadas Geográficas WGS84
|
EPSG:4258
|
Coordenadas Geográficas ETRS89
|
EPSG:23028
|
Proyección UTM ED50 Huso 28 N
|
EPSG:23029
|
Proyección UTM ED50 Huso 29 N
|
EPSG:23030
|
Proyección UTM ED50 Huso 30 N
|
EPSG:23031
|
Proyección UTM ED50 Huso 31 N
|
EPSG:25828
|
Proyección UTM ETRS89 Huso 28 N
|
EPSG:25829
|
Proyección UTM ETRS89 Huso 29 N
|
EPSG:25830
|
Proyección UTM ETRS89 Huso 30 N
|
EPSG:25831
|
Proyección UTM ETRS89 Huso 31 N
|
EPSG:4082
|
Proyección REGCAN95 Huso 27
|
EPSG:4083
|
Proyección REGCAN95 Huso 28
|
EPSG 32628
|
Proyección UTM WGS84 Huso 28 N
|
EPSG 32629
|
Proyección UTM WGS84 Huso 29 N
|
EPSG 32630
|
Proyección UTM WGS84 Huso 30 N
|
EPSG 32631
|
Proyección UTM WGS84 Huso 31 N
|
EPSG:3034
|
ETRS89/ETRS-LCC para la cartografía pan-Europeo a escalas <=
1:500.000
|
EPSG:3035
|
ETRS89/ETRS-LAEA para representación y análisis estadístico
pan-Europeos
|
Para más información, puedes acceder al portal Spatial Reference donde se puede buscar el código EPSG, obtener la información relativa al Sistema de Referencia de Coordenadas y la visualización de su correspondiente zona territorial.
Este artículo forma parte de una serie, para saber más sobre API Processes de OGC y otros procesos del Servicio API del CNIG consulta el artículo índice.
Publicado por María José García Rodríguez.