El formato NetCDF: creación de mapas en GeoServer y QGIS

La observación y estudio de la tierra está generando una cantidad ingente de datos, con el fin de comprender algunos de los problemas más acuciantes para la humanidad como es el cambio climático. Los científicos recogen datos geográficos de temperaturas, precipitación, nivel del mar… durante periodos largos de tiempo, lo que añade un componente temporal a los datos recopilados. Para el manejo de estos datos aparecen algunos formatos como NetCDF.

Podemos publicar esos datos en forma de mapas utilizando herramientas de software libre como GeoServer.

NetCDF

NetCDF

NetCDF (Network Common Data Form) es un formato de archivo para el intercambio de datos científicos. Los datos tienen una estructura de matrices. Este formato es ampliamente utilizado por los científicos para el estudio del clima, aunque por supuesto su aplicación no se restringe a este campo.

Las características del formato son:

  • Autodescriptivo. Un archivo netCDF incluye información sobre los datos que contiene.
  • Portátil. Las computadoras pueden acceder a un archivo netCDF con diferentes formas de almacenar enteros, caracteres y números de punto flotante.
  • Escalable. Se puede acceder de manera eficiente a pequeños subconjuntos de grandes conjuntos de datos en varios formatos a través de interfaces netCDF, incluso desde servidores remotos.
  • Accesible. Los datos se pueden agregar a un archivo netCDF correctamente estructurado sin copiar el conjunto de datos o redefinir su estructura.
  • Compartible. Un escritor y varios lectores pueden acceder simultáneamente al mismo archivo netCDF.
  • Archivable. El acceso a todas las formas anteriores de datos netCDF será compatible con las versiones actuales y futuras del software.

Existe software disponible para trabajar y visualizar los datos NetCDF. Quizás el software de referencia sea Panoply que ha sido desarrollado por la NASA. Panoply requiere tener instalado JAVA 9 (o una versión posterior) y está disponible para macOS, Windows y Linux.

Una alternativa más sencilla a Panoply es toolsUI que podemos descargar de la página de UNIDATA.

Descargar los datos

Como indicamos antes, el formato NetCDF es ampliamente utilizado y hay muchos lugares donde lo encontraremos, especialmente en aquellos que se ocupan del clima y la meteorología, como son los que proporciona la AEMET.

Para ver un ejemplo utilizaremos los datos sobre la temperatura del mar que nos facilita el Ministerio para la Transición Ecológica a través del IH Cantabria.

Haciendo clic en el enlace HTTPServer podemos descargar el archivo en nuestro equipo.

Una vez que tenemos el archivo con los datos abrimos la aplicación toolsUI para verlos.

En la vista anterior observamos la ventana con los datos que contiene el archivo NetCDF.

  • Este conjunto de datos tiene dos dimensiones (lat y lon) que son las que vemos marcadas con el icono D.
  • Estas dimensiones tienen asociada una variable independiente (marcadas con el rectángulo verde).
  • El conjunto de datos contiene 4 variables, marcadas con el rectángulo azul. Cada una tiene dos dimensiones (lat, lon).

Crear un mapa en GeoServer a partir de los datos NetCDF

Ahora que tenemos nuestros datos NetCDF y hemos visto su estructura mediante el empleo de toolsUI, vamos a subirlos a GeoServer para crear un mapa.

GeoServer dispone del plugin NetCDF, que podemos encontrar entre las Extensiones de GeoServer.

Una vez realizada la descarga del complemento, lo descomprimimos y copiamos los archivos .jar en la carpeta webapps\geoserver\WEB-INF\lib de nuestro directorio de GeoServer. Realizada esta operación, estamos en disposición de subir los datos a GeoServer.

Abrimos un nuevo almacén de datos.

Como podemos observar en la imagen anterior, después de instalar la extensión, en «Orígenes de datos raster» tenemos la opción de elegir el formato NetCDF.

Definimos un nombre para el origen de los datos y seleccionamos el archivo con los datos en parámetros de conexión..

Ahora podemos elegir entre las diferentes capas que contiene el archivo NetCDF.

Creamos la capa como cualquier otra, teniendo la precaución de definir correctamente el sistema de coordenadas.

Definiendo un estilo

Como los estilos por defecto para las capas raster que ofrece GeoServer no son muy apropiados para este caso, hemos creado un nuevo estilo en formato SLD:

<?xml version="1.0" encoding="UTF-8"?>
<StyledLayerDescriptor version="1.0.0" xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc"
  xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd">
  <NamedLayer>
    <Name>rain</Name>
    <UserStyle>
      <Name>rain</Name>
      <Title>Rain distribution</Title>
      <FeatureTypeStyle>
        <Rule>
          <RasterSymbolizer>
            <Opacity>1.0</Opacity>
            <ColorMap>
        <ColorMapEntry color="#0d0887" quantity="0.397" />
        <ColorMapEntry color="#1b068d" quantity="0.414" />
        <ColorMapEntry color="#260591" quantity="0.431" />
        <ColorMapEntry color="#2f0596" quantity="0.447" />
        <ColorMapEntry color="#38049a" quantity="0.464" />
        <ColorMapEntry color="#41049d" quantity="0.481" />
        <ColorMapEntry color="#4903a0" quantity="0.497" />
        <ColorMapEntry color="#5102a3" quantity="0.514" />
        <ColorMapEntry color="#5901a5" quantity="0.531" />
        <ColorMapEntry color="#6100a7" quantity="0.547" />
        <ColorMapEntry color="#6900a8" quantity="0.564" />
        <ColorMapEntry color="#7100a8" quantity="0.581" />
        <ColorMapEntry color="#7801a8" quantity="0.597" />
        <ColorMapEntry color="#8004a8" quantity="0.614" />
        <ColorMapEntry color="#8707a6" quantity="0.631" />
        <ColorMapEntry color="#8e0ca4" quantity="0.647" />
        <ColorMapEntry color="#9511a1" quantity="0.664" />
        <ColorMapEntry color="#9c179e" quantity="0.681" />
        <ColorMapEntry color="#a21d9a" quantity="0.698" />
        <ColorMapEntry color="#a82296" quantity="0.714" />
        <ColorMapEntry color="#ae2892" quantity="0.731" />
        <ColorMapEntry color="#b42e8d" quantity="0.748" />
        <ColorMapEntry color="#ba3388" quantity="0.764" />
        <ColorMapEntry color="#bf3984" quantity="0.781" />
        <ColorMapEntry color="#c43e7f" quantity="0.798" />
        <ColorMapEntry color="#c9447a" quantity="0.814" />
        <ColorMapEntry color="#cd4a76" quantity="0.831" />
        <ColorMapEntry color="#d24f71" quantity="0.848" />
        <ColorMapEntry color="#d6556d" quantity="0.864" />
        <ColorMapEntry color="#da5b69" quantity="0.881" />
        <ColorMapEntry color="#de6164" quantity="0.898" />
        <ColorMapEntry color="#e26660" quantity="0.915" />
        <ColorMapEntry color="#e66c5c" quantity="0.931" />
        <ColorMapEntry color="#e97257" quantity="0.948" />
        <ColorMapEntry color="#ed7953" quantity="0.965" />
        <ColorMapEntry color="#f07f4f" quantity="0.981" />
        <ColorMapEntry color="#f3854b" quantity="0.998" />
        <ColorMapEntry color="#f58c46" quantity="1.01" />
        <ColorMapEntry color="#f79342" quantity="1.03" />
        <ColorMapEntry color="#f99a3e" quantity="1.05" />
        <ColorMapEntry color="#fca835" quantity="1.08" />
        <ColorMapEntry color="#fdaf31" quantity="1.1" />
        <ColorMapEntry color="#feb72d" quantity="1.11" />
        <ColorMapEntry color="#fcce25" quantity="1.16" />
        <ColorMapEntry color="#fbd724" quantity="1.18" />
        <ColorMapEntry color="#f8df25" quantity="1.2" />
        <ColorMapEntry color="#f6e826" quantity="1.21" />
        <ColorMapEntry color="#f3f027" quantity="1.23" />
        <ColorMapEntry color="#f0f921" quantity="1.25" />
            </ColorMap>
          </RasterSymbolizer>
        </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

El resultado al previsualizar la capa será es el siguiente:

Visualización de archivos NetCDF en QGIS

QGIS permite utilizar archivos NetCDF de forma nativa, sin necesidad de plugins.

Para añadir estos archivos .nc debemos ir al menú superior Capa > Añadir capa > Añadir capa tipo malla…

En el Administrador de fuentes de datos simplemente buscaremos y seleccionaremos el archivo .nc:

Aceptamos y el mapa que obtenemos (hemos añadido una capa base de OpenStreetMap) es el siguiente:

En nuestro curso online desarrollo de aplicaciones webmapping te enseñamos a utilizar GeoServer en detalle, instalar extensiones y crear mapas para publicarlos posteriomente en la web.