BLOG IDEE

Responsive Image

BLOG IDEE

Blogs

De la complejidad de WFS a la simplicidad de OGC API – Features

¿Te frustra consultar servicios WFS con «endpoints» kilométricos? ¿Quieres obtener todas las direcciones de un código postal? Si es así, este artículo es para ti.

Por suerte, las OGC API - Features han llegado para facilitarnos la vida: peticiones simples, formatos modernos como JSON o GeoJSON y una estructura que cualquier desarrollador entiende a la primera.

Cuando hablamos de «endpoints kilométricos», nos referimos a esas URL con multitud de parámetros que cuesta construir, entender y depurar. Observa el siguiente ejemplo WFS para obtener solo 10 direcciones de una zona (BBOX) concreta:

Ahora compáralo con la misma petición usando OGC API - Features:

Mucho más claro, ¿verdad?

Visto el potencial de OGC API - Features, es momento de profundizar: veremos cómo consultar, filtrar y explorar objetos geográficos de forma práctica y sencilla.

Nos centraremos en una de las colecciones más solicitadas y que deben producirse con la máxima resolución posible: las direcciones postales (renombrados con el nombre técnico INSPIRE: AD_Dirección).

Las direcciones están clasificadas como conjunto de alto valor y datos principales por el Comité de Expertos de las Naciones Unidas sobre la Gestión Mundial de la Información Geoespacial (UN-GGIM) para los Objetivos de Desarrollo Sostenible. Con el objetivo de que los datos sean reutilizables e interoperables se estructuran con los siguientes atributos definidos en el Reglamento (UE) nº 1089/2010 (véase página 57)

Además, una ventaja fundamental es que los datos proceden de fuentes oficiales y normalizadas a través del proyecto CartoCiudad, lo que garantiza su calidad, actualización y alineación con los estándares europeos. Esto los convierte en una referencia fiable tanto para administraciones como para desarrollos empresariales.

Los principales atributos disponibles de esta colección son:

Nombre del Atributo

Tipo de Atributo

Significado

inspireId_localId
Identificador único de la dirección

string

Código único de la dirección dentro del conjunto de datos. Ej.: 121025

inspireId_namespace
Espacio de nombres

string

Completa el localid y garantiza la unicidad del identificador a nivel global. Ej.: esp_ign

component_ThoroughfareName
Nombre de la vía

string

Por ejemplo: calle, avenida, plaza, etc

locator_designator_addressNumber
Número del portal o número principal

string

Ej.: 12

locator_designator_addressNumberExtension
Extensión del número

string

Letra o elemento adicional del número. Ej.: B en 12B

component_PostalDescriptor
Código postal

string

Ej.: 28014.

component_AddressAreaName
Núcleo de población

string

Nombre del núcleo o entidad menor. Basado en IGR del IGN

component_AdminUnitName_4
Municipio

string

Nombre del municipio al que pertenece la dirección

component_AdminUnitName_3
Provincia

string

Nombre de la provincia

component_AdminUnitName_2
Comunidad Autónoma

string

Nombre de la Comunidad Autónoma

geometry
Geometría

geometry

Coordenadas de la ubicación de la dirección postal. GeoJoson Point.

 

La siguiente imagen muestra de forma esquemática los elementos clave que conforman una dirección postal conforme al modelo INSPIRE, y que están disponibles como atributos en la colección address del servicio OGC API – Features.

 

 

Llegados a este punto, vamos a ver de qué forma tendremos que estructurar las peticiones para buscar resultados de acuerdo con nuestras necesidades.

La estructura básica de un endpoints para cualquier petición en una OGC API - Features sigue el siguiente patrón:

<URL base>/collections/< nombre_colección>/items?< filtros>&< formato>

 ¿Qué significa cada parte?

  • <URL base>: dirección del servicio (por ejemplo: https://api-features.idee.es).
  • collections/<nombre_colección>: colección temática. En este caso, address.
  • items: recupera los objetos geográficos (features) de la colección.
  • ?<filtros>: parámetros de filtrado (por ejemplo, component_AdminUnitName_4=Oviedo).
  • f=: formato de salida (json, html, etc.)

Una vez entendida la estructura, veamos un ejemplo concreto y muy habitual:

¿Cómo obtener todas las direcciones postales de un código postal determinado?

La respuesta es simple. Solo hay que construir una URL como esta:

Esta petición accede a la colección address, filtrando por el código postal 33401, y devuelve los resultados en formato GeoJSON, un formato ideal para usar en Python, QGIS o aplicaciones web.

Además de los datos de cada dirección (nombre de vía, número, geometría...), la respuesta incluye información adicional útil para controlar los resultados:

  • "numberMatched": 3523 → total de elementos que coinciden con el filtro.
  • "numberReturned": 10 → número de elementos devueltos en esta respuesta concreta (valor por defecto del servicio).

¿Y si queremos obtener todos los resultados?

Para evitar la paginación y recuperar todos los elementos en una sola petición, basta con utilizar el parámetro limit, que define cuántos registros debe devolver el servicio.

En nuestro caso, como sabemos que hay 3.523 direcciones (numberMatched) en el código postal 33401, podemos construir la URL así:

Con esta simple modificación, recibiremos todos los datos de golpe, sin necesidad de recorrer páginas ni hacer múltiples peticiones.

Conclusión: fácil, limpio, listo para usar (y sin dolores de cabeza)

Gracias a OGC API - Features, acceder a datos geoespaciales como direcciones postales ya no requiere descifrar URLs imposibles ni lidiar con formatos complejos como GML.

Con una estructura clara, soporte para filtrado directo y respuestas en JSON, esta nueva generación de APIs hace que consumir datos geográficos sea tan sencillo como trabajar con cualquier API REST moderna.

Y esto es solo el principio.

Te invito a probarlo, explorar otras colecciones del servicio y seguir experimentando.

Para más información sobre las OGC-API te recomiendo estos artículos:

Publicado por Óscar A. Cano, Cecilia Poyatos, Paloma Abad, Gloria Andrés

Contacto
Calle General Ibáñez de Íbero 3
​​​​​​​Madrid 28003
Síguenos
Responsive Image

BLOG IDEE

Responsive Image
Responsive Image

BLOG IDEE

Responsive Image
Contacto
Calle General Ibáñez de Íbero 3
​​​​​​​Madrid 28003
Síguenos
Responsive Image