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

Guías de Inicio Rápido de MapServer

MapServer es un servidor Open Source basado en aplicación, 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 such as WMS, WFS, y WCS.

Configure MapServer usando el archivo de configuración de MapFile

Nota

¿Qué aprenderé? en esta sección, usted aprenderá lo que es MAp File y cómo configurarlopara permitir que MapServer sirva un shapefile como imágenes usando solicitudes WMS.

¿Qué es un MapFile?

Un Mapfile 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.).

Creando mi primer MapFile

  1. Abra cualquier editor de texto (ejemplo, Applications ‣ Accessories ‣ Leafpad).
  2. Crear el archivo «mapserver_quickstart.map» en tu directorio home:: file:”/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_enable_request "*"
    END
  END

  LAYER
    NAME "Admin 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 el Live dvd en ~/data/natural_earth2 (a short cut to /usr/local/share/data/natural_earth2).

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

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

  • 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 MapFile, veremos que contiene un montón de propiedades y objetos. Entre ellos están:

  • 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 MapFile, 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 MapFile, puede encontrarse en la “Página de documentación de MapServer <http://mapserver.org/mapfile/index.html>`_.

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 MapFile 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=Admin%20Countries&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 de Web Map Service (WMS) GetMap que le dice a MapServer que «utilice el siguiente MapFile para renderizar las capas especificadas como una imagen png en función de 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 «& LAYERS =…» que tengan STATUS ON en MapFile se renderizarán además de todas las capas con STATUS DEFAULT. El resultado es similar al 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 ‣ Accessories ‣ 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.

Añadir una nueva capa al MapFile para servir un shapefile local

Nota

¿Qué aprenderé? Usted aprenderá cómo agregar una nueva definición de objeto de capa a su MapFile.

Ahora añadimos una nueva capa a nuestro MapFile. Antes de la última declaración de END en el MapFile, 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 MapFile. Tenga en cuenta que la nueva que hemos añadido tiene la propiedad de «STATUS» en «ON». Eso significa que a menos que específicamente lo solicitemos, no se renderizará.

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=Admin%20Countries,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

Estilice una capa usando configuraciones de MapFile.

Nota

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

En un MapFile, 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 relacionada al tamaño de los lagos. Podemos utilizar esto como una forma de representar los lagos diferentemente. En el objeto de la CAPA, vamos a añadir otra CLASE de objeto justo antes que 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.

¿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:

  • Leer la Introduction to MapServer.
  • Echa un vistazo al MapServer Tutorial que contiene más ejemplos de MapFile.
  • Revise OGC Support and Configuration para aprender más sobre los estándares de OGC en MapServer (WMS, WFS, SLD, WFS Filter Encoding, WCS, SOS, etc.).
  • ¿Listo para usar MapServer? Entonces únase a la comunidad en el Mailing Lists para intercambiar ideas, discutir sobre perfeccionamiento del potencial del software y resolver dudas.