Estructura Básica de los Archivos MapFile

El presente instructivo tiene como finalidad describir los puntos destacados () de la estructura que conforman los archivos mapfile (map). Los mapfile son el mecanismo de configuración básica del Mapserver. Para mayor información: http://www.mapserver.org/es/mapfile/index.html

Requisitos:

  • Se debe tener cuenta con privilegios de administración (root)
  • Se debe tener instalado y activo servicio mapserver
  • Se debe tener instalado y activo servicio OpenLayers

Plataforma:

  • Equipos de arquitectura 64 bits
  • Sistema operativo ‘GNU/Linux’ Debian versión 7.0(wheezy)

Aplicaciones:

  • MapServer -> versión 6.4.1
  • OpenLayers -> versión 3.17.1
  • Quantum Gis -> versión 1.7.5-Wroclaw

Configuración

Capa PROJECTION
En los servidores WMS, se debe configurar la proyección en la que son capaces de servir los datos empleando para ello los códigos de proyección EPSG. Si la capa del Mapfile PROJECTION se presentará en el formato “init = EPSG: xxxx” entonces MapServer también utilizará esta información para generar una etiqueta para la capa de nivel superior en el documento de capacidades WMS. BoundingBox es un elemento obligatorio de las capacidades de WMS WMS 1.3.0

PROJECTION 
   "init = EPSG:4326" 
END


Capa OUTPUTFORMAT

Formato de Salida de la Imágen. Depende del formato a elegir, PNG, JPG, GIF, … se debe configurar el DRIVER, para el caso PNG se utiliza el controlador AGG/PNG. Para mayor información consultar: http://mapserver.org/mapfile/outputformat.html

OUTPUTFORMAT
   NAME "png"
   DRIVER AGG/PNG
   MIMETYPE "image/png"
   IMAGEMODE RGB
   EXTENSION "png"
END

Capa METADATA
Se requiere habilitar completamento WMS, en este caso se debe colocar la sentencia WMS_ENABLE_REQUEST “*”

METADATA
   'ows_title'           'basic'
   'ows_onlineresource'  'http://localhost/cgi-bin/mapserv?map=/var/www/mapa.map'
   'ows_srs'             'EPSG:4326 EPSG:4269 EPSG:900913'
   'wms_srs'             'EPSG:4326 EPSG:4269 EPSG:900913'
   WMS_ENABLE_REQUEST "*"
END

Capa CONNECTION
CONNECTIONTYPE postgis

CONNECTION "dbname='******' host=0.0.0.0 port=5432 user='******' password='*****' sslmode=disable"
   
DATA 'NOMBRE_CAMPO_GEOMETRICO FROM "ESQUEMA.TABLA" USING UNIQUE SERIAL_O_ID USING srid=PROYECCION'
FILTER (upper(geometrytype("NOMBRE_CAMPO_GEOMETRICO")) IN ('POLYGON','MULTIPOLYGON'))

CONNECTION:

  • dbname: nombre de la base de datos a utilizar
  • host: nombre del host o dirección IP donde se encuentra alojada al base de datos
  • port: puerto de escucha del manejador de base de datos
  • user: usario con privelegios en la base de datos
  • password: contraseña (Revisar Cifrar conexión BD archivo MapFile)
  • sslmode: modo de conección ssl (enable / disable)

DATA:

  • NOMBRE_CAMPO_GEOMETRICO: por defecto es “the_geom” por norma de la OGC, aunque puede tener cualquier nombre. En los casos que se utilice aplicaciones tales como gvSIG, QGIS (Quantum GIS), … para exportar a postgis, estos colocarán “the_geom”
  • SERIAL_O_ID: normalmente es el índice geométrico que se recomienda usar como primary_key en este tipo de tablas, es creado por los programas de exportación gvSIG, QGIS (Quantum GIS)
  • PROYECCCION: normalmente se coloca el código EPSG (srid=EPSG). Si se emplea QGIS (Quantum GIS) para la generación de Mapfile y no se define el “srid” a la vista, el programa exportará un valor “X”. Es importante revisar este valor y compararlo con el real, el cual puede ser obtenido listando la tabla a utilizar “\d TABLA” y revisar el campo “srid(NOMBRE_CAMPO_GEOMETRICO) = *****)”

Ejemplo Capa conexión con variables de PHP

LAYER
   NAME 'DATA'
   TYPE POINT
   CONNECTIONTYPE postgis 
   CONNECTION "host=0.0.0.0 port=**** dbname='*********' password='********' user='*******' sslmode=disable"
   DATA 'NOMBRE_CAMPO_GEOMETRICO FROM "ESQUEMA.TABLA" USING UNIQUE SERIAL_O_ID USING srid=PROYECCION'
   FILTER "campo_tabla = %PHPVAR% AND NOMBRE_CAMPO_GEOMETRICO is not null      
   LABELITEM "codigo"

   VALIDATION
   'PHPVAR' '^[0-9]{1,2}$' 
   END
.....

NOTA: Debido a la sustitución de ejecución afecta a zonas potencialmente sensibles en archivo de asignaciones como las columnas de BD y nombres de archivo, es obligatorio que use la validación del patrón (desde la versión 6.0)

Ejemplo Archivo MAPFILE
A continuación Ejemplo de Archivo Básico MapFile para servidor WMS:

MAP
  NAME "WMS-test"
  STATUS ON
  SIZE 400 300
  EXTENT -2200000 -712631 3072800 3840000
  UNITS METERS
  SHAPEPATH "../data"
  IMAGECOLOR 255 255 255
  FONTSET ../etc/fonts.txt

  WEB
    IMAGEPATH "/tmp/"
    IMAGEURL "/tmp/"
    METADATA
      "wms_title"     "WMS Demo Server"  ##required
      "wms_onlineresource" "http://yourpath/cgi-bin/mapserv?map=/var/www/mapa.map"   ##required
      "wms_srs"       "EPSG:4326 EPSG:42304 EPSG:42101 EPSG:4269 "  ##recommended
      "wms_enable_request" "*"   ##necessary
    END
  END # Web

  PROJECTION
    "init=epsg:42304"   ##required
  END

  SYMBOL
    NAME "circle"
    TYPE ellipse
    POINTS 1 1 END
  END # Symbol

  #
  # Start of layer definitions
  #

  LAYER
    NAME "park"
    METADATA
      "wms_title"    "Parks"   ##required
    END
    TYPE POLYGON
    STATUS OFF
    DATA park
    PROJECTION
      "init=epsg:4326"   ##recommended
    END
    CLASS
      NAME "Parks"
      STYLE
        COLOR 200 255 0
        OUTLINECOLOR 120 120 120
      END # Style
    END # Class
  END # Layer

  LAYER
    NAME popplace
    METADATA
      "wms_title"    "Cities"  ##required
    END
    TYPE POINT
    STATUS ON
    DATA popplace
    PROJECTION
      "init=epsg:4326"   ##recommended
    END
    CLASS
      NAME "Cities"
      STYLE
        SYMBOL "circle"
        SIZE 8
        COLOR 0 0 0
      END # Style
    END # Class
  END # Layer
END # Map File

Probar Archivos MapFile:
Para probar el funcionamiento de un archivo .map se puede emplear las siguientes sintaxis:

1. Probar compatibilidad de archivo .map con MapServer:

http://localhost/cgi-bin/mapserv?MAP=/var/www/mapa.map&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetCapabilities

Donde:

2. Mostrar datos generados por archivo .map con MapServer:

http://localhost/cgi-bin/mapserv?MAP=/var/www/mapa.map&LAYERS=ALL&MODE=MAP

Donde:

Cifrar contraseña conexión BD Archivos MapFile

1. Generar llave de cifrado:

root@servidor:/# msencrypt -keygen "/ruta/llave_cifrado.txt"

Nota: Se sugiere que esta llave de cifrado no debe ser almacenada en ningún lugar dentro de los directorios accesibles de su servidor web

2. Cifrar la contraseña de la conexión BD utilizando la llave de cifrado:

root@servidor:/# msencrypt -key "/ruta/llave_cifrado.txt" "contraseñaBD"
3656026A23DBAFC04C402EDFAB7CE714

NOTA: El código generado será utilizado en el campo de password en la conexión BD archivo mapfile

3. Editar el archivo MAPFILE y incluir la ruta del archivo con la llave de cifrado:

CONFIG "MS_ENCRYPTION_KEY" "/ruta/llave_cifrado.txt"

4. Modificar el valor del campo password por el código generado:

CONNECTION "dbname='****' host=**** port=**** user='****' password={3656026A23DBAFC04C402EDFAB7CE714} sslmode=disable"

Nota: Importante encerrar la clave entre llaves “{}”

Enlaces:

cifrar contraseña BD

Anuncios

Un comentario en “Estructura Básica de los Archivos MapFile

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s