5 ago 2024

Servicio OGC API de procesos: Proceso unitconversion – Conversor de Unidades

 


El proceso «Conversor de Unidades» (unitconversion) permite obtener la conversión de grados decimales a grados, minutos y segundos (dms) y viceversa, de grados, minutos y segundos a grados decimales (dec).  

Datos de entrada: 
  • «degree»: Parámetro obligatorio que corresponde a las coordenadas en grados. Si el parámetro «convertto=dec» son grados decimales. Si el parámetro «convertto=dms» es la parte entera de los grados. Tipo string para evitar errores que algunos clientes generan con el valor -0.
  • «minutes»Corresponde a la parte en minutos de las coordenadas en formato «dms». Este parámetro es obligatorio cuando la conversión es a grado decimales (el parámetro «convertto» tiene valor «dec»). Tipo de dato: string
  • «seconds»: es la parte en segundos de las coordenadas en formato «dms». Parámetro obligatorio si el parámetro «convertto=dec».
  • «convertto»: Indica el tipo de conversión. Los posibles valores son: «dms» (grados minutos y segundos) y «dec» (decimales). El valor por defecto es «dms»

Datos de salida:

  • «outformat»: resultado de la conversión de coordenadas.
Ejecución del proceso:

Para la ejecución del proceso unitConversion se utiliza una función POST. Es obligatorio ejecutar la petición en JSON. Para verificar los API de procesos se puede utilizar Swagger UI que ofrece la misma interfaz de processes.


Este proceso permite verificar el proceso de conversión de unidades, introduciendo el código en JSON con el modo edición («Try it out») y obtener su correspondiente resultado. También, existe otra forma más experta de explotar el servicio a través del comando cURL o de una biblioteca de Python llamada requests.

A continuación, se muestran dos ejemplos de conversión que facilitan la comprensión de este proceso API de unidades de conversión de coordenadas («unitConversion»).

Conversión de unidades de grados, minutos y segundos («dms») a grados decimales («dec»)

Para realizar este caso se introducen en el Swagger en formato «dms», grados, minutos y segundos, las coordenadas que se quiere convertir a grados decimales. Para ello, se emplea el parámetro «convertto=dec»:

 {
 "inputs": {
   "convertto": "dec",
   "degrees": "-3",
   "minutes": "40",
   "seconds": "59.054"
  }
}

El cURL que se ejecuta:

curl -X POST "https://api-processes.idee.es/processes/unitConversion/execution" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"inputs\":{\"convertto\":\"dec\",\"degrees\":\"-3\",\"minutes\":\"40\",\"seconds\":\"59.054\"}}"

La solución al ejemplo 1 es el resultado de la conversión de unidades en grados decimales:


 
-3.6830705555555556   

Ejemplo de petición desde script Python

Para realizar la misma petición HTTP POST al servicio publicado en una OGC API processes desde un script de Python 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). El resultado de la petición 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/unitConversion/execution'

 myObj = {
            "inputs": {
            "convertto": "dec",
            "degrees": "-3",
            "minutes": "40",
            "seconds": "59.054"
           }
        }


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)

Para crear el script de Python para otros datos de conversión de coordenadas, solo habría que modificar el objeto myObj con el JSON indicado en cada caso.

Conversión de unidades en formato grados decimales («dec») a grados, minutos y segundos («dms»).

Para introducir las coordenadas en grados decimales («dec») en el 
Swagger y convertirlas a grados, minutos y segundos se emplea el parámetro «convertto=dms»:

 {
 "inputs": {
   
"degrees": "0.5367941666666667",
   
"convertto": "dms"
  }
}

El cURL que se ejecuta:

 curl -X POST "https://api-processes.idee.es/processes/unitConversion/execution" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"inputs\":{\"degrees\":\"0.5367941666666667\",\"convertto\":\"dms\"}}"

Como resultado se obtiene la conversión de unidades en el formato grados, minutos y segundos:

{
   "degrees": 0,
   "minutes": 32,
   "seconds": 12.459"
}

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 se puede consultar el artículo índice.

Publicado por María José García Rodríguez

No hay comentarios: