Geoserver en entorno de producción (IV): Habilitando GDAL y su soporte para formatos

Esto se está haciendo eterno, pero desde luego esta costando mucho lograr todo lo que me he propuesto. En este caso, me voy a centrar en ampliar los tipos de datos que va a aceptar nuestro servidor de mapas. Y esto me ha dado dos días de guerra. Os recuerdo mi configuración: Ubuntu 9.10 Server, Geoserver 2.0.1 y Tomcat 6. También os recuerdo que si queréis empezar con una instalación limpia, hay 3 manuales anteriores que encontraréis más abajo.

En este caso, vamos a instalar las librerías necesarias para que nuestro Geoserver sea capaz de leer formatos soporta la librería GDAL, entre los que están ECW, MrSID, EHdr, DTED, rasters de ERDAS,  etc…

Importante: Por desgracia, en esta ampliación tendremos un problema con las licencias para utilizar ECW en nuestro servidor, ya que para usarlo hay que usar unas librerías de ERDAS bastante restrictivas, y tendremos que tener un licencia (obviamente de pago, es decir, comprada) para usarlo sin romper la licencia de sus librerías, que no permiten su uso libre en servidores de mapas de terceros. En este tutorial se explica como activar el soporte para ECW, pero contamos con que se tienen las licencias compradas de antemano.

Manos a la obra, empecemos por el principio:

  1. En versiones antiguas de Geoserver hay que instalar un plugin dentro del directorio «WEB_INF/lib» de Geoserver, el cual puedes encontrar aún, en la página de descargas de Geoserver, en el apartado «Extensions>GDAL«. En la versión 2.0.1, ya viene de serie, por lo que no hace falta hacer nada.

Bajar las librerías nativas de GDAL del proyecto «ImageIO-ext» en esta dirección, no tengo que decirte que busques la versión más moderna y para tu sistema operativo, bájate las «native-libraries«. Estas librerías son totalmente independientes de las que tengas instaladas en tu equipo. Es decir, si hay tenias GDAL instalado vía apt/aptitude o porque tu te las instalaras a mano, no interfieren con estas.

Actualización 10-08-21: De nuevo, las cosas han cambiado, ya que como todos sabemos, Java ahora pertenece al eje del mal, es decir Oracle. Y como no, ha tenido que cambiar todo de sitio. Las nuevas direcciones para encontrar las cosas son:

Todas estas librerías son para el GDAL 1.7.3, el cual es el que esta disponible en los repositorios de Ubuntu, en caso de no tenerlo, no se si funcionará, aunque imagino que tendrás que instalarlo a mano para desgracia de nuestros nervios.
cd /usr/lib/
sudo wget https://imageio-ext.dev.java.net/files/documents/7505/144611/imageio-ext-1.0.5-linux32-mrsid-ecw-lib.tar.gz
sudo tar -zxvf ./imageio-ext-1.0.5-linux32-mrsid-ecw-lib.tar.gz
./
./libNCSCnet.so
./libNCSEcwC.so.0.0.0
./libNCSCnet.so.0
./gdalinfo
./libNCSUtil.so.0.0.0
./libNCSCnet.so.0.0.0
./libgdal.so.1
./libNCSEcw.so.0.0.0
./libNCSUtil.so.0
./libgdal.so
./libNCSEcwC.so.0
./libosrjni.so
./libNCSUtil.so
./libNCSEcw.so.0
./libNCSEcw.so
./libNCSEcwC.so
./libgdalconstjni.so
./libgdaljni.so
./libogrjni.so
./libgdal.so.1.11.4

Como habrás notado, he bajado la versión con soporte ECW (solo para probar que funciona), y lo he instalado en la carpeta «/usr/lib». Si miras los manuales de referencia, todos te dicen que estas librerías puedes instalarlas donde te de la gana y luego fijar una variable de entorno «LD_LIBRARY_PATH» a la ruta para que todo funcione. En mi caso, esto no funcionaba, y la única manera de lograr que funcionara, era instalando estas librerías aquí.

Esto es importante, ya que no tengo muy claro donde se tiene que instalar las librerías nativas del GDAL (en serio, es un follón). Ahora mismo si no las descomprimo tambien en; «/usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/amd64» (es decir, en el directorio de mi versión por defecto de Java, y con la arquitectura, en 64 bits en mi caso, pero podría ser en i386 también), no me funciona. Simplemente trata de descomprimir en el directorio JAVA primero, y luego intenta en el directorio de librerías.

  1. Bajar los datos para la GDAL. Este fichero contiene definiciones de proyección y datos que se necesitan para usar esta librería, esta puedes instalarla donde quieras para luego fijar la variable de entorno «GDAL_DATA» para que GDAL sepa encontrarlas.
    cd /usr/share/gdal-data/
    sudo wget https://imageio-ext.dev.java.net/files/documents/7505/137749/gdal_data-1.4.5.zip
    sudo unzip -o ./gdal_data-1.4.5.zip
    

    Ahora editamos el fichero «/etc/profiles» y añadimos la siguiente línea:

    export GDAL_DATA=/usr/share/gdal-data
    

    Y ya hemos instalado todo.

    Actualización 2-11-10: Según he aprendido a lo largo de mis andaduras con linux, el mejor sitio para poner las exportaciones de variables de entorno es en el fichero «/etc/environment«.

  2. Tendremos que reiniciar Tomcat, por seguridad de que refresque y ver reflejados los cambios. En alguna ocasión solo con recargar el Geoserver desde el «manager» de Tomcat me ha valido, pero no lo puedo asegurar.
  3. Ahora entramos en el interfaz Web de Geoserver, que usualmente está instalado en: http://tuservidor:8080/geoserver, y en el apartado «Almacenes de datos» pulsamos «Agregar nuevo almacén», y tendremos que ver una lista parecida a esta:

    Formatos soportados tras instalar la extensión de GDAL

    Formatos soportados tras instalar la extensión de GDAL

  4. Importante: Parece que están surgiendo problemas con estas librerías y Tomcat, y puedes leer como «arreglarlo» en el siguiente post. Para saber si te ocurre, sólo tienes que tratar de crear un almacén con cualquiera de los nuevos tipos que han aparecido y te saldrá un error. No es muy complicado de arreglar pero asusta 🙂

Como siempre, aquí tienes todas las referencias, de donde he sacado sabiduría:

Please follow and like us:

16 pensamientos en “Geoserver en entorno de producción (IV): Habilitando GDAL y su soporte para formatos

  1. Pingback: Bitacoras.com

  2. no me funciono, y creo esta mal tus lineas 2 y 3

    Bajar las librerías nativas de GDAL del proyecto “ImageIO-ext” en esta dirección, no tengo que decirte que busques la versión más moderna y para tu sistema operativo, bájate las “native-libraries“. Estas librerías son totalmente independientes de las que tengas instaladas en tu equipo. Es decir, si hay tenias GDAL instalado vía apt/aptitude o porque tu te las instalaras a mano, no interfieren con estas.

    02 sudo wget https://imageio-ext.dev.java.net/files/documents/7505/144611/imageio-ext-1.0.5-linux32-mrsid-ecw-lib.tar.gz
    03 tarsudo tar -zxvf ./imageio-ext-1.0.5-linux32-mrsid-ecw-lib.tar.gz

  3. perdon si funciona, lo que pasa es que me quede el el usuario postgres y me pedia contraseña se la daba y no me hacia nada espero que no haya olvidado la clave de usuario postgres, mil gracias y perdon

  4. este tema junto con el anterior no se si lo puedas explicar mas ya que no me ha salido lo que comentas, mil gracias

  5. solo me sale esto mas las imagenes

    arriba

    Contraseña Recuérdame

    abajo

    *
    Servidor
    o Acerca de GeoServerAcerca de GeoServer
    *
    Demos
    *
    Previsualización de capas

    Bienvenido

    Este GeoServer pertenece a The ancient geographes INC.

    Esta instancia de GeoServer está ejecutando la versión 2.0.1. Para más información por favor contacte con el administrador.

    *
    Capacidades del servicio
    o WCS
    + 1.0.0
    + 1.1.1
    o WFS
    + 1.0.0
    + 1.1.0
    o WMS
    + 1.1.1

    • En esa pantalla pulsas «Almacenes de datos» > «Nuevo almacen de datos».

      Si ha cargado todo correctamente, te saldrán toda esa montonera de formatos soportados.

      • Me autorespondo:

        Os falta poner el usuario y password de administracion de Geoserver:

        admin/geoserver

        Esto viene por defecto y se puede cambiar luego.

  6. Muchas gracias por la guia, me funcionó sin problemas usando jetty, pero cuando intento con tomcat 6 y 7, me salen los nuevos formatos pero no me lee los archivos, me sale el siguiente mensaje:
    «Could not list layers for this store, an error occurred retrieving them: Incorrect input type!»
    He buscado en la web y veo que es un bug de tomcat, pero no encuentro como solucionarlo, Alguna sugerencia

  7. Espero me ayuden..

    estoy trabajando con Geoserver y tengo imagenes ECW, por lo q le leido creo q no hay mas que comprar la licencia de las librerias con ERDAS, una pregunta las imagenes ECW las puedo cambiar de formato a MrSID pero tampoco puedo usar ese formato, es por la misma razon que las ECW o algo estoy haciendo mal.. porfavor espero me puedan ayudar

    • En esta web lo explican bastante bien:
      http://docs.geoserver.org/latest/en/user/production/data.html

      Si usas ECW para lucro tienes que pagar una licencia, sino puedes usarla gratis.

      Para pasar de ECW a MrSID solo tienes que usar GDAL (gdal_translate si no recuerdo mal), y no necesitas ninguna licencia (al menos eso creo).

      En resumen: servir cartografía en formato ECW en un proyecto con ánimo de lucro requiere de una licencia. Para el resto no.

      • Perfecto… ok creo que voy a dejar de insistir con las ECW porque posiblemente pueda hacer un poco de lucro y tendría que comprar la licencia, mira te comento, ya tengo las imágenes en MrSID, y baje las librerias de GDAL, mi versión del geoserver es 2.1.3 y del jetty 6.1.8 y estoy en windows 7 haciendo pruebas, posteriormente creo q lo cargare en linux.

        cuando cargo un nuevo almacén de datos puedo visualizar:

        Origenes de datos raster

        AIG – Arc/Info Binary Grid (AIG) Coverage Format
        ArcGrid – Arc Grid Coverage Format
        DTED – DTED Coverage Format
        ECW – ECW Coverage Format
        EHdr – EHdr Coverage Format
        ENVIHdr – ENVIHdr Coverage Format
        ERDASImg – Erdas Imagine Coverage Format
        GeoTIFF – Tagged Image File Format with Geographic information
        Gtopo30 – Gtopo30 Coverage Format
        ImageMosaic – Image mosaicking plugin
        JP2ECW – JP2K (ECW) Coverage Format
        JP2MrSID – JP2K (MrSID) Coverage Format
        MrSID – MrSID Coverage Format
        NITF – NITF Coverage Format
        WorldImage – A raster file accompanied by a spatial data file

        pero al momento de cargar un MrSID no esta la opción de de Buscar… parar cargar mi imagen. si la cargo manual file:data/example.mrsid y le doy en guardar no me sale la publicación, estoy haciendo un paso mal???

        • Humm…

          Vaya, eso ya tiene pinta de ser más serio. No se como tendrás montado el tema (con el jetty, o tomcat, o otro servidor), pero si no carga, normalmente estará dejando un registro en el log. Puede que esté dando una excepción por alguna razón que se nos escapa.

          Si usas Tomcat, mira en /var/log/tomcat o en el log de Geoserver (no recuerdo donde iba), donde puede que haya más información.

          Una cosa más que se me ocurre, es que si lo tienes montado sobre un linux, hay que diferencia muy bien de mayúsculas y minúsculas en las rutas de los ficheros.

          Ahora mismo no se me ocurre nada más.

  8. Buenas,

    Ante todo dar las gracias por este estupendo manual.

    Acabo de aterrizar no hace mucho en el mundo GIS y me toca montar un Geoserver, os comento mi problema.

    Tengo instalado Geoserver 2.4.4 sobre Jetty, he realizado los pasos que indicas para habilitar GDAL pero no consigo ver en el almacén de datos el soporte para ECW o MRSID.

    Sabéis si el manual al estar orientado a una versión anterior de Geoserver y montado sobre Tomcat, puede que yo tenga que realizar algún paso adicional? Estoy bastante atascado en este tema y necesito algo de ayuda.

    Saludos y gracias.

    • Añado más info.

      Al ir a descargar las librerias nativas 1.7.3 me encuentro con que sólo las hay para Linux y Windows32.

      Tengo Geoserver montado sobre Windows2008 64 bits.

      Me valen para Win64??

      Gracias y saludos,

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *