mapserver · 2009-04-23 · mapserver la función principal de mapserver involucra leer datos de...
Post on 23-Mar-2020
6 Views
Preview:
TRANSCRIPT
MapServer
Taller de Sistemas de Información GeográficaMapServer
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
MapServer
Es la principal herramienta que emplearemos para presentar nuestros mapas en la Web.
La página oficial de MapServer es: http://mapserver.gis.umn.edu
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 Acceso a datos y Performance
GDAL/OGR PostGIS
Portabilidad
$ 0.00
GDAL
Geospatial Data Abstracion Library Es parte del paquete FWTools. A menudo llamada Goodle Una librería para formatos de datos
geoespaciales raster. Presenta un único modelo de datos abstracto para la aplicación que llama para todos los formatos soportados.
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.
Funciones: Sus funciones pueden ser empleadas por programadores de distintos lenguajes: C, C++, Phyton. Para otros lenguajes, puede emplearse SWIG (Perl, Java, PHP, Ruby, etc.)
GDAL
En resumen: No hay que preocuparse del formato de una imagen para poder analizarla y emplearla.
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.
gdal_translate: Permite pasar de un formato a otro. Provee funciones para redimensaionar, extraer subconjuntos de datos, etc.
GDAL Utilidades
gdalinfo: Nos brinda información acerca del archivo de la imagen raster
# gdalinfo vancouver.tif Driver: GTiff/GeoTIFF Size is 1236, 1028 Coordinate System is: PROJCS["NAD83 / UTM zone 10N", GEOGCS["NAD83", DATUM["North_American_Datum_1983", SPHEROID["GRS 1980",6378137,298.2572221010042, AUTHORITY["EPSG","7019"]], AUTHORITY["EPSG","6269"]], PRIMEM["Greenwich",0], UNIT["degree (supplier to define representation)",0.01745329251994328], AUTHORITY["EPSG","4269"]], PROJECTION["Transverse_Mercator"] ........................
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
PostGIS
PostgreSQL: un motor de base de datos empresariales potente, gratuito y open source.
Extiende PostgreSQL, permitiendo almacenar y manipular tipos de datos geográficos, como cualquier dato tabular.
Las funciones mas avanzadas de PostGIS se basan en un conjunto de librerías (GEOS), Geometry Engine Open Source (refractions research)
PostGIS
Permite manipular los datos directamente en la BD, empleando SQL
Consulta: Seleccionar los países limítrofes a Argentina SQL:
SELECT nombre_de_pais
from pais a, pais b
where b.nombre = 'Argentina'
and a.wkb_geometry && b.wkb_geometry
MapServer Funcionamiento
Por lo general, MapServer trabaja detrás de un Web Server. 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
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.
Una capa puede ser una imagen satelital, otra un vector con los límites de los paises, otras los puntos con las principales ciudades.
Cada capa se dibuja y es superpuesta sobre las otras.
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.
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 nuestro caso, el redibujado se produce cuando el usuario cambia las capas a visualizar o bien realiza un zoom in/out o desplazamiento
MapServer
Uno de los componentes principales es el programa CGI, el cual, luego de cada solicitud de una mapa, dibuja la información desde los data sources y retorna la imagen correspondiente.
MapServer
El programa CGI de MapServer, 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 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, el sistema de proyección, el formato de imagen de salida, si se emplean leyendas, barras de escala, etc.
Cuando se realiza una solicitud a una aplicación MapServer, debe especificarse que archivo de mapping debe emplearse para que así pueda construir el mapa.
MapServer Mapfile
MAP SIZE 600 300 EXTENT 180 90 180 90 LAYER
NAME countries TYPE POLYGON STATUS DEFAULT DATA countries.shp CLASS
OUTLINECOLOR 100 100 100 END
END END
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
Linux Compilado
Compilamos todas la librerias requeridas. Generalmente (depende de cada libreria)
./configure make make install
Una vez compiladas las librerias: Directorio source de MapServer ./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/
Linux – Ubuntu Repositorio
Actualizamos las fuentes Es posible que tengamos que editar /etc/apt/sources.list aptget update
Buscamos los paquetes de mapserver aptcache search mapserver Nos devuelve una lista con los paquetes que contienen el
texto: mapserver
Instalamos los paquetes de MapServer aptget install cgimapserver mapserverbin php5
mapscript Por defecto se instala en /usr/lib/cgibin
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. Prestaciones no tan elevadas.
Compilación Disponibles últimas versiones. La compilación es + compleja, y + lenta. Mayor productividad y prestaciones.
MS4W Windows
Paquete MS4W, disponible en: http://www.maptools.org MapServer For(4) Windows
Contiene Apache HTTP Server version 2.2.10 PHP version 5.2.6 MapServer CGI 5.2.1 MapScript 5.2.1 (CSharp, Java, PHP, Python) GDAL/OGR 1.6.0 RC2 and Utilities MapServer Utilities PROJ Utilities OGR/PHP Extension 1.0.0
MS4W Una vez descargado el archivo de MS4W
Descomprimir el contenido en el directorio raiz, por ejemplo c:\. Pasaremos a tener c:\ms4w con el contenido completo
Iniciar MS4W Apache Web Server mediante /ms4w/apacheinstall.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 serviceThe Apache MS4W Web Server service is successfully installed.Testing httpd.conf....Errors reported here must be corrected before the servicecan be started.The Apache MS4W Web Server service is starting.The Apache MS4W Web Server service was started successfully.
MS4W
http://localhost/
MS4W
http://localhost/cgibin/mapserv.exe
MS4W Herramientas
Ejecutar desde línea de comando c:\ms4w\setenv.bat
MS4W Aplicaciones
Trabajando los Mapas Ejemplo: Carpeta con archivos .SHP de ESRI Herramientas:
OGR ogrinfo ogr2ogr
MS4W Aplicaciones
c:\ms4w\apps\lapampa mapas\*.shp ogrinfo so mapas pob0003a_Project
MS4W AplicacionesINFO: Open of `mapas' using driver `ESRI Shapefile' successful.
Layer name: pob0003a_ProjectGeometry: PointFeature Count: 7155Extent: (3232375.578346, 5570103.035091) (3772862.020105,
6127358.845214)Layer SRS WKT:PROJCS["Argentina_Zone_3", GEOGCS["GCS_Campo_Inchauspe", DATUM["Campo_Inchauspe", SPHEROID["International_1924",6378388.0,297.0]], PRIMEM["Greenwich",0.0], UNIT["Degree",0.0174532925199433]], PROJECTION["Transverse_Mercator"], PARAMETER["False_Easting",3500000.0], UNIT["Meter",1.0]]UNION: Real (11.0)NOMBRE: String (45.0)TIPO: String (50.0)PROVINCIA: String (60.0)DEPARTAMEN: String (40.0)HABITANTES: Real (11.0)PAIS: String (15.0)OBSERVACIO: String (50.0)HOJA: String (10.0)
MS4W Aplicaciones
ogr2ogr: Las primeras conversiones ogr2ogr
f "ESRI Shapefile" mydata.shp PG:"host=myhost user=myloginname
dbname=mydbname password=mypassword" "mytable"
ogr2ogr f "PostgreSQL" PG:"host=localhost user=someuser
dbname=somedb password=somepassword port=5432" mydata.shp
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!Ṕ
MapServer Mapfile
NAME ”Hello World”
SIZE 400 300
IMAGECOLOR 249 245 186
IMAGETYPE PNG
EXTENT 1.00 1.00 1.00 1.00
WEBTEMPLATE ”/var/www/htdocs/hello.html”
IMAGEPATH ”/var/www/htdocs/tmp/”
IMAGEURL ”/tmp/”
END
MapServer MapfileLAYER
STATUS defaultTYPE pointFEATURE
POINTS 0,0 0,0 ENDTEXT ”Hello World”
ENDCLASS
STYLECOLOR 255 0 0
ENDLABEL
TYPE bitmapEND
ENDENDEND
MapServer hello.html<html><head><title>Hello World desde MapServer</title></head><body>
<form method=”POST” action=”/cgibin/mapserv.exe”><input type=”submit” value=”Click”/>
<input type=”hidden” name=”map” value=”/var/www/htdocs/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
MapServer – Primer Mapa
Archivos SHP de ESRI c:\ms4w\Apache\htdocs\mapdata\mapas
HTML c:\ms4w\Apache\htdocs\lapampa.html
Mapfile c:\ms4w\Apache\htdocs\mapdata\lapampa.map
Template c:\ms4w\Apache\htdocs\map.html
MapServer – Primer Mapa
lapampa.html
<form name="formulario_mapa" method="get" action="mapa.html"><input type="submit" value="Ok para comenzar"><input type="hidden" name="program" value="/cgibin/mapserv.exe"><input type="hidden" name="map"
value="/ms4w/Apache/htdocs/mapdata/lapampa.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>
MapServer – Mapfile
NAME "lapampa"SIZE 550 413TRANSPARENT onIMAGETYPE GIF SHAPEPATH "/ms4w/Apache/htdocs/mapdata/mapas"EXTENT 3294313.840706 5644021.995538 3738758.515716 6127290.490093
WEBTEMPLATE "../mapa.html"IMAGEPATH "/ms4w/apache/htdocs/tmp/" IMAGEURL "/tmp/"END
MapServer – MapfileSCALEBAR 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 onEND
LEGENDSTATUS onIMAGECOLOR 255 255 255TRANSPARENT TRUE
END
MapServer – MapfileREFERENCE
IMAGE "../referencia.gif"SIZE 200 150EXTENT 3294313.840706 5644021.995538 3738758.515716 6127290.490093STATUS ONCOLOR 1 1 1OUTLINECOLOR 255 0 0MINBOXSIZE 5MAXBOXSIZE 100MARKERSIZE 8MARKER 'star'
END
MapServer – MapfileLAYER NAME "contorno" DATA "lim0003a_Project"# CONNECTIONTYPE POSTGIS# CONNECTION "dbname=pampa user=postgres host=127.0.0.1 port=5432"# DATA "the_geom from contorno" STATUS on TYPE line CLASS NAME "Contorno" STYLE COLOR 120 50 20 END ENDEND
MapServer Interacción
Refresco en la imagen no de página
Capas Seleccionables con checkbox
Imagen de Referencia con muestra de ubicación
MapServer Scripting
CGI es una alternativa Permite la elaboración rápida de aplicaciones No requiere conocimientos de programación de un
lenguaje determinado
Existen Alternativas MapScript
MapServer MapScript
Phyton# custommapfile.py import mapscript
map = mapscript.mapObj( ) map.name = "CustomMap" map.setSize(600,300) map.setExtent(180.0,90.0,180.0,90.0) map.imagecolor.setRGB(180, 180, 250) map.units = mapscript.MS_DD
# Set the web object image properties
map.web.imagepath = "/srv/www/htdocs/tmp/" map.web.imageurl = "/tmp/"
MapServer MapScript
Php
<?php$image_name = "phpmshello",rand(0,999999)).".png";
$map = ms_newMapObj("/ms4w/Apache/htdocs/mapdata/hello.map");
$image=$map>draw();
$image>saveImage(""/ms4w/Apache/htdocs/tmp/".$image_name);
?>
FIN
Conceptos de MapServer Arquitectura Ventajas Herramientas Formatos Alternativas Ejemplos
top related