Primeros pasos con QGIS Server

QGIS Server es una aplicación de código abierto que  proporciona servicios WMS, WFS y WCS. QGIS Server utiliza un proyecto de QGIS como back-end para crear el servicio. Los mismos datos y estilos de QGIS se mostrarán en el servicio WMS. Es por tanto una herramienta muy útil para todos los usuarios de QGIS, pues pueden crear servicios de OGC (Open Geospatial Consortium) directamente desde los datos de su proyecto.

Te recomendamos leer el artículo: 7 motivos para comenzar a trabajar con QGIS Server.

QGIS Server puede servir datos de acuerdo con los protocolos estándar descritos por Open Geospatial Consortium (OGC):

QGIS Server es una aplicación FastCGI/CGI (Common Gateway Interface) escrito en C++ que trabaja junto con un servidor web (por ejemplo, Apache, Lighttpd). Cuenta con ayuda al complemento Python que permite el desarrollo mas rápido y eficiente y despliegue de nuevas características. Es financiado por la EU project Orchestra, Sany y la ciudad de Uster en Suiza.

Con QGIS Server podemos crear servicios de mapas web (WMS) utilizando las mismas librerías que tiene la aplicación de escritorio QGIS. QGIS Server se  integra perfectamente con el SIG de escritorio QGIS.

¿Qué podemos hacer con QGIS Server?

  • Crear servicios WMS: publicar en la web tanto las capas como los mapas creados con QGIS. Los mapas web que obtenemos con QGIS Server son iguales que los creados con la aplicación de escritorio QGIS.
  • Utilizar una simbolización cartográfica avanzada
  • Identificación de las características y visualización de datos de atributos.
  • Salidas en PDF.

Los pasos que debemos realizar son básicamente tres:

  1. Instalar Apache.
  2. Instalar QGIS Server.
  3. Añadir el proyecto .gqs en el directorio adecuado.

Instalación de Apache + QGIS Server

Este paso está explicado en detalle en el siguiente artículo:

Instalar QGIS Server en Windows utilizando Xampp

Una vez instalado regresa a esta página y accede a la siguiente url:

http://localhost/qgis/qgis_mapserv.fcgi.exe?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities

Si todo ha ido bien, deberías ver el documento de capacidades:

getcapabilities

Añadir el proyecto .gqs

Aunque podemos crear el proyecto de QGIS en cualquier directorio, es recomendable ubicar el proyecto .qgs en el directorio C:\OSGeo4W\apps\qgis\bin.

Si ponemos el proyecto en este directorio, será servido por defecto sin tener que utilizar el parámetro de mapa opcional).

En nuestro caso hemos creado el proyecto cities.qgs y lo hemos ubicado en el directorio C:\OSGeo4W\apps\qgis\bin

De este modo las peticiones:

http://localhost/qgis/qgis_mapserv.fcgi.exe? 
SERVICE=WMS& 
VERSION=1.3.0& 
REQUEST=GetCapabilities

y

http://localhost/qgis/qgis_mapserv.fcgi.exe? 
SERVICE=WMS& 
VERSION=1.3.0& 
REQUEST=GetCapabilities& 
map=C:\OSGeo4W\apps\qgis\bin\cities.qgs

son análogas.

Al solicitar de nuevo el documentos de capacidades el XML debería aparecer, esta vez con elementos consultables del proyecto. Podemos solicitar:

  • GetMap (veremos un ejemplo más adelante)
  • GetPrint  (veremos un ejemplo más adelante)
  • GetFeatureInfo
  • GetLegendGraphic
  • GetStyles

En el documento de capacidades también vemos las capas consultables:

  • <Layer queryable=»1″>
  • <Name>cities</Name>
  • <Title>cities</Title>

Bueno, pues ya tenemos las capas del proyecto disponibles a través de WMS y se pueden cargar en nuestro cliente SIG:

añadir WMS

La petición GetMap

Ahora vamos a ver en el navegador la capa de ciudades de nuestro proyecto, para mostrar la capa necesitamos una petición GetMap:

http://localhost/qgis/qgis_mapserv.fcgi.exe? 
SERVICE=WMS& 
VERSION=1.3.0& 
SRS=EPSG:4326& 
REQUEST=GetMap& 
BBOX=-180,-90,180,90& 
WIDTH=1000& 
HEIGHT=500& 
LAYERS=cities& 
FORMAT=image/png

En nuestro proyecto de QGIS al menos debemos tener una capa que se denomine cities, de ahí que la variable LAYERS sea igual a cities.

La variable BBOX viene definida por el SRID, en este caso las capas están en el EPSG:4326, es decir el sistema WGS84, cuyas coordenadas máximas en latitud son 90º, -90º y las coordenadas máximas y mínimas de longitud son 180º y -180º.

getmap_cities

La petición GetPrint

QGIS Server tiene la capacidad de crear una salida del Diseñador de impresión en formato PDF o  de píxel. Las ventanas del Diseñador de impresión del proyecto se utilizan como plantillas. En la solicitud getprint, el cliente tiene la posibilidad de especificar los parámetros de los mapas y etiquetas del diseñador de impresión.

Nuestro proyecto tiene un único diseñador de impresión. En la respuesta del GetCapabilities, se enumeran las posibles plantillas de impresión (ComposerTemplate).

La petición que deberíamos realizar sería (es importante indicar las capas que queremos mostrar):

http://localhost/qgis/qgis_mapserv.fcgi.exe? 
SERVICE=WMS& 
REQUEST=GetPrint& 
TEMPLATE=Mundo& 
map0:EXTENT=-98,-47,84,75& 
WIDTH=1467&HEIGHT=729& 
LAYERS=countries,cities& 
FORMAT=pdf& 
DPI=300& 
TRANSPARENT=true

Y este es el resultado:

getprint_PDF

La petición GetLegendGraphic

http://localhost/qgis/qgis_mapserv.fcgi.exe?map=C:\OSGeo4W\apps\qgis\bin\cities.qgs&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetLegendGraphic&LAYER=countries&FORMAT=image/png&STYLE=default&SLD_VERSION=1.1.0

La verdad es que trabajar con este servidor es realmente fácil 🙂 y las respuestas obtenidas son iguales que las composiciones creadas con QGIS.

Si quieres aprender a manejar el GIS open source más potente y demanda apúntate ya a nuestro curso online de QGIS.

Let’s connect!

Date de alta en nuestra newsletter y te enviaremos GRATIS el ebook que te ayudará a impulsar tu perfil GIS:
Vitaminas MappingGIS

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

30 comentarios en «Primeros pasos con QGIS Server»

  1. He tratado de instalarlo en mi PC que es de 64 bits y no me funciona, hasta el punto 2, todo va bien. La parte del punto 3 no funciona recibo el mensaje Internal Server Error
    The server encountered an internal error or misconfiguration and was unable to complete your request.
    Please contact the server administrator, admin@local.domain and inform them of the time the error occurred, and anything you might have done that may have caused the error.
    More information about this error may be available in the server error log.

    Hice el mismo procedimiento en una PC de 32 bits y si funcionó. Me pueden ayudar por favor, estamos usando en mi institución el software QGIS y tambien queremos hacer publicaciones con Qgis server.

  2. Muy buenas, quisiera plantearos mi problema.
    Al intentar cargar la dirección del WMS de catastro y también de la REDIAM capas de vías pecuarias, me aparece el error «fallo en la descarga de capacidades».
    Sin embargo con ortofotos WMS no me ocurre y si carga.
    Alguien podría explicarme por qué no me cargan algunos wms.
    Saludos y gracias.

  3. Hola Aurelio muy buenos los tutoriales

    una consulta con un error que no puedo solucionar la verdad que no se que es segui el tutorial de instalacion de qgis server al pie de la letra hasta hay todo bien ejecuto localhost:257 y me muestra la pagina principal OSGeo todo bien
    pero en el momento de ejecutar en el nabegador http://localhost/qgis/qgis_mapserv.fcgi.exe?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities me aparece internal error lo pongo con localhost solo o con el puerto y nada la verdad no se que es no se a que se debe lo e probado una y otra vez y como soy nuevo en el tema no se me ocurre nada mas reinicio apache y nada sigue igual ojala me pueda ayuda saludos y muchas gracias..

  4. Hola, tengo instalado el qgis 2.8 como instalar el server, quiero subir mis mapas en mi pagina web (tengo un hosting) porfa soy nuevo me pueden ayudar?.

    Saludos

    • Hola Juan,
      En un principio habíamos pensado incluirlo en el módulo de publicación online, ya que antes utilizabamos QGIS Cloud. Pero incluir QGIS Server es un poco más avanzado, así que lo incluiremos en el curso de QGIS avanzado que estamos preparando…

  5. He seguido tu buen tutorial y el archivo de capacidades me sale bien…. Verás el mapa que he usado de prueba y que he hecho en QGIS tiene varias capas wms; me interesaría saber cómo puedo publicar el wms resultante en algun servidor para que sirva para todo el mundo… porque así en local solo sirve en mi pc y si está Apache corriendo, ¿correcto?
    Muchísimas gracias.

    • Hola Javier,
      Tienes dos opciones:
      a) contratar un servidor dedicado o un VPS del que seas administrador y montar tu arquitectura en él o
      b) Crear tu propio servidor web. 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.
      Saludos!

      • Muchas gracias Aurelio…. Creo que eso me supera de momento; si QGISCloud me funcionara bien me apañaba con eso, pero es un cachondeo… unas veces puedo ver los mapas y otras no, no le pillo el truquillo (a veces se ve el mapa con la dirección que te da para dispositivos móviles pero no en el navegador… Me tiene loco, eso si que me salvaría).
        Por otro lado comentarte que trasteando con QGIS server me he dado cuenta de que no hace falta copiar esas librerias que mencionas en el tutorial: simplemente guardando el proyecto qgs en la misma carpeta donde está el archivo qgis_mapserv.fcgi.exe y teniendo apache corriendo ya se consigue el documento de capacidades. Y haciendo tantas carpetas como proyectos queramos guardar e introduciendo en cada una de ellas una copia del archivo qgis_mapserv.fcgi.exe sólo tendríamos que cambiar en la ruta de acceso el nombre de la carpeta (donde he puesto las xxxxxx):
        http://localhost/qgis/xxxxxx/qgis_mapserv.fcgi.exe?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities
        Un saludo!!!

      • Gracias, muy buen tutorial.
        Tengo una consulta sobre la opción a)
        [ a) contratar un servidor dedicado o un VPS del que seas administrador y montar tu arquitectura en él ].

        ¿Podrías por favor qué tipo de servidor (hosting) necesitaría y qué arquitectura sería para poder subir mis mapas?
        En otras palabras qué necesito tener o buscar en un servidor para poder colocar mis propios mapas y que funcione como un WMS?

        O si conoces algún material con el cual pudiera aprender a hacerlo.
        Gracias.

        • Hola Igor,
          Necesitas un servidor dedicado no administrado, de tal forma que seas tu quien lo administra con privilegios de root, configurando y utilizando el software que prefieres. Instalas QGIS Server y Apache en tu host. Puedes seguir el tutorial para ello (en este tutorial se instala sobre Windows). Pero bueno la arquitectura la eliges tú, quizá en ligar de QGIs Server prefieras PostGIS + GeoServer + OpenLayers…
          Saludos!

    • Hola Leticia,
      ¿Estás realizando la instalación del OSGeo4W Network Installer? No utilices el instalador independiente de QGIS!
      En la ventana de instalación selecciona la opción Advanced Install
      Saludos!

  6. Hola,

    Cuando instalo el paquete de QGIS-SERVER, debería instalarse automáticamente Apache Web Server, no?

    A mi no me aparece siquiera en la pestaña Web de Select Packages.
    Alguna idea?

    Gracias!

    • Hola Laura,
      Asegúrate de ejecutar el OSGeo4W Network Installer, no el instalador independiente de QGIS!

      En la ventana de instalación selecciona la opción Advanced Install y en la ventana siguiente Install from Internet.

      Un saludo,
      Aurelio

  7. Perfecto gracias por vuestra ayuda!! Ahora si escribierais una entrada sobre Mapnik seria perfectoo!!! Lo acabo de instalar pero no se muy bien como va. Saludos!!

    • Hola Fran,
      Gracias, me alegro de que te guste. Me apunto lo de Mapnik!, aunque tengo previsto escribir antes un artículo sobre Tilemill…
      Un saludo!

Los comentarios están cerrados.