El proceso de definición de área de influencia con estadísticas de altitud (bufferElevation) implica la creación de un área de influencia (buffer) a partir de un punto y una distancia específica. Opcionalmente, se pueden obtener resultados estadísticos de altitud como la elevación máxima, mínima, promedio y desviación típica. Estas estadísticas se calculan a partir de los puntos contenidos en el área de influencia utilizando el Modelo Digital del Terreno (MDT05) proporcionado por el Plan Nacional de Ortofotografía Aérea.
- «geom»: Parámetro obligatorio que corresponde al punto a partir del que se va a calcular el área de influencia. Tipo de dato String
- «formato»: parámetro obligatorio que indica el formato en que se proporciona la geometría del parámetro «geom». Los formatos soportados son GML, GeoJSON y WKT. Tipo de dato: string.
- «crs» parámetro es opcional, que viene proporcionado por el sistema de referencia de los parámetros «geom», por defecto se utilizará el Sistema de referencia (EPSG: 4326). Tipo de dato: integer.
- «distancia»: distancia del área de influencia (metros). Si no se proporciona se utilizará el valor por defecto 100 metros.
- «estadisticas»: Indica si se quieren obtener las estadísticas del área de influencia calculada. Los valores permitidos son true/false. Valor por defecto se utiliza false.
- «id»: Identificador del proceso.
- «values» que es el resultado con la geometría del área de influencia calculada y las estadísticas si es solicitado. Formato de salida GeoJSON.

Ejemplo de API de procesos para la obtención de las estadísticas del área de influencia sobre el MDT de la galería de ejemplos de API CNIG

Interfaz del Swagger UI para acceder al proceso bufferElevation
El parámetro «geom» puede admitir distintos formatos como datos de entrada: WKT (Well Known Text), GeoJSON y GML. A continuación, se muestran varios ejemplos en los que varía el contenido del código JSON según el formato utilizado para el parámetro «geom».
Todos los ejemplos parten de las coordenadas geográficas de un punto cercano al pico del Teide (-16.642978, 28.272218), utilizando el sistema de referencia WGS84 (EPSG:4326) y una distancia fija de 3.000 metros.
De forma opcional, es posible solicitar el cálculo de valores estadísticos del terreno dentro del área de influencia —altitud mínima, máxima, media y desviación estándar— estableciendo el parámetro «estadisticas» con el valor true.
FORMATO |
EPSG |
GeoJSON |
4326 |
WKT |
|
GML |

Visualización del servicio WMS Mapa Raster del IGN del Parque Nacional El Teide donde se definirá un área de influencia para la obtención de los valores estadísticos de altitudes.
FORMATO GeoJSON
Para el cálculo de las estadísticas de altitud para un área de influencia en formato GeoJSON el código JSON para realizar la petición sería:
"inputs": { "crs": 4326, "formato": "geojson", "distancia": 3000, "estadisticas": true, "geom": "{\"coordinates\": [-16.642978, 28.272218], \"type\":\"Point\"}" } }
El cURL que se ejecuta:
curl -X POST "https://api-processes.idee.es/processes/bufferElevation/execution" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \"inputs\": { \"crs\": 4326, \"distancia\": 3000, \"estadisticas\": true, \"formato\": \"geojson\", \"geom\": \"{\\\"coordinates\\\": [-16.642978, 28.272218], \\\"type\\\": \\\"Point\\\"}\" } }"
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/bufferElevation/execution' myObj = { "inputs": { "crs": 4326, "distancia": 3000, "estadisticas": True, "formato": "geojson", "geom": "{\"coordinates\": [-16.642978,28.2722181],\"type\":\"Point\"}", } } 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.
FORMATO WKT
Para el cálculo de las estadísticas principales de las altitudes de un área de influencia en formato WKT, la geometría del punto viene dada por el parámetro «geom»: "POINT(longitud latitud)".
El código JSON para realizar la petición sería:
{ "inputs": { "crs": 4326, "formato": "wkt", "distancia": 3000, "estadisticas": true, "geom": "POINT(-16.64297, 28.272218)" } }
El cURL que se ejecuta:
curl -X POST "https://api-processes.idee.es/processes/bufferElevation/execution" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"inputs\":{\"crs\":4326,\"formato\":\"wkt\",\"distancia\":3000,\"estadisticas\":true,\"geom\":\"POINT(-16.642978,28.272218)\"}}"
FORMATO GML
Para el cálculo de las estadísticas principales de las altitudes de un área de influencia en formato GML, el código JSON de entrada modificando los parámetros «formato» y «geom» para definir el punto en formato GML sería:
{ "inputs": { "crs": 4326, "formato": "gml", "distancia": 3000, "estadisticas": true, "geom": "<gml:Point xmlns:gml='http://www.opengis.net/gml'><gml:coordinates>-16.64297 28.272218</gml:coordinates></gml:Point>" } }
El cURL que se ejecuta:
curl -X POST "https://api-processes.idee.es/processes/bufferElevation/execution" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"inputs\":{\"crs\":4326,\"formato\":\"gml\",\"distancia\":3000,\"estadisticas\":true,\"geom\":\"<gml:Point xmlns:gml='http://www.opengis.net/gml'><gml:coordinates>-16.642978 28.272218</gml:coordinates></gml:Point>\"}}"
RESULTADO DE LA EJECUCIÓN DEL PROCESO:
El resultado de ejecutar cualquiera de las anteriores peticiones definidas en los formatos (GeoJSON, WKT y GML) para el ejemplo propuesto, nos devuelve el mismo resultado en formato GeoJSON, del que mostramos una parte a continuación (Puedes descargar el fichero completo aquí):
{ "id": "BufferElevation", "values": { "type": "Feature", "properties": { "min": 2107.98291015625, "max": 3713.14599609375, "avg": 2840.152099609375, "std": 335.28131103515625 }, "geometry": { "type": "Polygon", "coordinates": [ [ [-16.612401296940373, 28.272582353895817], [-16.61242186480579, 28.27116512221552], [-16.61252618390792, 28.26834322044267], [-16.612713964998296, 28.269750785549427], ... [-16.61315428895513, 28.278202640349022], [-16.61284154950692, 28.276812596145028], [-16.61261142398962, 28.275409966329864], [-16.612464540015374, 28.273998595957746], [-16.612401296940373, 28.272582353895817] ] ] } } }

Estadísticas calculadas para el área de influencia definida.
Este artículo forma parte de una serie para saber más sobre OGC API Processes y otros procesos del Servicio OGC API procesos del CNIG. Consulta el artículo índice.
Publicado por María José García Rodríguez.
Comentarios