MapServer

Taller de Sistemas de Información Geográfica MapServer

 

 

Objetivos

La idea es repasar herramientas exitosas de  productos open source orientados a GIS,  empleados en ámbitos comerciales,  gubernamentales y académicos.

http://freegis.org http://opensourcegis.org http://maptools.org

 

Una de las principales ventajas de emplear  estas herramientas open source es que son  compatibles con los principales formatos de    software GIS propietario.

Raster y Vector

Ambos términos se refieren a tipos específicos  de datos.

Los datos Raster son organizados como una matriz o  grilla que tiene filas y columnas.  Cada intersección entre fila/columna es una celda o  pixel.   Cada celda tiene un valor, por ejemplo, una elevación.   Tienen un número determinado de pixels de ancho y  alto y cada pixel representa un determinado tamaño.   Por ejemplo, en imágenes Landsat, cada pixel  representa 30 x 30 metros.  

 

Raster y Vector

Los Vectores son representados como  coordenadas

definen puntos o  se combinan para conformar líneas o polígonos.  Estos datos a menudo se relacionan con una tabla  de información, una para cada característica (línea,  punto o polígono) del conjunto

 

 

OpenEV

Es un potente visor de Escritorio.  Permite  explorar los datos de cualquier tipo de  imágenes (raster o vector) soportadas por la  librería (GDAL/OGR). OpenEV proviene con el paquete FWTools:  http://fwtools.maptools.org http://openev.sourceforge.net/ Es un buen ejemplo de cómo pueden  accederse a las funciones de GDAL/OGR  empleando otros lenguajes ya que está escrito    sobre Phyton

 

OpenEV     .

gis.umn.edu      .   La página oficial de MapServer es:  http://mapserver.MapServer  Es la principal herramienta que emplearemos  para presentar nuestros mapas en la Web.

MapServer ­ Ventajas  Ofrece la posibilidad de presentar los datos a otros  usuarios empleando Internet Es uno de los pocos productos que ofrecen soluciones  a los proyectos que disponen de mapas en múltiples  formatos.    GDAL/OGR  GDAL/OGR PostGIS    Acceso a datos y Performance    Portabilidad $ 0.00    .

       .  Presenta un único  modelo de datos abstracto para la aplicación  que llama para todos los formatos soportados.   A menudo llamada Goodle Una librería para formatos de datos  geoespaciales raster.GDAL  Geospatial Data Abstracion Library Es parte del paquete FWTools.

GDAL  Tiene cuatro características principales:  Variedad: Soporta mas de 40 formatos raster Abstracción: Cualquier aplicación que emplee  GDAL accede automáticamente a esos 40 formatos Herramientas: Las herramientas que emplean  GDAL posiblemente ahorren esfuerzos de  programación. Java. Ruby. etc. puede emplearse    SWIG (Perl.)      .  Phyton. PHP.  Para otros lenguajes. Funciones: Sus funciones pueden ser empleadas  por programadores de distintos lenguajes:  C. C++.

GDAL  En resumen: No hay que preocuparse del  formato de una imagen para poder analizarla y  emplearla.     .

  Provee funciones para redimensaionar.  extraer subconjuntos de datos. gdal_translate: Permite pasar de un formato a  otro.GDAL ­ Utilidades  Las  utilidades GDAL sobre Windows que  provienen con el paquete FWTools Se accede a las mismas empleando el  intérprete de comandos que viene con el  paquete.       . etc.

......                      AUTHORITY["EPSG"..GDAL ­ Utilidades  gdalinfo: Nos brinda información acerca del  archivo de la imagen raster # gdalinfo vancouver."4269"]].6378137..          GEOGCS["NAD83"."7019"]]..298.0...."6269"]]..              DATUM["North_American_Datum_1983".01745329251994328].              UNIT["degree (supplier to define representation)"....                  AUTHORITY["EPSG".2572221010042.              PRIMEM["Greenwich". .            PROJECTION["Transverse_Mercator"]   ....0].... 1028      Coordinate System is:      PROJCS["NAD83 / UTM zone 10N".                  SPHEROID["GRS 1980"..              AUTHORITY["EPSG".tif      Driver: GTiff/GeoTIFF      Size is 1236.

OGR  Es una librería open source para el  procesamiento de datos vectoriales. GDAL se emplea para visualizar datos raster o  imágenes y OGR para los vectoriales.      .

OGR ­ Utilidades  ogrinfo ogr2ogr      .

 gratuito y open source. Extiende PostgreSQL.PostGIS  PostgreSQL: un motor de base de datos  empresariales potente. Las funciones mas avanzadas de PostGIS se  basan en un conjunto de librerías (GEOS). permitiendo almacenar  y manipular tipos de datos geográficos.  Geometry Engine Open Source (refractions  research)       . como  cualquier dato tabular.

nombre = 'Argentina' and a. pais b where b.wkb_geometry      . empleando SQL Consulta:    Seleccionar los países limítrofes a Argentina SQL: SELECT nombre_de_pais  from pais a.wkb_geometry && b.PostGIS  Permite manipular los datos directamente en la  BD.

     .  El Servidor Web recibe las solicitudes de mapas y  las deriva a Mapserver para su creación. MapServer genera el mapa y se lo retorna al  servidor Web quien a su vez lo traslada al usuario.MapServer ­ Funcionamiento  Por lo general. MapServer trabaja detrás de un  Web Server.

      . otra  un vector con los límites de los paises. Una capa puede ser una imagen satelital. otras los  puntos con las principales ciudades.MapServer  La función principal de MapServer involucra  leer datos de distintas fuentes y combinar estas  capas (LAYERS) en un archivo gráfico. también  conocida como imagen del mapa.   Cada capa se dibuja y es superpuesta sobre  las otras.

MapServer     .

Cada capa es tomada desde un origen  independiente (también puede ser el mismo). El proceso de rendering se realiza cada vez    que se solicita un nuevo mapa a MapServer.MapServer  En la figura anterior se muestra un ejemplo de  superposición de capas. Cada uno de los checkbox seleccionados  representa una capa que es solicitada a  MapServer para que sea presentada en la  imagen de la izquierda.      .

 el redibujado se produce  cuando el usuario cambia las capas a visualizar  o bien realiza un zoom in/out o desplazamiento     .MapServer  En nuestro caso.

 dibuja la información desde los  data sources y retorna la imagen  correspondiente. el cual. luego de cada solicitud  de una mapa.MapServer  Uno de los componentes principales es el  programa CGI.     .

 actua como  intermediario entre quien solicita la imagen y  los mapas que la conforman. Las solicitudes se pasan de la forma de  parámetros desde el servidor Web a  MapServer      .MapServer  El programa CGI de MapServer.

  si se emplean leyendas. el formato de imagen de salida.MapServer ­ Mapfile  Básicamente es un archivo de configuración de  texto que enumera la forma de dibujar e  interactuar con el mapa. Incluye que capas deben dibujarse. barras de escala. Cuando se realiza una solicitud a una  aplicación MapServer.     . etc. el sistema  de proyección. debe especificarse que  archivo de mapping debe emplearse para que    así pueda construir el mapa.

shp  CLASS  OUTLINECOLOR 100 100 100  END  END  END     .MapServer ­ Mapfile MAP    SIZE 600 300  EXTENT ­180 ­90 180 90  LAYER  NAME countries  TYPE POLYGON  STATUS DEFAULT  DATA countries.

MapServer ­ Datasource  Representarían el combustible del motor.   Básicamente define de donde se toman los  datos.       . Pueden provenir de una diversidad de fuentes:   soportados en forma nativa por MapServer soportados por medio de librerías GDAL / OGR por medio de un Web Service.

MapServer – Instalación  Windows Linux   Repositorios Compilado      .

/configure make make install    Una vez compiladas las librerias:  Directorio source de MapServer .Linux ­ Compilado  Compilamos todas la librerias requeridas.  Generalmente (depende de cada libreria)   ./configure make       Se generará el archivo ejecutable mapserv .

Linux ­ Compilado Algunas opciones de compilación: – ./configure \ --with-proj=/usr/local/proj-4.6.0 \ --with-geos=/usr/local/bin/geos-config \ --with-ogr=/usr/local/bin/gdal-config \ --with-gdal=/usr/local/bin/gdal-config \ --with-postgis=/usr/local/pgsql/bin/pg_config \ --with-curl-config=/usr/bin/curl-config \ --with-httpd=/usr/sbin/httpd \ --with-php=/usr/include/php \ --with-wfs \ --with-wfsclient \ --with-wmsclient \ --enable-debug \ --with-threads \ --with-wcs \ --with-wcsclient \ --with-sos \ --with-gd \ --with-freetype \ --with-jpeg \ --with-agg=/usr/local/     .

list apt­get update   Buscamos los paquetes de mapserver  apt­cache search mapserver Nos devuelve una lista con los paquetes que contienen el  texto: mapserver   Instalamos los paquetes de MapServer  apt­get install cgi­mapserver mapserver­bin php5­ mapscript   Por defecto se instala en /usr/lib/cgi­bin    .Linux – Ubuntu ­ Repositorio  Actualizamos las fuentes   Es posible que tengamos que editar /etc/apt/sources.

     Compilación      . Disponibles últimas versiones. La compilación es + compleja. y + lenta. Prestaciones no tan elevadas. Mayor productividad y prestaciones.Linux – Compilación vs  Repositorio  Repositorios  En los repositorios normalmente no se encuentran  disponibles las últimas versiones de los  componentes. Puesta en marcha de servidor rápida.

2.MS4W ­ Windows  Paquete MS4W. PHP. Python) GDAL/OGR 1.org MapServer For(4) Windows Apache HTTP Server version 2.1 MapScript 5.6 MapServer CGI 5.maptools.6.0     Contiene           .2. disponible en:  http://www.1 (CSharp.2.10 PHP version 5.2. Java.0 RC2 and Utilities MapServer Utilities PROJ Utilities OGR/PHP Extension 1.0.

conf. por  ejemplo c:\.. The Apache MS4W Web Server service is starting.. The Apache MS4W Web Server service was started successfully..bat  Se instala Apache como un servicio de Windows llamado  "Apache Web Server" Si se ejecuta en una consola DOS se obtiene el siguiente  mensaje: Installing the Apache MS4W Web Server service The Apache MS4W Web Server service is successfully installed.     .  Pasaremos a tener c:\ms4w con el  contenido completo Iniciar MS4W Apache Web Server mediante    /ms4w/apache­install. Testing httpd. Errors reported here must be corrected before the service   can be started.MS4W  Una vez descargado el archivo de MS4W  Descomprimir el contenido en el directorio raiz.

MS4W  http://localhost/     .

MS4W  http://localhost/cgi­bin/mapserv.exe     .

MS4W ­ Herramientas  Ejecutar desde línea de comando   c:\ms4w\setenv.bat     .

SHP de ESRI Herramientas:    OGR   ogrinfo ogr2ogr      .MS4W ­ Aplicaciones  Trabajando los Mapas Ejemplo: Carpeta con archivos .

shp ogrinfo ­so mapas pob0003a_Project      .MS4W ­ Aplicaciones  c:\ms4w\apps\lapampa  mapas\*.

    GEOGCS["GCS_Campo_Inchauspe".0)   .         DATUM["Campo_Inchauspe". 5570103.0].     PROJECTION["Transverse_Mercator"].0.6378388.             SPHEROID["International_1924".0]]. Layer name: pob0003a_Project Geometry: Point Feature Count: 7155 Extent: (3232375.0) HOJA: String (10.0].0174532925199433]].0) PAIS: String (15.MS4W ­ Aplicaciones INFO: Open of `mapas' using driver `ESRI Shapefile' successful.     UNIT["Meter".020105.578346.0) HABITANTES: Real (11.     PARAMETER["False_Easting".0) TIPO: String (50.         PRIMEM["Greenwich".297.1.035091) ­ (3772862.0.0) PROVINCIA: String (60.0)   OBSERVACIO: String (50.         UNIT["Degree".0]] UNION: Real (11.0) DEPARTAMEN: String (40.3500000.845214) Layer SRS WKT: PROJCS["Argentina_Zone_3".  6127358.0.0) NOMBRE: String (45.

MS4W ­ Aplicaciones  ogr2ogr: Las primeras conversiones  ogr2ogr   ­f "ESRI Shapefile" mydata.shp  PG:"host=myhost user=myloginname  dbname=mydbname password=mypassword"  "mytable"  ­f "PostgreSQL" PG:"host=localhost user=someuser  dbname=somedb password=somepassword port=5432"  mydata.shp      ogr2ogr      .

MapServer – Primera Aplicación  Hola Mundo!!!!!  Si. no es la excepción Pasos a seguir:   Crear el Mapfile Crear el Archivo de Inicialización y el Template HTML Ṕrobar la aplicacion!       .

00 1.00 1.MapServer ­ Mapfile NAME ”Hello World” SIZE 400 300 IMAGECOLOR 249 245 186 IMAGETYPE PNG EXTENT ­1.html” IMAGEPATH ”/var/www/htdocs/tmp/”   IMAGEURL ”/tmp/” END   .00 WEB TEMPLATE ”/var/www/htdocs/hello.00 ­1.

MapServer ­ Mapfile LAYER STATUS default TYPE point FEATURE POINTS 0.0 END TEXT ”Hello World” END CLASS STYLE COLOR 255 0 0 END LABEL TYPE  bitmap END END END END     .0 0.

exe”> <input type=”submit” value=”Click”/> <input type=”hidden” name=”map”       value=”/var/www/htdocs/hello.html <html> <head><title>Hello World desde MapServer</title></head> <body> <form method=”POST” action=”/cgi­bin/mapserv.MapServer ­ hello.map”/> </form> <img src=”[img]” width=”400” height=”300” border=”0”/> </body> </html>     .

MapServer     .

MapServer  Archivos Creados (similares):  "/var/www/htdocs/tmp/Hello_World1100850527563 8.png" <img src="/tmp/Hello_World11008505275638.png" width=400 height=300 border=0>      .

MapServer – Primer Mapa     .

map c:\ms4w\Apache\htdocs\map.html    HTML   Mapfile   Template    .html c:\ms4w\Apache\htdocs\mapdata\lapampa.MapServer – Primer Mapa  Archivos SHP de ESRI  c:\ms4w\Apache\htdocs\mapdata\mapas c:\ms4w\Apache\htdocs\lapampa.

html"> <input type="submit" value="Ok para comenzar"> <input type="hidden" name="program" value="/cgi­bin/mapserv.map"> <input type="hidden" name="zoomsize" value="2"> <input type="hidden" name="layers" value="caminos"> <input type="hidden" name="layers" value="contorno"> <input type="hidden" name="layers" value="canales"> <input type="hidden" name="layers" value="alternativos"> <input type="hidden" name="root" value="/"> </form>     .exe"> <input type="hidden" name="map"  value="/ms4w/Apache/htdocs/mapdata/lapampa.MapServer – Primer Mapa lapampa.html <form name="formulario_mapa" method="get" action="mapa.

MapServer – Mapfile NAME "lapampa" SIZE 550 413 TRANSPARENT on IMAGETYPE GIF  SHAPEPATH "/ms4w/Apache/htdocs/mapdata/mapas" EXTENT 3294313.html" IMAGEPATH "/ms4w/apache/htdocs/tmp/"    IMAGEURL "/tmp/" END     ..515716 6127290.490093 WEB TEMPLATE ".840706 5644021./mapa.995538 3738758.

MapServer – Mapfile SCALEBAR     IMAGECOLOR 255 255 255     LABEL       COLOR 0 0 0       SIZE small     END     POSITION lr     INTERVALS 4      STATUS embed     SIZE 150 4     STYLE 0     UNITS kilometers      TRANSPARENT on END LEGEND STATUS on IMAGECOLOR 255 255 255   TRANSPARENT TRUE END   .

MapServer – Mapfile REFERENCE IMAGE "./referencia..840706 5644021.995538 3738758.490093 STATUS ON COLOR ­1 ­1 ­1 OUTLINECOLOR 255 0 0 MINBOXSIZE 5 MAXBOXSIZE 100 MARKERSIZE 8 MARKER 'star' END     .gif" SIZE 200 150 EXTENT 3294313.515716 6127290.

1 port=5432" # DATA "the_geom from contorno"         STATUS on         TYPE line         CLASS                 NAME "Contorno"                 STYLE                         COLOR 120 50 20                 END         END END     .MapServer – Mapfile LAYER         NAME "contorno"         DATA "lim0003a_Project" # CONNECTIONTYPE POSTGIS # CONNECTION "dbname=pampa user=postgres host=127.0.0.

MapServer ­ Interacción Imagen de Referencia con  muestra de ubicación Refresco en la  imagen no de  página   Capas Seleccionables  con checkbox   .

MapServer ­ Scripting  CGI es una alternativa  Permite la elaboración rápida de aplicaciones No requiere conocimientos de programación de un  lenguaje determinado MapScript   Existen Alternativas      .

imagecolor.setRGB(180. 250)  map.web.web.0.py  import mapscript  map = mapscript.­90.180.90.MS_DD  # Set the web object image properties  map.0)  map.setSize(600.0.mapObj(  )  map. 180.imageurl = "/tmp/"      .setExtent(­180.imagepath = "/srv/www/htdocs/tmp/"  map.0.MapServer ­ MapScript Phyton # custommapfile.300)  map.name = "CustomMap"  map.units = mapscript.

999999)).png".map").  ?>     .MapServer ­ MapScript Php <?php $image_name = "phpms­hello". $map = ms_newMapObj("/ms4w/Apache/htdocs/mapdata/hello.".rand(0. $image­>saveImage(""/ms4w/Apache/htdocs/tmp/". $image=$map­>draw().$image_name).

FIN  Conceptos de MapServer  Arquitectura Ventajas Herramientas Formatos Alternativas Ejemplos          .