UMN Mapserver

De WikiSalud
Saltar a: navegación, buscar

Contenido

Introducción

Mapserver es un servidor de mapas de código abierto para publicar mapas en aplicaciones web. Fue desarrollado originalmente por la universidad de Minnesota (UMN) en cooperación con la NASA y el departamento de recursos naturales de Minnesota (MNDNR). Más adelante, fue adoptado por el proyecto TerraSIP, un proyecto patrocinado por la NASA.
Actualmente, Mapserver es un proyecto que forma parte de OsGeo y que se sostiene por desarrolladores a lo largo de todo el mundo.

Instalación

Con la aplicación Aptitude buscar cgi-mapserver o en consola escribir como usuario root:

aptitude install cgi-mapserver

El servidor de mapas es un programa ejecutable cgi que está en: /usr/lib/cgi-bin/

Para ver las capacidades de mapserver instaladas se utiliza el siguiente comando:

cd /usr/lib/cgi-bin
./mapserv -v

En caso que se desee hacer uso de algunas utilidades específicas de Mapserver, será necesario compilarlo siguiendo las instrucciones del sitio web de Mapserver http://mapserver.org/installation/unix.html#compiling

Archivo MAP

El archivo MAP es el núcleo del servidor de mapas Mapserver y especifica qué datos se van a mostar, cómo se van a mostrar y la relación entre ellos.

A continuación se muestra un ejemplo de archivo map, que permite mostrar unidades comunitarias de salud familiar (UCSF) en un mapa.

 MAP
        NAME 'ucsf'
        SIZE 800 650
        STATUS ON
        EXTENT  -90.191281 12.706798 -87.623150 14.902626        
 
        INCLUDE "../../geomoose_globals.map"
 
        WEB
                METADATA
                        'ows_enable_request'   '*'
                        'ows_title' 'ucsf'
                        "wms_onlineresource" "http://hsgeo.salud.gob.sv/cgi-bin/mapserv?MAP=/var/www/geo/hsgeo/public_html/georiesgo/maps/mapas_elsalvador/mapas_tematico/ucsf.map&"
                        'ows_srs' 'EPSG:4326 EPSG:900913'
                END
        END
 
        PROJECTION
                'init=epsg:3857'
        END
 
        LEGEND
              STATUS ON
              LABEL
                TYPE TRUETYPE
                FONT vera_sans
                SIZE 8
                COLOR 0 0 0
              END
        END
 
    LAYER
    NAME 'ucsf'
 
    CONNECTIONTYPE postgis
    CONNECTION "dbname='nombrebd' user=usuario password=clave sslmode=disable"
    DATA 'the_geom FROM "ucsf" using unique gid using SRID=4326'
 
 
    STATUS DEFAULT
    TYPE POINT
 
    PROJECTION
       "init=epsg:4326"
     END
     LABELITEM "name"
     LABELMAXSCALE 80000
     LABELCACHE ON
     UNITS dd
     SIZEUNITS PIXELS
     CLASSITEM "tipo"
 
     CLASS
      NAME 'Especializada'
      EXPRESSION ([tipo]=1)
       STYLE
        SYMBOL "ucsfe"
         SIZE 10
        COLOR 0 0 255
        END
           LABEL
                                COLOR 0 0 0
                                FONT "vera_sans"
                                TYPE TRUETYPE
                                POSITION UC
                                PARTIALS TRUE
                                SIZE 7
                                BUFFER 1
                                OUTLINECOLOR 255 255 255
                        END
 
 
 
          END
 
    CLASS
      NAME 'Intermedia'
      EXPRESSION ([tipo]=2)
       STYLE
        SYMBOL "ucsfi"
         SIZE 10
        COLOR 0 0 255
        END
        LABEL
                                COLOR 0 0 0
                                FONT "vera_sans"
                                TYPE TRUETYPE
                                POSITION UC
                                PARTIALS TRUE
                                SIZE 7
                                BUFFER 1
                                OUTLINECOLOR 255 255 255
                        END
 
 
 
          END
 
    CLASS
      NAME 'Básica'
      EXPRESSION ([tipo]=3)
       STYLE
        SYMBOL "ucsfb"
         SIZE 10
        COLOR 0 0 255
        END
          LABEL
                                COLOR 0 0 0
                                FONT "vera_sans"
                                TYPE TRUETYPE
                                POSITION UC
                                PARTIALS TRUE
                                SIZE 7
                                BUFFER 1
                                OUTLINECOLOR 255 255 255
                        END
 
 
 
          END
               METADATA
                        'identify_record'       'identify_ucsf.html'
                        'select_record' 'select_ucsf.html'
                        'select_header' 'select_header_ucsf.html'
                        'popups' 'ucsf_popup.html'
 
                        'itemquery'     'ucsf_itemquery.html'
                #       'itemquery-filteritem' 'OWNER_NAME'
                        'itemquery-filter'      '/.*[qstring].*/i'
                        'qstring_validation_pattern' '.'
 
                        # Feature reports are stored in the conf/feature_report directory.
               END
               TOLERANCEUNITS dd  
               TOLERANCE 0.01
 
 
 
END  ## end Layer
 
END ## end Map

En un archivo map, se dispone de un objeto mapa raíz el cual se define con la etiqueta global MAP y luego por cada capa geográfica que se va a mostrar se incluye una etiqueta LAYER. Todas las etiquetas de objetos se cierran con la etiqueta END. El archivo map se interpreta secuencialmente en orden, por lo tanto las capas geográficas que se indican primero quedarán en la base de todas las capas geográficas.
A continuación se explican las principales etiquetas del archivo map:

Etiquetas del objeto map


NAME: nombre que se le antepone al mapa, barra de escala y leyenda
SIZE: tamaño en pixeles de la imagen de salida del mapa
STATUS: indica si el mapa se va a mostrar o no
EXTENT: la extensión espacial del mapa
UNITS: unidades de las coordenadas del mapa (pies, km, m, millas, etc.)
INCLUDE: incluye archivos de cabecera en el archivo map. Estos a su vez, retoman la sintaxis del archivo map
WEB:permite configurar web map services
WEB/METADATA: incluye datos necesarios para configurar web map services
PROJECTION: define el sistema de coordenadas del mapa de salida
LEGEND: este objeto personaliza la apariencia de la leyenda del mapa (tipo de letra, etc.)
LEGEND/LABEL: este objeto describe la etiqueta de la leyenda.

Etiquetas del objeto layer

Para cada capa geográfica de la aplicación web, es necesario especificar las etiquetas donde se establece el origen de los datos, su proyección y apariencia. A continuación se describen las más comunes:

NAME: nombre de la capa geográfica en el archivo map, es el mismo que se ocupa en la aplicación web.
CONNECTIONTYPE: tipo de conexión, puede ser SDE, Oracle o Postgis.
CONNECTION: parámetros de conexión a la base de datos. La conexión puede ser a una base de datos local (localhost) o que está en otro servidor. Si es localhost se puede omitir esta etiqueta ya que es la predeterminada. En caso de conectarse a otro servidor, será necesario configurar el archivo pg_hba.conf del postgres del otro servidor y agregar la ip que va a tener acceso.
DATA: atributos y capa geográfica que se va a mostrar. Se tiene que especificar el nombre de la columna geográfica y el sistema de referencia de coordenadas.
STATUS: estado de la capa o layer (on: encendido, off: apagada, default: encendida)
TYPE: tipo de dato geográfico (punto, línea o polígono)
PROJECTION: define el sistema de coordenadas de cada capa para que mapserver pueda hacer la transformación necesaria.
SYMBOL: indica el símbolo que se usa en la leyenda para representar a la capa geográfica.
LABELITEM: nombre del campo que se utiliza para etiquetar a cada objeto geográfico.
LABELMAXSCALE: indica la escala máxima en la cual se van a mostrar las etiquetas de la capa.
LABELCACHE: indica en qué momento se van a cargar las etiquetas de los objetos, de forma predeterminada es ON y con esto se espera a que carguen todas las capas geográficas y luego se dibujan las etiquetas.
SIZEUNITS: unidades de la capa geográfica.
CLASSITEM: nombre del campo sobre el cuál se va a clasificar el mapa.
METADATA: todo lo que se incluya dentro de este objeto puede ser accesado por las plantillas html. Se utiliza mucho para consulta de atributos de los objetos espaciales. En el ejemplo se han incluido una serie de valores que permiten consultar datos de los UCSF con ventanas emergentes en el primer caso. En la sección Identificación de objetos especiales se detalla el funcionamiento de los metadatos incluidos en esta etiqueta.
TOLERANCE: sensibilidad para consultas de objetos tipo punto
TOLERANCEUNITS: unidades en que se expresa la tolerancia. Estas unidades pueden ser:
pixels: pixeles
feet: pies
inches: pulgadas
kilometers: kilómetros
meters: metros
miles: millas
nauticalmiles: millas náuticas
dd: grados decimales

De forma predeterminada, las unidades en que se mide la tolerancia son pixeles.

Nota: Si está usando proyecciones geográficas como la WGS84, las unidades de tolerancia deben de ser grados decimales

Mapa temático

Los mapas pueden ser temáticos, es decir mostrar objetos geográficos de una misma capa clasificados en base a uno de sus campos. En el ejemplo se ha clasificado el mapa en base al tipo de UCSF: básico, intermedio o especializado como se muestra a continuación:
Leyenda2.jpeg
Para definir una clase se usa el objeto class y dentro de él se especifican los parámetros de cada clase.

Etiquetas del objeto Class

NAME: nombre de la clase para la leyenda.
EXPRESSION: condición de la clase
STYLE: estilo de la simbología para la clase
STYLE/SYMBOL: símbolo para representar a la clase
STYLE/SIZE: tamaño del símbolo
STYLE/COLOR: color del símbolo
Toda clase tiene un objeto LABEL que describe la apariencia de las etiquetas para esa clase.
Las etiquetas del objeto LABEL se describen a continuación:
COLOR: color del texto de la leyenda
FONT: alias del tipo de letra para la etiqueta
TYPE: tipo de letra
POSITION: posición de la etiqueta
PARTIALS: controla la posición de la etiqueta con respecto a la capa geográfica
SIZE: tamaño de letra
BUFFER: margen en pixeles alrededor de la etiqueta para mejor visualización
OUTLINECOLOR: color del borde del texto de la leyenda

Nota 1: Los campos o atributos de una tabla en el archivo map se especifan así: [atributo]
Nota 2: El símbolo # indica que le sigue un comentario

Iconos de leyenda

Para definir iconos personalizados en la leyenda de una capa se debe de utilizar las etiquetas descritas a continuación. Esta definición de etiquetas se puede hacer dentro del archivo map o en archivo externo que es incluido mediante la etiqueta INCLUDE en el mapfile.

El siguiente ejemplo muestra un archivo symbols.sym que especifica cada tipo de icono y hace referencia a la imagen que representa a dicho icono, la cual está almacenada en la misma carpeta que este archivo.

SYMBOLSET
 
SYMBOL
NAME 'centros-salud'
TYPE PIXMAP
IMAGE 'hospital-verde.png'
END
 
SYMBOL
NAME 'hospitales'
TYPE PIXMAP
IMAGE 'hospital-red.png'
END
 
SYMBOL
NAME 'otras-categorias'
TYPE PIXMAP
IMAGE 'hospital-negro.png'
END
 
SYMBOL
NAME 'puestos-salud'
TYPE PIXMAP
IMAGE 'hospital-blue.png'
END
 
 
END #Symbolset

La visualización de esta leyenda se muestra a continuación:

Leyenda.jpeg

Identificación de objetos espaciales

Si se desea ver la información de los objetos espaciales o identificarlos, es necesario que por cada objeto se cree una plantilla html. Además, será necesario especificar algunos valores de metadata en la etiqueta LAYER del archivo .map

A continuación se muestra un ejemplo para identificar áreas geográficas de influencia:

Archivo de tipo map El siguiente código se incluye en el archivo map:
METADATA	
	      'identify_record'	'identify_agis.html'
	      'select_record'	'select_agis.html'
	      'select_header' 'select_header_agis.html'
	      'popups' 'agis_popup.html'
 
	      'itemquery'	'agis_itemquery.html'
 
	      'itemquery-filter'	'/.*[qstring].*/i' 
	      'qstring_validation_pattern' '.'
 
	      # Feature reports are stored in the conf/feature_report directory.
	      'feature_report' 'agis.xml'
END

En la misma carpeta de los archivos map, se incluyen las plantillas html para desplegar la información de los objetos espaciales así:

Plantilla html: identify_agis.html
<!-- MapServer Template -->
<style type="text/css">
a {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 12px;
	font-weight: bold;
	color: #ffd700;
}
</style>
<tr bgcolor="#353534"><td colspan="2"><b><u><font color="#ffd700">AGIS</font></u></b></tr>
 
<tr>
<td align="left" valign="top"><b>Depende:</b></td>
  <td>[DEPENDEN]</td>
</tr>
<tr>
<td align="left" valign="top"><b>Tipo:</b></td>
<td>[TIPO]</td>
</tr>
<tr>
<td align="left" valign="top"><b>Depto:</b></td>
<td>[DPTO]</td>
</tr>
<tr>
<td align="left" valign="top"><b>Mun:</b></td>
<td>[MUNI]</td>
</tr>
<tr>
<td align="left" valign="top"><b>Poblado:</b></td>
<td>[REGION]</td>
</tr>
 
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>

Web Map Service (WMS)

Mapserver permite configurar web map services (WMS) para compartir datos geográficos. Véase Web Map Service

Migración de Mapserver 5.6 a 6.0

Tipo de imagen de salida

En esta versión es necesario comentar las líneas donde se hace referencia al DRIVER GD/JPEG así:

FONTSET         "../../fonts/fontset.list"
        SYMBOLSET       "../../symbols/symbol.sym"
 
        # prevent the pink screen of death on large monitors
        MAXSIZE 10000
 
        TRANSPARENT TRUE
 
        OUTPUTFORMAT
                NAME 'agg/png'
                DRIVER AGG/PNG
                IMAGEMODE RGBA
                FORMATOPTION "TRANSPARENT=TRUE"
        END
 
        #OUTPUTFORMAT
        #       NAME 'agg/jpeg'
        #       DRIVER GD/JPEG
        #       IMAGEMODE RGB
        #       FORMATOPTION "TRANSPARENT=FALSE"
        #END
 
        # One day, when the death of IE6 is confirmed, I would love for this
        # to default to agg/png
        IMAGETYPE PNG
 
        IMAGECOLOR 255 255 255
        CONFIG "MS_ERRORFILE" "/tmp/map_error.txt"

Además, se tiene que comentar cualquier referencia a las etiquetas GAP o STYLE.

Más información sobre los cambios para migrar de la versión 5.6 a la 6.0 en: http://mapserver.org/MIGRATION_GUIDE.html#mapserver-5-6-to-6-0-migration. Es necesario verificar este sitio cada vez que se actualice a otra versión de mapserver para incorporar los ajustes en el código del archivo de tipo MAP.

Migración de Mapserver 6.0 a 6.4.1

La versión de mapserver en Jessie es la 6.4.1 y hay algunas consideraciones en los archivos tipo MAP al respecto:

  • La etiqueta DUMP ya no se utiliza
  • La etiqueta LABELMAXSCALE debe ser sustituida por LABELMAXSCALEDENOM
  • La etiqueta TRANSPARENCY debe ser sustituida por OPACITY.

Más información en http://mapserver.org/MIGRATION_GUIDE.html

Archivos MAP dinámicos

Los archivos MAP pueden recibir variables que pueden recibir valores introducidos en alguna interfaz por un usuario. Estas variables se pueden usar en las siguientes etiquetas:

  • CLASS: EXPRESSION
  • CLASS: TEXT
  • LAYER: CONNECTION (se puede colocar una variable en el query SQL)
  • LAYER: DATA
  • LAYER: FILTER
  • LAYER: TILEINDEX
  • OUTPUTFORMAT: FORMATOPTION: FILENAME

Es necesario incluir la etiqueta VALIDATION para que funcione bien, de lo contrario no se hará la sustitución.

Para más información se puede consultar: http://mapserver.org/cgi/runsub.html

Aplicaciones con UMN Mapserver

En el Ministerio de Salud se ha desarrollado una aplicación de web SIG, tiene como servidor de mapas a UMN Mapserver:

Fuente: http://mapserver.org/

Herramientas personales
Espacios de nombres

Variantes
Acciones
Navegación
Herramientas