GeoServer para novatos: Cómo crear un WMS a partir de un shapefile

En este artículo explicaremos cómo crear un servicio WMS a partir de un shapefile. Pero antes de meternos en harina conviene explicar qué es un WMS y qué es GeoServer, para explicar por último lo fácil que es crear un servicio WMS a partir de un shapefile.

geoserver_wms

¿Qué es la OGC y cuál es su objetivo?

El Open Geospatial Consortium (OGC) busca la definición de estándares abiertos e interoperables dentro de los Sistemas de Información Geográfica (SIG) y de la World Wide Web (WWW), todo ello con el objetivo de facilitar el intercambio de información geográfica.

logo_OGC

¿Qué es un WMS?

En Europa y España, para facilitar el acceso, manipulación e intercambio de información geográfica en la web, se siguen las especificaciones de interoperabilidad del Open Geospatial Consortium.

Un servicio web de mapas o Web Map Service (WMS) es un protocolo estándar definido por el OGC que sirve imágenes de mapas a partir de información geográfica.

En este caso un mapa no consiste en los propios datos, sino en una imagen de los mismos.

Las operaciones WMS se invocan utilizando un navegador estándar (p. ej. Firefox) o mediante aplicaciones de escritorio (p. ej. QGIS) y realizando peticiones en la forma de URL. El contenido de la URL depende de la operación solicitada.

Ejemplo de solicitud HTTP GET WMS

El siguiente ejemplo es una petición WMS, representada como una petición HTTP GET a una instancia alojada en GeoServer:

La operación GetMap solicita que el servidor genere un mapa. Los parámetros básicos (sin entrar en detalles de parámetros obligatorios y opcionales) especifican:

  • Nombre de servidor y número de puerto.
  • Nombre del servicio.
  • Versión.
  • Tipo de petición.
  • Capa o capas para representar en el mapa.
  • Sistema de referencia espacial de destino.
  • Cuadro delimitador para la extensión del mapa.
  • Formato para la salida.
  • Ancho y alto.

La información necesaria para especificar los valores de parámetros tales como capas, estilos y srs se pueden obtener a partir del documento de Capacidades (operación GetCapabilities).

petición WMS
Petición GetMap a la IDE del Duero. Hemos solicitado las capas de Límite de la demarcación del Duero y las masas de agua río.

En nuestro curso online desarrollo de aplicaciones webmapping te explicamos cómo crear reglas de solicitud WMS, crear operaciones GetCapabilities, GetMapGetFeatureInfoDescribeLayer y GetLegendGraphic; Web Feature Service (WFS): sus operaciones y reglas de solicitud; Web Coverage Service (WCS) y sus operaciones; el Servicio de Procesamiento Web (WPS) y el perfil  Styled Layer Descriptor (SLD).

¿Qué es GeoServer?

GeoServer es un servidor de datos espaciales. Es una aplicación web de código abierto, escrito en Java, que permite a los usuarios compartir y editar datos geoespaciales.

Diseñado para la interoperabilidad, GeoServer publica los datos de cualquier fuente de datos espaciales utilizando estándares abiertos.

  • GeoServer es un proyecto ejemplar por su activa comunidad y sus frecuentes actualizaciones.
  • Soporte para multitud de orígenes de datos.
  • Amigable interfaz
  • Extensiones al estándar SLD, soporte de estilos CSS.

GeoServer puede leer de muchas fuentes de datos diferentes, desde archivos guardados en el disco local a bases de datos externas.

GeoServer y los protocolos de OGC

GeoServer implementa los protocolos estándares open web que establece el Open Geospatial Consortium (OGC).

GeoServer es un servidor de alto rendimiento compatible con la certificación Web Map Service (WMS), y de hecho es la implementación de referencia de las normas OGC Web Feature Service (WFS) y Web Coverage Service (WCS).

Estandares de GeoServer
Fuente: Panorama SIG Libre 2014/Servidores. Marzo de 2014 http://wiki.osgeo.org/wiki/Panorama_SIG_Libre_2014/Servidores

Construcción de un servicio WMS / WFS a partir de un shapefile.

GeoServer incluye una interfaz de administración Web a través de la que podemos acceder a la mayor parte de las configuraciones de datos y servicios. Esta interfaz reduce la necesidad de editar los archivos de configuración a mano.

Para acceder a GeoServer en primer lugar debemos iniciar el servicio.

La url por defecto de la interfaz de administración de GeoServer es: http://localhost:8080/geoserver

Para crear un servicio WMS con GeoServer es necesario identificarse.

Por defecto, las credenciales de administración de GeoServer son admin y geoserver.

Publicación de un shapefile con el importador de capas

Para poder servir las capas y crear el servicio WMS (o WFS), el paso esencial es el de importar los shapefiles a GeoServer

Desde la página de administración de GeoServer, haremos clic en el enlace Import Data en el lado izquierdo, debajo de Datos.

Import Data GeoServer

En la página de importación de datos

  1. Marcamos la opción Spatial Files para seleccionar los archivos shapefile (.shp) como tipo de datos.
  2. Buscamos y seleccionamos el archivo que queremos importar o la carpeta en la que se ubican nuestros shapefiles. Muy útil para importaciones masivas.
  3. Seleccionamos el workspace y el almacén.

Se denomina espacio de trabajo o workspace al contenedor usado para agrupar capas similares. Todas las capas y almacenes de datos deben tener un espacio de trabajo asociado (con excepción de los grupos de capas).

El almacén de datos o store es el contenedor de datos geográficos. Un almacén de datos se conecta a una fuente de datos que contiene datos raster o vectoriales. Un origen de datos puede ser un archivo (como un shapefile) o grupo de archivos, una tabla de una base de datos o un directorio.

Cada almacén de datos está asociado a un workspace (sólo a uno).

Vemos en una imagen como quedaría:

parámetros import data GeoServer

Hacemos clic en Next y en la siguiente página marcamos las casillas de las capas que queremos importar.

import

Clic en Import.

Cuando el proceso se completa, podemos previsualizar las capas. Una vez almacenada una capa vectorial en GeoServer, ya tiene habilitados por defecto los servicios WMS, WFS y el acceso a WPS.

importación completa

Una vez importado el shapefile la capa podemos realizar la previsualización de la capa (ahora es una Layer). La previsualiación de las capas en este punto no es más que una petición GetMap, en la que se especifica como parámetro que la aplicación que se utiliza para mostrar el WMS va a ser OpenLayers:

previsualización GeoServer

De este modo ya tenemos nuestro servicio WMS habilitado y podemos conectarnos a él desde un cliente SIG. como QGIS:

conexión WMS

Si quieres aprender GeoServer, desde su instalación hasta la configuración de la seguridad de los servicios, pasando por la importación de datos y la creación de estilos para tus capas, inscríbete en nuestro curso online desarrollo de aplicaciones webmapping.

Let’s connect!

Date de alta en nuestro newsletter
y recibe este ebook gratuito

Y una vez al mes recibirás las últimas novedades del sector GIS y de nuestros cursos

49 comentarios en “GeoServer para novatos: Cómo crear un WMS a partir de un shapefile”

  1. Hola Aurelio, gracias por tu publicación.

    Te consulto sobre como dimensionar geoserver. Trabajo en una empresa de drones, y las imágenes de estos aparatos + otras imgs de alta resolución me pueden llegar a ocupar 1TByte al mes. Como se hace para saber cuantos servidores tengo que usar?

    Muchas gracias!

  2. Hola colega quiero empezar en las aplicaciones web SIG, necesito saber si el GeoServer ademas de usar shape files y base de datos puede construir un mapa a partir de imágenes (jpg o png) como las generadas por GoogleMaps y Openstreet Map. De ser así donde encuentro los links para estudiar esto. Y así decidirme si emplear este servidor o elegir otro (Acepto recomendaciones).
    Gracias por todo. Muy buen sitio.

  3. Hola Aurelio, estoy tratando de hacer una web que muestre mapas formato tiff y darle formato a la información , todo lo tengo en mi ordenador como local, pero tengo unos problemas…
    1. Estoy logeada con mi usuario en geoserver pero no me aparece Import Data.
    2. Tienes algún tutorial para este tipo de ejercicio sobre publicacion de mapas y administración de datos.
    Gracias y te felicito por este estupendo trabajo

  4. Hola, buenos días Aurelio. Me gustaría añadir capas raster al geoserver y más tarde citarlas en Openlayers. He visto ejemplos por la web y solo me quería asegurar.

    var raster = new ol.layer.Tile({
    source: ‘http://localhost:8080/geoserver/tiff’,
    {layers: ‘Nombre del raster’,
    }
    });

    Gracias

    Saludos

    • Hola Basilio,
      La clase ol.layer.Tile necesita una fuente TileWMS:
      source: new ol.source.TileWMS
      y esta fuente debe incluir una url y unos parámetros. Dentro de los parámetros se debe incluir al menos las capas de GeoServer (LAYERS) y el formato (FORMAT). Saludos!

  5. Buenos dias Aurelio,
    a ver si puedes echarme una mano para solventar esto,
    queria incluir en una base de datos accés un campo con un link a un mapa.
    Cada registro de la base de datos és una parcela i contiene sus coordenadas. Con un formulario de consulta obtengo un informe con los datos de dicha parcela, pero quiero además que aparezca una imagen centrada de la parcela.
    Habia pensado tener una capa en geoserver.
    Supongo que el enlace hay que hacerlo al localhost donde tenga la capa del geoserver, pero tendria que indicar las coordenadas.
    En resumen, que no se por donde coger el tema.

    gracias por este fantastico blog

    • Hola Jose,
      Gracias por seguirnos!
      Pues este tema se puede solventar de varias formas. Se me ocurre como forma más o menos sencilla crear un mapa con Leaflet que muestre las parcelas con un mapa de fondo e ir creando enlaces permanentes para cada una de las parcelas (hay un plugin de Leaflet que crea enlaces permanentes) por lo que tendrías una url para cada parcela. Creo que meterse en GeoServer puede ser demasiado complicado, ya que tendrías que pasar las coordenadas que tienes en Access como un parámetro en una petición GetMap y me parece algo complicado… Saludos!

  6. Hola soy nueva utilizando geoserver, estoy generando una vista para publicar, pero debo asignar un alias para que los usuarios que consulten los datos de la capa puedan ver el significado de cada campo y no el que trae de la BBDD…como puedo definir el alias?

    Saludos

  7. Hola. tengo un inconveniente, al momento de viasualizar la capa me sale en blanco no se presenta el mapa, a q se debe esto?

  8. Hola Aurelio,

    Interesante artículo publicado. Yo tengo una pequeña duda de, literalmente, novato:

    ¿El uso de Geoserver es solamente útil, por decirlo de una forma, para todo aquel que tenga un servidor? Porque yo, por ejemplo, tengo sólo mi portatil. Si me instalase Geoserver usando mi PC como cliente-servidor al mismo tiempo, ¿que beneficio obtendría de esta herramienta?

    Saludos.

    • Hola Víctor,
      GeoSErver es un servidor GIS para crear servicios siguiendo los estándares de la OGC. SE puede instalar en local para hacer pruebas y aprender, sin necesidad de tener un servidor, y en este caso nuestro equipo actúa como localhost. Con GeoServer (parte servidor) creas servicios web para después incluirlos en tus visores web como OpenLayers o Leaflet (parte cliente). Saludos!

  9. Buenas, no me sale Import data, previamente he creado el espacio de trabajo y un almacén de datos, depues he ido a Capas > Agregar nuevo recurso y he seleccionado el espacio de trabajo en el que se encuentra las capas a importar, pero aun asi no me sale import data

  10. Hola Aurelio,

    Soy Yina. No me aparece el enlace Import Data en el lado izquierdo, debajo de Datos, desde la página de administración de GeoServer, estoy logueada como admin

    ¿Por qué puede ser?

    Gracias.

  11. Hola Aurelio,

    Soy Ana. No me aparece el enlace Import Data en el lado izquierdo, debajo de Datos, desde la página de administración de GeoServer. ¿A que puede ser debido?

    Gracias.

  12. hola necesito visualizar un .shp de tipo texto en geoserver pero me lo muestra como un poligono no se como hacer para que me aparesca el texto agradeceria una ayuda gracias

  13. Estimado:
    Junto con saludar y agradecer por la excelente guía, tengo la siguiente duda:
    Al momento de visualizar un grupo de capas con open layers, al momento que veo mi mapa con todas las capas, ¿como puedo desmarcar las capas que no quiero ver, en tiempo real (ejemplo: tengo un grupo capas de una cuidad, con sus limites administrativos, calles y puntos de interés, pero al estar visualizando quiero desmarcar la capa de puntos)? porque hasta ahora para poder hacer eso utilizo un programa llamado uDig que lo conecto con geoserver, pero la idea es poder hacer eso dentro del mismo geoserver.
    Saludos.

  14. Hola Aurelio.

    Soy informático pero novato en el uso de GeoServer y no encuentro la forma de subir ficheros .shp directamente desde mi equipo al servidor.

    Saludos

  15. Muy buen tutorial, tengo una inquietud se puede editar una capa es decir cambiar los límites y que se actuelicen esos datos en la base de datos hasta donde tengo entendido tengo que utilizar el WFS ya que el wMS es una imágen.

    • Hola Giovanny,
      Efectivamente, debes utilizar WFS- Transacional, para poder editar contra el servidor y en la base de datos si las capas están en un base de datos espacial.
      Un saludo,
      Aurelio

  16. Buenas tardes:

    Te hago una consulta, con este software puede pasar de WMS a shapefile?

    Desde ya, muchas gracias.

    Saludos cordiales.

  17. Hola.
    Una pregunta. Al subir un archivo shp a geoserver y crear un servicio wms a partir de él. La dirección es a nivel local. Es decir, como puedo crear un servicio wms a traves de la red, para que pueda consultarlo desde cualquier lugar u ordenador?
    Perdón soy nuevo en esto.

    • Hola Carlos,
      Esa es una pregunta muy frecuente. Para eso debes realizar la instalación de GeoServer sobre una servidor con una IP estática y pública. Debes configurar la red para modificar localhost por la IP interna del servidor web y poner esa IP pública para que sea accesible desde una red externa.

      Deberás redireccionar las peticiones que lleguen a la IP pública a la IP de tu servidor. Probablemente necesites la ayuda de tu amigo informático, pagar a tu proveedor de internet un extra y revisar la factura de la luz (piensa que para poder servir tus mapas en internet el servidor debe estar encendido las 24 horas del día). Aunque a priori te parezca una opción económica puede salir caro.

      En esta entrada tienes más opciones: http://mappinggis.com/2014/08/crear-web-gis-en-un-servidor/ Un saludo!

  18. Buenos tardes, tengo un mac y donde he instalado el geoserver , pero tengo problemas con los estilos CSS., no se en que directorio debo instalar para que se visualice en geoserver.

    muchas gracias de antemano

    leo

    • El mismo problema he tenido yo al instalarlo para todos los usuarios (Windows). Sin embargo lo he reinstalado para el usuario actual, y en ese caso si que se activa el servicio (manualmente) y se puede acceder al servidor local de geoserver.

Los comentarios están cerrados.