Configuración e instalación de aplicación Geomoose

De WikiSalud
Saltar a: navegación, buscar

Contenido

Introducción

Logo geomoose.png

Geomoose es un framework de cliente web con Javascript. El núcleo de GeoMOOSE está escrito en JavaScript con HTML y viene preempaquetado con módulos PHP que realizan diversas funciones en la aplicación web. Además Geomoose pertenece a la lista de proyectos graduados de la fundación para el código abierto geoespacial OSGeo.
Para mayor información: http://www.geomoose.org/ http://www.osgeo.org/

Instalación de aplicación web Geomoose

Esta guía de instalación de GeoMOOSE en Debian Wheezy o Jessie se hizo tomando como base las instrucciones de instalación en Linux del sitio de Geomoose.

Requisitos mínimos

  • 4GB de RAM, 500 GB de disco duro.
  • Sistema Operativo Debian 64bits.
  • Conexión a internet

Pasos de la instalación

­­­­­­­­­­­­­­­­­­­­­­­­1) Instalar el servidor web Apache, el servidor de mapas UMN Mapserver, Php5 y librerías de Php y geográficas adicionales
2) Clonar el proyecto desde el servidor de git o copiar la carpeta
3) Crear y habilitar el virtual host
4) Configuración: archivo settings.ini, epsg y Mapbook
5) Configuración de la aplicación

Instalación de paquetes

­­­­­­­­­­­­­­­­­­­­­­­­­­­ En primer lugar, se deben de seguir los pasos de la guía Preparando el entorno de desarrollo SIG para instalar el entorno básico de desarrollo web SIG. Además, se tienen que instalar algunas librerías adicionales de php y geográficas.

Antes de instalar algún paquete debe de actualizarse los paquetes:

aptitude update

A continuación se deben de instalar algunas librerías adicionales de PHP y geográficas:

Librerías de php:

aptitude install php5­-curl php5­-dev php5-mapscript

Librerías geográficas:

Verificar que estén instaladas las siguientes librerías:

Librerías requeridas
Librería (Debian) Descripción
libproj Transformaciones de proyecciones de datos
libfribidi Codificación
libfreetype Representación de imágenes de alta calidad
libgdal Traducción de imágenes en formato ráster
libgeos Modelo de objetos espaciales y proporciona funciones geométricas
Para instalar las librerías anteriores escribir como root:
Wheezy:
aptitude install libproj0 libfribidi0 libfreetype6 libgdal1 libgeos-3.3.3

Copia del proyecto

Descargar el proyecto más estable desde http://geomoose.org/download.html

Copiar el archivo al /home/[usuario]/

Descomprimir el archivo:

tar -xzvf geomoose-[version].tar.gz

o sino también se puede clonar desde https://github.com/geomoose/geomoose

Si se clona el proyecto, es necesario copiar manualmente todos los archivos *.map del proyecto

Cambiar el nombre a la carpeta geomoose-[version] si desea, esto para facilitar su manipulación.

Configuración de virtual host

A continuación se muestra un ejemplo de virtual host para la aplicación Geomoose, es necesario adaptar los valores de ip y rutas de la carpeta raíz para cada caso:

Debian Wheezy

<VirtualHost 127.0.0.2:80>
 
           SeverName geo.localhost
           ServerAdmin webmaster@localhost
           DocumentRoot /home/usuario/geomoose/htdocs/
 
           DirectoryIndex geomoose.html 
           <Directory /home/usuario/geomoose/htdocs/>
                 Options FollowSymLinks MultiViews
                 AllowOverride All
                 Order allow,deny
                 allow from all
           </Directory>
           <Directory /home/usuario/geomoose/>
                 allow from all
                 Options ExecCGI FollowSymLinks
           </Directory>
           ScriptAlias /cgi-­bin/ /usr/lib/cgi­-bin/
           <Directory /usr/lib/cgi-­bin>
                 AllowOverride None
                 Options +ExecCGI ­-MultiViews +SymLinksIfOwnerMatch
                 Order allow,deny
                 Allow from all
           </Directory>
           ErrorLog ${APACHE_LOG_DIR}/geo.localhost-error.log
           LogLevel warn
           CustomLog ${APACHE_LOG_DIR}/geo.localhost-access.log combined
</VirtualHost>
Nota 1: Si se va a utilizar un servidor virtualizado utilizar en vez de ServerName, NameVirtualHost
Configurar archivo /etc/hosts, agregando la siguiente línea:
127.0.0.2 geo.localhost

Debian Jessie

La versión Jessie incluye Apache 2.4, para el cual hay que hacer algunos cambios en el Virtual Host. Los principales cambios son el nombre del archivo que tiene que ser guardado con la extensión .conf y algunas directivas de Apache que han cambiado.

Las directivas
 Order allow,deny
 Allow from all
Se sustituyen por:
 Require all granted
A continuación se muestra un ejemplo:
<VirtualHost 127.0.0.2:80>
        ServerName geo.localhost
        ServerAdmin webmaster@localhost
 
        DocumentRoot /home/metzi/geomoose/htdocs/
 
        DirectoryIndex geomoose.html
 
        <Directory /home/metzi/geomoose/htdocs/>
                AllowOverride All
                Require all granted
        </Directory>
 
        <Directory /home/metzi/geomoose/>
                Options ExecCGI FollowSymLinks
                Require all granted
        </Directory>
 
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
 
        <Directory "/usr/lib/cgi-bin">
                Options ExecCGI MultiViews
                Require all granted
        </Directory>
        ErrorLog ${APACHE_LOG_DIR}/geo.localhost-error.log
        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/geo.localhost-access.log combined
 
</VirtualHost>

Además es necesario habilitar el módulo cgi para que la aplicación funcione. Con el comando apache2ctl -M se puede consultar los módulos de apache habilitados, ni no está habilitarlo así:

a2enmod cgi

A continuación seguir los pasos descritos en Virtual Host

Configuración de la aplicación

Archivo settings.ini

Modificar el archivo /<ruta>/conf/settings.ini y colocar los siguientes valores en la etiqueta paths:

[paths]
; Esta es la ruta donde está la carpeta maps
root=/<ruta>/maps/ 
; Ruta de la carpeta temporal
temp=/tmp/out/ 
;URL del servidor de mapas
mapserver_url=http://nombreservidor/cgi-bin/mapserv 
; nombre del servidor en el URL
server_name=nombreservidor

A continuación se tiene que guardar el archivo con el nombre local_settings.ini

Carpeta temporal

Esta carpeta es necesaria para que funcione la opción para imprimir mapas en html, pdf o imagen.

Crear carpeta temporal como usuario root y asignar de propietario y grupo a apache:
mkdir /tmp/out
chown www-data:www-data /tmp/out

Licencia de la aplicación

La licencia de Geomoose está basada en la licencia MIT.

Para mayor información sobre el texto de la licencia Geomoose, se puede consultar: http://www.geomoose.org/info/license.html

Finalmente se puede consultar la aplicación mediante la dirección http://nombreservidor/

Verificar la instalación de GeoMOOSE en el navegador con:

http://nombredelhost.com


La vista tendría que ser como lo muestra la figura siguiente:

Geomoose debian.png

Personalización de la aplicación

Para personalizar la aplicación Geomoose con otra apariencia, datos propios, logos propios y otro lenguaje es necesario editar algunos archivos.

Uso de datos propios

El Mapbook es un archivo de tipo xml donde se administran fácilmente las capas geográficas, los servicios y herramientas de la aplicación. Este archivo está ubicado en: /<ruta>/conf/mapbook.xml

Si se desea agregar una nueva capa es necesario modificar el archivo mapbook.xml y agregar el archivo map, correspondiente al nuevo dato geográfico que se desea mostrar, en la carpeta /maps/demo/parcels/
En el mapbook se tienen que hacer los siguientes cambios:

1) Agregar una nueva etiqueta map-source con los datos de la nueva capa
Por ejemplo:
<map-source name="hospitales" type="mapserver" projection="EPSG:4326">
	<file>./demo/parcels/hospitales.map</file>
		<param name="format" value="image/png"/>		
		<layer name="hospitales" status="on"/>
</map-source>
2) Agregar a la etiqueta catalog, la llamada a la nueva etiqueta map-source indicando su respectivo valor de name del map-source y el nombre de la capa.
Por ejemplo:
<layer title="Hospitales Nacionales" src="hospitales/hospitales" popups="false" show-legend="true" minscale="0" metadata="false" refresh="true" />
  • Si se desea identificar los atributos de algún objeto espacial, se debe de especificar el type de la etiqueta map-source con el valor de "mapserver"
  • El orden en que se coloca el código de cada capa es el orden en que se superponen en el mapa

Proyección diferente

Si se desea agregar una nueva capa con una proyección diferente a la predeterminada que es la de Google Mercator, se deberá de tomar en cuenta dos cosas:

  • En el archivo map de la capa deberá de especificarse dentro del objeto LAYER, el tag PROJECTION indicando la proyección de la nueva capa. Así mismo, en el nivel superior del objeto MAP, deberá de especificarse el tag PROJECTION indicando la proyección para desplegar el mapa que en el caso de Geomoose es Google Mercator: 3857
  • En el Mapbook tiene que especificarse en el tag map-source correspondiente a la nueva capa, el parámetro projection con la proyección de la nueva capa.

Capa WMS

Si se desea agregar una capa WMS a la aplicación, únicamente se especifica el type con wms y se indica la dirección URL correspondiente. A continuación se indica un ejemplo con la capa "relieve" del Centro Nacional de Registros (CNR):

<map-source name="relieve" type="wms" projection="EPSG:3857">
		<url>http://cloud.cnr.gob.sv/ArcGIS/services/SVWGS84/RelieveOficial/mapserver/WMSServer</url>
		<layer name="0" />
		<param name="FORMAT" value="png"/>
</map-source>

Cambio de logos

Para cambiar los logos es necesario ir a la carpeta de la plantilla seleccionada (skin) y sustituir la imagen logo.png que está en la carpeta /images/ de la plantilla, por la nueva imagen.

Cambio de lenguaje

De forma predeterminda, el lenguaje de la aplicación es inglés.

Barra de herramientas del mapa

En el caso del lenguaje de la barra de herramientas del mapa, se cambia el lenguaje que se muestra al seleccionar cada botón en el mapbook.xml

En el siguiente ejemplo se cambió en title el valor de Previous Extent por Escala anterior:
<tool name="previous" title="Escala Anterior" type="internal" action="previous" selectable="false"/>

Herramienta de medición de distancias

Para cambiar el lenguaje en esta herramienta se tiene que editar el archivo /htdocs/extensions/MeasureWithBearing.js

El código que se tiene que modificar es el siguiente:

units: {
		length: [
			{'label' : 'Feet', 'inches_per' : 12, 'unit' : 'ft'},
			{'label' : 'Yards', 'inches_per' : 36, 'unit' : 'yd'},
			{'label' : 'Miles', 'inches_per' : 63360, 'unit' : 'mi'},
			{'label' : 'Inches', 'inches_per' : 1 ,'unit' : 'in'},
			{'label' : 'Meters', 'inches_per' : 39.37, 'unit' : 'm'}, 
			{'label' : 'Kilometers', 'inches_per' : 39370.079, 'unit' : 'km'}
		]
	},
 
	titles: {
		'length' : 'Measure Length',
		'area' : 'Measure Area',
		'total' : 'Total:',
		'segment' : 'Segment:',
		'bearing' : 'Bearing:',
		'units' : 'Units:',
		'clear' : 'Clear Log'
	},

En el código anterior se tiene que cambiar los label al lenguaje deseado y también los títulos.

Herramienta de impresión y búsqueda

Se tiene que modificar el código siguiente en el mapbook.xml:
		<service name="print" title="Print Map" keep-others="true">
		<step type="input">
			<url>php/print.php</url>
			<input type="print_info" name="layers"/>
			<input type="extent" name="extent"/>
 
			<input type="user" name="title" title="Titulo del mapa">Mapa</input>
			<input type="hidden" name="date" title="Map Date">true</input>
 
			<input type="select" name="template" title="Plantilla de impresión: ">
				<option value="letter_landscape">Carta - Horizontal</option>
				<option value="letter_portrait">Carta - Vertical</option>
				<option value="poster_landscape">11" x 17" - Horizontal</option>
				<option value="poster_portrait">11" x 17" - Vertical</option>
			</input>
 
			<input type="select" name="quality" title="Calidad imagen: ">
				<option value="2">Alta</option>
				<option value="3">Optima</option>
				<option value="1">Estandar</option>
			</input>
 
			<input type="select" name="scale" title="Escala impresión: ">
				<option value="map">Escala actual del mapa</option>
				<option value="1000">1:1000</option>
				<option value="5000">1:5000</option>
				<option value="10000">1:10000</option>
			</input>
		</step>
	</service>
En el caso de la búsqueda los cambios son similares. En este caso además se tienen que modificar los siguientes archivos: file:/htdocs/php/itemquery/header.html y /htdocs/php/itemquery/miss.html

Cambio de unidades de medida

De forma predeterminda, el sistema de unidades de la aplicación es el anglosajón (pies, pulgadas), para cambiar las unidades predeterminadas es necesario modificar el código del mapbook y agregar las siguientes líneas en la etiqueta <configuration>:

<param name="measure_tool.line_units">km</param>
<param name="measure_tool.area_units">km</param>

En el ejemplo anterior se han seleccionado como unidades predeterminadas para longitud y área: el kilómetro y kilómetros cuadrados respectivamente.

Uso de símbolos personalizados

Para usar símbolos específicos para una capa, se tiene que copiar la imagen en formato PNG a la carpeta /maps/symbols/. Además se tiene que editar el archivo symbols.sym que está en la misma ubicación y agregar los detalles del símbolo a utilizar. Por ejemplo:
SYMBOL
NAME 'hospitales'
TYPE PIXMAP
IMAGE 'hospital-red.png'
END

Consultar más en Iconos leyenda en Mapserver

Migración a nueva versión de Geomoose

Para migrar a una versión nueva de Geomoose es necesario hacer los siguientes pasos:

  • Descargar la nueva versión y descomprimirla
  • Renombrar el settings.ini a local_settings.ini e indicar los valores dentro de [paths]: root, mapserver_url y temp. Además agregar otras modificaciones que se hayan hecho al local_settings.ini en la versión anterior.
  • Sustituir el mapbook de la versión anterior
  • Agregar páginas html, php, carpeta con librerías javascript que se han utilizado en la personalización anterior a la carpeta htdocs
  • Incluir imágenes de la versión anterior a la carpeta htdocs/images de la nueva versión
  • Hacer cambios respectivos en los archivos CSS modificados
  • Copiar los iconos en la carpeta /maps/symbols/ y actualizar el archivo symbol.sym
Nota: La versiones 2.7.1 y 2.8 incluyen archivos gitignore que tienen que ser eliminados si se va a poner un proyecto basado en Geomoose en producción

Consideraciones para Geomoose con Mapserver 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:

Más información en Migración de Mapserver 6.0 a 6.4.1
Además, para que funcione la opción de búsqueda, se tiene que indicar un EXTENT adecuado dentro del objeto layer del archivo MAP, de lo contrario se devolverán 0 resultados.

A continuación se muestra la interfaz de la aplicación web GEOMINSAL, que es una interfaz de Geomoose personalizada:

Geominsal geomoose.png

Errores comunes

La pantalla rosada

Un error muy común con Geomoose es la "pantalla rosada" que se muestra en lugar de la capa que se desea visualizar. Este error se debe a algún problema con el servidor de mapas UMN Mapserver


Pantallarosada.png

La causa de este error puede ser por las siguientes razones:

  • Revisar los permisos en la ruta donde están los mapfile
  • En Debian Jessie, debido a que viene la versión de Apache más actualizada hay que habilitar el módulo de apache cgi. Como root ejecutar a2enmod cgi
  • Revisar que el archivo settings.ini se haya guardado como local_settings.ini para que lo reconozca la aplicación.
  • Revisar la configuración de la ruta de los map file en el archivo local_settings.ini
  • Debido a que Geomoose utiliza las capas de Google que están en la proyección Google Mercator 3857, en el archivo map de la capa deberá de especificarse dentro del objeto LAYER, el tag PROJECTION indicando la proyección de la nueva capa. Así mismo, en el nivel superior del objeto MAP, deberá de especificarse el tag PROJECTION indicando la proyección para desplegar el mapa que en el caso de Geomoose es Google Mercator: 3857
  • Error de sintaxis en el mapfile
  • Si está mostrando datos de alguna base de datos espacial puede ser por error en la sintaxis del QUERY en SQL.
  • Si el mapbook de Geomoose hace referencia a archivos map inexistentes se produce error.


Una forma de rastrear el error es colocar el siguiente enlace en el navegador, sustituyendo los valores que están entre llaves:

http://<servidor>/cgi-bin/mapserv?MAP=<ruta absoluta de los map file>/<archivomap>.map&SERVICE=wms&VERSION=1.1.1&LAYERS=<capa>&REQUEST=GetMap&SRS=EPSG:4326&BBOX=-90.1428464973854,%2013.1374060820636,%20-87.6843828617659,%2014.4615244257327&FORMAT=image/png&WIDTH=800&HEIGHT=600


El enlace anterior aplica para capas de El Salvador en proyección Wgs84 y devolverá un archivo con nombre mapserv el cuál orienta sobre el tipo de error.
En el siguiente enlace Errores Mapserver se describe cada uno de los errores de Mapserver.

Herramientas personales
Espacios de nombres

Variantes
Acciones
Navegación
Herramientas