GeoTIFF es un formato de archivo de imagen que incluye información geográfica (metadatos sobre la localización geográfica de la imagen, como las coordenadas de las esquinas y la proyección utilizada) junto con los datos de imagen.

Puede contener múltiples bandas (canales) de datos, lo cual es útil para imágenes satelitales y otras aplicaciones avanzadas.

Ejemplo de GeoTIFF:

const source = new GeoTIFF({
  sources: [
    {
      url: 'https://sentinel-cogs.s3.us-west-2.amazonaws.com/sentinel-s2-l2a-cogs/36/Q/WD/2020/7/S2A_36QWD_20200701_0_L2A/TCI.tif',
    },
  ],
});

Dependiendo del tipo de GeoTIFF el parámetro “sources” (ol/source/GeoTIFF) aceptará diferentes parámetros.

El source se carga en una capa ol/layer/WebGLTile.

ℹ️ Esta capa puede aceptar un source o multiples (“source” o “sources”), ejemplo Multiple COG sources.

📂 Ejemplo GeoTIFF Openlayers
  • Cloud Optimized GeoTIFF (COG): Datos en mosaico de un GeoTIFF optimizado para la nube (COG) pueden ser representados como una capa. En este ejemplo, se utiliza un único GeoTIFF de 3 bandas para representar datos RGB.

  • Cloud Optimized GeoTIFF (COG) from a Blob: Datos en mosaico de un GeoTIFF optimizado para la nube (COG) pueden ser representados como una capa. En este ejemplo, se utiliza un único GeoTIFF de 3 bandas para representar datos RGB desde un Blob.

  • COG with Projection Lookup: Ejemplo de uso de fromEPSGCode() para permitir que un COG se represente sobre otra capa en una proyección diferente.

  • GeoTIFF tile pyramid: Datos de una pirámide de mosaicos de un GeoTIFF optimizado para la nube (COG) pueden ser representados como un conjunto de capas. En este ejemplo, se utiliza una pirámide de GeoTIFFs de 3 bandas para representar datos RGB. La función auxiliar ol/source.sourcesFromTileGrid crea fuentes a partir de esta pirámide según sea necesario. Los GeoTIFFs utilizados por esas fuentes tienen un rango de resolución que coincide con el rango de un solo z de la cuadrícula de mosaicos de la pirámide.

  • Multiple COG sources: Dos COGs de Sentinel 2, cada uno con fuentes para las bandas visibles roja, verde y azul, y una banda de infrarrojo cercano. Las regiones adyacentes están en el borde de sus respectivas zonas UTM, por lo que al menos un COG debe ser reproyectado para ser mostrado en el mismo mapa.

  • NDVI from a Sentinel 2 COG: La capa GeoTIFF en este ejemplo se basa en dos fuentes de Sentinel 2: una banda roja y una banda de infrarrojo cercano. El estilo de la capa incluye una expresión de color que calcula el Índice de Vegetación de Diferencia Normalizada (NDVI) a partir de los valores de las dos bandas. La expresión de interpolación se utiliza para asignar valores de NDVI a colores. El método layer.getData() se puede usar para recuperar valores de píxeles del GeoTIFF. Mueve el mouse o toca el mapa para ver los valores calculados de NDVI basados en los valores de los píxeles rojos y de infrarrojo cercano.

  • NDVI with a Dynamic Color Ramp: La capa GeoTIFF en este ejemplo se basa en dos fuentes de Sentinel 2: una banda roja y una banda de infrarrojo cercano. El estilo de la capa incluye una expresión de color que calcula el Índice de Vegetación de Diferencia Normalizada (NDVI) a partir de los valores de las dos bandas. La expresión de interpolación se utiliza para asignar valores de NDVI a colores. Los valores de “stop” para la rampa de color se derivan de variables de estilo proporcionadas por la aplicación. Usando las entradas anteriores, los colores y valores mínimos y máximos pueden ajustarse. El método layer.updateStyleVariables() se llama para actualizar las variables utilizadas en la expresión de color interpolado.

  • STAC support: Este ejemplo utiliza el paquete npm ol-stac, que agrega soporte STAC a OpenLayers. Por ejemplo, puede mostrar geometrías y activos de elementos del Catálogo de Activos Espacio-Temporal (STAC) como un grupo de capas. Para más ejemplos, visita https://m-mohr.github.io/ol-stac/en/latest/examples/.

  • Band Contrast Stretch: Este ejemplo utiliza el método layer.updateStyleVariables() para actualizar la representación de un GeoTIFF basado en las bandas seleccionadas por el usuario y los parámetros de estiramiento de contraste.

  • Change Tile Layer Style: Cuando quieras cambiar el estilo de una capa de mosaico WebGL basado en algún cambio en el estado de tu aplicación, debes usar el método layer.updateStyleVariables(). Una capa puede ser renderizada de manera eficiente incluso si las variables de estilo se cambian en cada fotograma de renderizado. En casos donde necesites reemplazar completamente el estilo de una capa, puedes llamar al método layer.setStyle(). Este método no debe ser llamado en respuesta a eventos frecuentes del usuario (por ejemplo, movimiento del ratón, arrastrar un deslizador, etc.).

  • GeoTIFF Reprojection: Ejemplo de reproyección de una fuente GeoTIFF en EPSG:4326 con 20 bytes de valores brutos por píxel a EPSG:3857.

  • GeoTIFF with Overviews: En algunos casos, un GeoTIFF puede tener vistas generales externas. Este ejemplo utiliza la propiedad overviews para proporcionar la URL de un archivo que contiene vistas generales externas.

  • NDVI+NDWI from two 16-bit COGs: La capa GeoTIFF en este ejemplo calcula el Índice de Vegetación de Diferencia Normalizada (NDVI) y el Índice de Agua de Diferencia Normalizada (NDWI) a partir de dos GeoTIFFs optimizados para la nube de Sentinel 2: uno con una resolución de 10 m y bandas roja e infrarroja cercana, y otro con una resolución de 60 m y un canal infrarrojo de onda corta. El NDVI se muestra en verde y el NDWI en azul. La cuarta banda es la banda alfa, que se agrega cuando una fuente tiene un valor de nodata configurado.