../../_images/logo_mapserver.png ../../_images/OSGeo_project.png

Inicio Rápido de MapServer

MapServer es una aplicación basada en servidor de Código Abierto que le permite publicar ned application that allows you to publish imágenes de mapas geográficos y datos vectoriales a través de Internet usando OGC Standards como Web Map Service (WMS), Web Feature Service (WFS) y Web Coverage Service (WCS).

Configure MapServer usando el archivo de configuración del archivo Map

Nota

¿Qué aprenderé? En esta sección, aprenderá sin igual lo que es un archivo Map y cómo configurarlo para permitir que MapServer sirva un archivo Shape como imágenes mediante solicitudes WMS.

¿Qué es un archivo Map?

Un archivo Map es el archivo de configuración que MapServer usa para representar datos geoespaciales como imágenes o datos vectoriales. Su objetivo principal es definir las capas que puede dibujar, cómo leer los datos necesarios y cómo representarlos (por ejemplo, color, símbolo, etiqueta, etc.).

Creación de mi primer archivo Map

  1. Abra cualquier editor de texto (por ejemplo Applications ‣ Accessories ‣ FeatherPad).

  2. Crear el archivo «mapserver_quickstart.map» en tu directorio raiz: /home/user/mapserver_quickstart.map

    Poner el siguiente contenido en él:

    MAP
      NAME "MAPSERVER_QUICKSTART"
      EXTENT -137 29 -53 88
      UNITS DD
      SHAPEPATH "/home/user/data/natural_earth2/"
      SIZE 800 600
    
      IMAGETYPE PNG24
    
      PROJECTION
        "init=epsg:4326"
      END
    
      WEB
        METADATA
          ows_title "MapServer Quickstart"
          ows_enable_request "*"
          ows_srs "EPSG:4326 EPSG:25832 EPSG:25833"
        END
      END
    
      LAYER
        NAME "Countries"
        STATUS ON
        TYPE POLYGON
        DATA "ne_10m_admin_0_countries"
        CLASS
          STYLE
            COLOR 246 241 223
            OUTLINECOLOR 0 0 0
          END
        END
      END
    
    END
    

    Nota

    El ejemplo utiliza el conjunto de datos de Natural Earth, que ya está instalado en OSGeoLive en ~/data/natural_earth2 (atajo para /usr/local/share/data/natural_earth2).

Cada objeto en un archivo Map comienza con su nombre (por ejemplo MAP) y termina con un END. Un archivi Map siempre comienza con el objeto MAP y debe contener una lista de objetos LAYER que el archivo Map puede leer y dibujar. En nuestro archivo Map, actualmente solo tenemos una capa definida.

Echemos un vistazo a algunos de los objetos (y propiedades) definidos en nuestro archivo Map:

  • EXTENSIÓN: establece el cuadro delimitador geoespacial predeterminado para esta configuración.

  • CAPA: define las propiedades de acceso y visualización de un conjunto de datos espacial. Vamos a añadir otra capa más tarde.

  • SHAPEPATH: establece una ruta de base de datos basados en archivos (por ejemplo imágenes de shapefiles o tiff).

Si miramos más de cerca la CAPA en nuestro archivo Map, veremos que contiene un montón de propiedades y objetos también. Entre ellos se encuentran:

  • STATUS: define si la capa puede ser dibujada (ON), no puede ser dibujada (OFF) o siempre se dibuja (PREDETERMINADAMENTE).

  • TIPO: el tipo de geometría que MapServer debe utilizar al representar los datos como una imagen. En nuestro archivo Map, los datos se dibujarán como polígonos.

  • DATOS: el nombre del archivo de datos espaciales de esta capa utiliza, en este caso un shapefile.

  • CLASE: determina cómo dibujar una capa (estilo). Cubriremos este objeto con más detalle más adelante.

Nota

Una lista completa de los objetos disponibles y las propiedades que puede tener un archivo Map, puede encontrarse en la página de documentación de MapServer.

Renderizar una imagen del mapa con MapServer usando una Solicitud de GetMap de WMS

Nota

¿Qué aprenderé? Aprenderá a renderizar una imagen con capas de un archivo Map con MapServer utilizando una solicitud de OGC WMS.

Abra un navegador web e introduzca la siguiente URL:

http://localhost/cgi-bin/mapserv?map=/home/user/mapserver_quickstart.map&SERVICE=WMS&REQUEST=Getmap&VERSION=1.1.1&LAYERS=Countries&SRS=EPSG:4326&BBOX=-137,29,-53,88&FORMAT=PNG&WIDTH=800&HEIGHT=600

¿Qué significa lo anterior? Si lo ponemos en palabras simples, es una solicitud Web Map Service (WMS) de GetMap que indica a MapServer que «utilice el siguiente archivo Map para representar las capas especificadas como una imagen png basada en algunos parámetros proporcionados por el usuario, como el tamaño de la imagen, la extensión geográfica, la proyección, etc.». Todas las capas especificadas en la propiedad «&A LAYERS…» que tengan STATUS ON en el archivo Map se representarán además de todas las capas con STATUS DEFAULT. El resultado es el siguiente:

../../_images/mapserver_map.png

Nota

Todos los parámetros de la solicitud son específicamente WMS-, excepto «?map=/home/user/mapserver_quickstart.map», que es específico de MapServer.

Renderice una imagen del mapa con MapServer usando la línea de comando

Aunque MapServer está orientado a aplicaciones web, también puede producir imágenes en la línea de comandos. Esto puede ser útil si está buscando mapeo repetitivo o durante la depuración.

Abra una terminal(Applications ‣ System Tools ‣ Terminal Emulator) y tecleé:

shp2img -m mapserver_quickstart.map -o mymap.png

Si este comando se ejecuta con éxito, puede ver su mapa renderizado en file:///home/user/mymap.png.

Agregue una nueva capa al archivo Map para servir un archivo Shape local

Nota

¿Qué aprenderé? Aprenderás a agregar una nueva definición de objeto de capa a tu archivo Map.

Ahora agregaremos una nueva capa a nuestro archivo Map. Antes de la última instrucción END en el archivo Map, agregue la siguiente configuración de capa:

LAYER
  NAME "Lakes"
  STATUS ON
  TYPE POLYGON
  DATA "ne_10m_lakes"
  CLASS
    STYLE
      COLOR 153 179 204
    END
  END
END

Ahora tenemos 2 definiciones de capa en nuestro archivo Map. Tenga en cuenta que el nuevo que acabamos de agregar tiene la propiedad «STATUS» establecida en «ON». Eso significa que a menos que lo solicitemos específicamente, no se representará.

Tomemos nuestra anterior solicitud WMS GetMap agreguemos la nueva capa de «Lagos» a la imagen renderizada. Simplemente tenemos que añadir el nuevo nombre de la capa a la lista de propiedades de «CAPAS»:

http://localhost/cgi-bin/mapserv?map=/home/user/mapserver_quickstart.map&SERVICE=WMS&REQUEST=Getmap&VERSION=1.1.1&LAYERS=Countries,Lakes&SRS=EPSG:4326&BBOX=-137,29,-53,88&FORMAT=PNG&WIDTH=800&HEIGHT=600

La imagen de MapServer se ve como el mapa anterior, pero con la adición de los lagos de nuestra nueva capa:

../../_images/mapserver_lakes.png

Estilo de una capa mediante configuraciones de archivo Map

Nota

¿Qué aprenderé? Verá un ejemplo de elementos de estilo dentro de una capa según algunas de sus propiedades de datos.

En un archivo Map, un objeto de CAPA puede contener un número infinito de CLASES de objetos. Se utilizan para estilizar los elementos contenidos en el archivo de datos espaciales (DATA) del estilo. Por ejemplo, si miramos más de cerca nuestro archivo de datos «ne_10m_lakes» usando una herramienta como ogrinfo, veremos las definiciones de geometría y atributos que contiene. Estos valores de atributo se pueden utilizar como una forma de dibujar los elementos dentro de un conjunto de datos diferente, usando varias CLASES de objetos.

En nuestro conjunto de datos «ne_10m_lakes», tenemos un atributo de ScaleRank , que parece estar relacionado al tamaño de los lagos. Podemos utilizar esto como una forma de representar los lagos de manera diferente. En el objeto LAYER, vamos a añadir otra CLASE de objeto justo antes del el actual:

LAYER
  NAME "Lakes"
  STATUS ON
  TYPE POLYGON
  DATA "ne_10m_lakes"
  CLASSITEM "ScaleRank"
  CLASS
    EXPRESSION /0|1/
    STYLE
      COLOR 153 179 204
      OUTLINECOLOR 0 0 0
    END
  END
  CLASS
    STYLE
      COLOR 153 179 204
    END
  END
END

¿Qué hace nuestra nueva CLASE de objeto? Básicamente, le dice MapServer que dibuje los elementos con la propiedad «ScaleRank» igual a «0» o «1» con un contorno negro. Las CLASES de objetos siempre se leen desde la parte superior hasta la parte inferior de cada función a ser dibujado. Cuando una característica coincide con la «EXPRESIÓN» especificada en una clase, esa clase va a representar la función. Si la función no coincide con una clase se comprueba la siguiente clase. Si una función no coincide con cualquier clase de entonces no se renderizará, pero si la última clase en una capa no contiene ninguna «EXPRESIÓN», entonces esa clase actuará preedeterminadamente. La propiedad de capa «CLASSITEM» indica a MapServer que atributo a utilizar al evaluar alguna «EXPRESIÓN» definida en las CLASES de objetos.

El resultado de esta nueva adición debe hacer que los grandes lagos de nuestra imagen de mapa se rendericen con un contorno negro:

../../_images/mapserver_lakes_scalerank.png

Nota

Aprenda más sobre EXPRESSIONS en MapServer.

Publique los datos como OGC WMS (Servicio Web de Mapas)

MapServer admite diferentes estándares OGC como OGC WMS, WFS o WCS. Con OGC WMS puede publicar sus datos como un servicio de mapas e integrar el servicio en un SIG de escritorio como QGIS o en un cliente web como OpenLayers o Mapbender.

Uso de QGIS Desktop para cargar su OGC WMS

  1. Iniciar QGIS via Geospatial ‣ Desktop GIS ‣ QGIS Desktop

  2. Ir a Layer ‣ Add Layer ‣ Add WMS/WMTS Layer.

  3. Haga click en el botón Nuevo y agregue un nombre y su URL de Servicio

  4. Guardar los cambios:

    http://localhost/cgi-bin/mapserv?map=/home/user/mapserver_quickstart.map&SERVICE=WMS&REQUEST=GetCapabilities&VERSION=1.3.0

A continuación, puede conectarse a su servicio y agregar una o más capas del servicio a su proyecto QGIS. Si elige la capa con el ID 0, puede cargar todo el servicio con todas las capas a la vez.

../../_images/mapserver_load_wms_to_qgis.png

¿Qué sigue?

Este es un ejemplo simple, pero usted puede hacer mucho, mucho más. La página web del proyecto MapServer contiene muchos recursos para ayudarle a comenzar. Aquí hay algunos recursos para comprobar hacia fuera el siguiente: