25 mar 2024

Servicio OGC API de procesos: Proceso coordinatesTransform


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:

Para la ejecución del proceso se utiliza una función POST. Se accede a la dirección: https://api-processes.idee.es/processes/coordinatesTransform y es obligatorio ejecutar la petición en JSON.

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/processes/coordinatesTransform/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/processes/coordinatesTransform/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/processes/coordinatesTransform/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/processes/coordinatesTransform/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.

1 comentario:

Anónimo dijo...

Hola.
La orden CURL tiene un error:
donde pone /processescoordinatesTransform/
debe poner /processes/coordinatesTransform/