23 jul 2024

Servicio de OGC API de procesos: Proceso bsq-fotogramas

 

Recientemente se ha integrado el nuevo proceso «Búsqueda de fotogramas» (bsq-fotogramas) en el servicio OGC API de procesos de la IDEE. En este artículo vamos a explicar la finalidad de este proceso y su modo de utilización con algunos ejemplos.

El proceso bsq-fotogramas permite realizar búsquedas de fotogramas analógicos y digitales con la finalidad de obtener sus parámetros de orientación externa sin necesidad de interactuar con la Fototeca Digital.

La Fototeca Digital es un visualizador que pone a disposición de los usuarios vuelos fotogramétricos de parte o de la totalidad del territorio nacional, realizados desde el año 1929 hasta la actualidad. Entre otras funciones, permite la consulta de información sobre los fotogramas que incluye, en algunos casos, los parámetros de orientación externa. También es posible descargar y solicitar la certificación de los fotogramas que son custodiados en el Archivo de la Fototeca del CNIG.

Con el proceso bsq-fotogramas, se permite desarrollar aplicaciones externas para agilizar procesos fotogramétricos con información procedente de la Fototeca del CNIG.

Este servicio facilita a personas desarrolladoras y usuarias expertas la consulta de fotogramas existentes en un rango de fechas para una determinada área geográfica, o directamente con el nombre de los fotogramas. El resultado es un listado con los valores de las coordenadas y los giros obtenidos en los procesos de aerotriangulación de los vuelos PNOA. 

Datos de entrada: 
  • «fecha»Rango de fechas donde buscar los fotogramas con el formato «fecha_desde-fecha_hasta», ambas incluidas. Se admiten diferentes formatos de entrada válidos, dd/mm/aaaa, mm/aaaa y aaaa pero debe utilizarse el mismo en las dos fechas. p. ej.: "06/06/2022-12/06/2022". El filtro devuelve valores para datos de fecha con precisión igual o mayor que el de las fechas proporcionadas.
  • «geom»: Extensión de la zona de búsqueda en coordenadas EPSG:3857. Por defecto, formato WKT. Se puede especificar otro formato en el parámetro «formatogeom». 
    • Ejemplo bbox: "geom": [xmin,ymin,xmax,ymax].
    • Ejemplo json: "geom": {"type":"Polygon", "coordinates":[[[x1,y1],[x2,y2],[x3,y3]]]}.
    • Ejemplo wkt: "geom": "POLYGON((x1 y1,x2 y2,x3 y3, x4 y4))"
  • «formatogeom»: Formato en el que se proporciona la geometría (wkt, geojson o bbox). Opcional. Valor por defecto wkt.
  • «completo»: Variable que indica si se quieren obtener los parámetros de orientación externa (true) o solo la lista de fotogramas (false).
  • «fotogramas»: Lista de identificadores de fotogramas para los que obtener los parámetros de orientación interna. Para indicar los fotogramas hay que utilizar el siguiente formato: ["identificador1", "identificador2"].

Datos de salida:

  • «id»: Identificador del proceso ejecutado.
  • «fotogramas»: Listado de los identificadores de los fotogramas, junto con los parámetros de orientación externa, en caso de que el parámetro de entrada «completo» tenga valor true.
Ejecución del proceso:

Para la ejecución del proceso de búsqueda se utiliza una función POST. Es obligatorio ejecutar la petición en JSON.
  • Lista de fotogramas
Si se quiere obtener tan solo una lista de fotogramas, en la consulta se indicará el rango de fechas y la geometría del área a la que se quiere limitar la búsqueda.

{

  "inputs": {

    "completo": false,

    "fecha": "06/06/2022-12/06/2022",

    "formatogeom": "wkt",

    "geom": "POLYGON((-746636.892289602 4784346.47442575,-490419.973477691 4783123.48197319,-485528.00366744 4653486.28200153,-746636.892289602 4784346.47442575))"

  }

}

  • Parámetros de Orientación Externa
Si además se quieren obtener los datos de orientación externa, tendremos dos opciones:
    • Parámetros de entrada: Introduciendo el rango de fechas, la geometría del área de búsqueda y el parámetro «completo» con valor true.

{

  "inputs": {

    "completo": true,

    "fecha": "06/06/2022-12/06/2022",

    "formatogeom": "wkt",

    "geom": "POLYGON((-746636.892289602 4784346.47442575,-490419.973477691 4783123.48197319,-485528.00366744 4653486.28200153,-746636.892289602 4784346.47442575))"

  }

}

    • Listado de fotogramasIntroduciendo directamente el listado de fotogramas del que se quiere obtener los parámetros de orientación externa.

{

  "inputs": {

    "fotogramas": [

    "h50_0780_fot_52-2906_cog",

    "h50_0780_fot_52-2907_cog",

    "h50_0780_fot_52-2908_cog",

    "h50_0780_fot_52-2909_cog"]

  }

}


Formatos:
  • WKT
Para indicar el área de búsqueda de los fotogramas sobre los que se quieren obtener los parámetros de orientación externa en formato WKT, el código JSON de la petición será similar al que se muestra en el siguiente ejemplo.

{

  "inputs": {

    "completo": true,

    "fecha": "06/06/2022-12/06/2022",

    "formatogeom": "wkt",

    "geom": "POLYGON((-746636.892289602 4784346.47442575,-490419.973477691 4783123.48197319,-485528.00366744 4653486.28200153,-746636.892289602 4784346.47442575))"

  }

}

El cURL que se ejecuta es el siguiente:

curl -X POST "https://api-processes.idee.es/processes/bsq-fotogramas/execution" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"inputs\":{\"completo\":true,\"fecha\":\"06/06/2022-12/06/2022\",\"formatogeom\":\"wkt\",\"geom\":\"POLYGON((-746636.892289602 4784346.47442575,-490419.973477691 4783123.48197319,-485528.00366744 4653486.28200153,-746636.892289602 4784346.47442575))\"}}"

  • GeoJSON
Para indicar el área de búsqueda de los fotogramas sobre los que se quiere obtener los parámetros de orientación externa en formato GeoJSON, el código JSON de la petición será similar al que se muestra en el siguiente ejemplo.

{

  "inputs": {

    "completo": true,

    "fecha": "06/06/2022-12/06/2022",

    "formatogeom": "geojson",

    "geom": {"type":"Polygon", "coordinates":[[[-746636.892289602,4784346.47442575],[-490419.973477691,4783123.48197319],[-485528.00366744,653486.28200153],[-746636.892289602,4784346.47442575]]]}

  }

}

El cURL que se ejecuta es el siguiente:

curl -X POST "https://api-processes.idee.es/processes/bsq-fotogramas/execution" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"inputs\":{\"completo\":true,\"fecha\":\"06/06/2022-12/06/2022\",\"formatogeom\":\"geojson\",\"geom\":{\"type\":\"Polygon\",\"coordinates\":[[[-746636.892289602,4784346.47442575],[-490419.973477691,4783123.48197319],[-485528.00366744,653486.28200153],[-746636.892289602,4784346.47442575]]]}}}"

 ·         Bbox

Para indicar el área de búsqueda de los fotogramas sobre los que se quiere obtener los parámetros de orientación externa a partir de un bbox, el código JSON de la petición será similar al que se muestra en el siguiente ejemplo.

{

  "inputs": {

   "completo": true,

   "fecha": "06/06/2022-26/06/2022",

   "formatogeom": "bbox",

   "geom": [-708910.05,4707190.97,-704111.50,4711055.28]

  }

}

El cURL que se ejecuta es el siguiente:

curl -X POST "https://api-processes.idee.es/processes/bsq-fotogramas/execution" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"inputs\":{\"completo\":true,\"fecha\":\"06/06/2022-26/06/2022\",\"formatogeom\":\"bbox\",\"geom\":[-708910.05,4707190.97,-704111.5,4711055.28]}}"

Ejemplo de petición desde un 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/bsq-fotogramas/execution'
 
 myObj = {
                 "inputs": {
                 "completo": True,
                 "fecha": "06/06/2022-12/06/2022",
                 "formatogeom": "geojson",
                 "geom": {"type":"Polygon", "coordinates":[[[-746636.892289602,4784346.47442575],[-490419.973477691,4783123.48197319],[-485528.00366744,653486.28200153],[-746636.892289602,4784346.47442575]]]},
                }
 }
 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 ejemplos mostrados anteriormente 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.

Resultado de la ejecución del proceso:

Como resultado devolverá la lista de fotogramas con los parámetros de orientación externa (siempre que el parámetro «completo» tenga valor true).

{
 
 "id": "BsqFotogramas",
 
"fotogramas": [
  
{
   
"id_copia_digital": 2318363,
   
"nom_fichero": "h50_0780_fot_52-2906_cog",
   
"fecha_fotograma": "12/06/2022",
   
"x_fotocentro_at": 282983.499,
   "y_fotocentro_at": 4313857.597,
   
"z_fotocentro_at": 3982.706,
   
"giro_w_at": 0.161996,
   
"giro_phi_at": -0.081723,
   "giro_k_at": -1.06082
      
},
  {
   
"id_copia_digital": 2318364,
   
"nom_fichero": "h50_0780_fot_52-2907_cog",
   
"fecha_fotograma": "12/06/2022",
  
 "x_fotocentro_at": 284174.024,
   "y_fotocentro_at": 4313819.589,
   
"z_fotocentro_at": 3977.971,
   
"giro_w_at": 0.106673,
   
"giro_phi_at": -0.078144
   "giro_k_at": -1.035709
     
},
  {
   "id_copia_digital": 2318365,
    "nom_fichero": "h50_0780_fot_52-2908_cog",
   "fecha_fotograma": "12/06/2022",
   "x_fotocentro_at": 285366.7,
   "y_fotocentro_at": 4313780.33,
   "z_fotocentro_at": 3991.615,
   "giro_w_at": 0.089358,
   "giro_phi_at": -0.015966,
   "giro_k_at": -0.970882
   }
  ]
 }

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 Rosa Mª Mislata Cabo

No hay comentarios: