guía de elaboración del trabajo para ad4igralcarria/doc/ad4ig/tema6_guia_de...archivo de claves...
TRANSCRIPT
Guía de elaboración del trabajo
para AD4IG
Versión v1 (14-05-2014)
Asignatura: Aplicaciones Distribuidas para la Información
Geográfica
Máster de Ingeniería Geodésica y Cartografía,
E.T.S.I. en Topografía, Geodesia y Cartografía
UPM.
Autores:
Ramón Alcarria
Miguel Ángel Manso
1. Introducción
Esta guía tiene la finalidad de servir de apoyo al alumno para la creación de un
proyecto que combine el intercambio de información geográfica entre aplicaciones
distribuidas alojadas en sistemas Cloud.
La propuesta de esta guía se resume a continuación:
Se propone realizar un teselado de un mapa y posteriormente almacenar esas teselas en
una base de datos de tipo Amazon S3. Además se pretende crear un cliente Web
basado en OpenLayers que acceda, por un lado al conjunto de teselas creado, y por
otro al WMS del GeoServer alojado en EC2, para combinar la información de esas dos
capas.
Existen dos tipos de trabajo, el trabajo básico (que describe la realización de la anterior
propuesta) y el trabajo mejorado (que consistiría en el trabajo básico más la realización
de una mejora.)
Esta guía no pretende ser un tutorial paso a paso del trabajo que hay que efectuar, sino
que contiene una descripción del proceso a efectuar y una explicación detallada para
los pasos más complicados.
A continuación se enumeran las fases que se deben seguir para elaborar el trabajo
básico:
- Selección y publicación de Capas
- Generación de teselas
- Desarrollo de cliente de mapas
- Alojamiento de las teselas en Amazon S3
- Alojamiento del Cliente web en Amazon S3
- Mejoras a la práctica
Requisitos:
Disponer de una instancia en Amazon EC2 con un GeoServer instalado.
Poder acceder a esa instancia mediante escritorio Remoto (disponer por tanto del
archivo de claves *.pem
2. Selección y publicación de Capas
Se debe importar al menos dos capas de la misma región, pueden ser en formato Ráster
o Vectorial, pero se aconseja que al menos una tenga transparencia para que, una vez
superpuestas las capas, se visualicen correctamente.
Una vez se accede a GeoServer (http://localhost:8080/geoserver/web), e identificado
como administrador, nos disponemos a crear un workspace, llamándole topografia,
configurándolo como workspace por defecto (default workspace).
Una vez creado el workspace se debe crear un Store.
Nos ofrecen la posibilidad de seleccionar qué tipo de almacén de datos queremos
(Figura 1):
Figura 1 – Seleccionando un nuevo almacén de datos en GeoServer
Elegimos el tipo de almacén dependiendo de las capas que queremos importar.
Recomendamos tipo de datos shapefile (*.shp) y GeoTIFF.
Una vez creado el store tenemos la posibilidad de crear una capa y publicarla. Para ello
hay que completar algunos campos obligatorios de la configuración de la capa, como el
SRS y el Bounding Box. Como posteriormente queremos generar teselas de la capa
tenemos que comprobar en la pestaña de “Tile Caching” (Figura 2) que el cacheado
está activado y que se generarán los formatos de imagen que queremos.
Seleccionaremos un formato de imagen que permita transparencias, como el png.
Figura 2 – Activando el cacheado para nuestra capa
Procedemos de igual forma para la segunda capa elegida (Creamos una Store y luego
el Layer).
Comprobamos en la sección Layer Preview que las capas se representan
convenientemente en OpenLayers. Layer preview nos muestra las capas sin cachear.
3. Generación de teselas
Accedemos a la herramienta GeoWebCache, que viene incluido en nuestra instalación
de GeoServer: La dirección para acceder a GeoWebCache (Figura 3) es:
http://localhost:8080/geoserver/gwc
GeoWebCache tiene un enlace para listar todas las capas en las que se ha activado el
“Tile Caching” realizado en la sección anterior.
Figura 3 – Página principal de GeoWebCache
Cuando encontremos nuestra capa podemos ir a Seed this layer para realizar el teselado
(Figura 4).
Figura 4 – Teselado de nuestra capa
En el menú siguiente tenemos que especificar las coordenadas que vamos a utilizar, el
formato de salida (se recuerda que debe ser un formato que permita transparencia) y
los niveles de zoom.
Recomendamos no generar más de dos o tres niveles de zoom para no trabajar con un
gran número de teselas.
Una vez realizado el teselado veremos cómo los archivos de las teselas se han generado
correctamente en C:\GeoServer_2.5\data_dir\gwc o donde se tenga instalado el
GeoServer
En esta carpeta aparecerá una nueva carpeta con el nombre del workspace y el nombre
de la capa, de forma:
<nombreWorkspace>_<nombreCapa>
4. Desarrollo de cliente de mapas
Desarrollamos un cliente de mapas basado en OpenLayers. Este cliente de mapas
deberá acceder al menos a dos capas, por lo que deberemos construir un LayerSwitcher
map.addControl(new OpenLayers.Control.LayerSwitcher({….
Podemos fijarnos en el cliente de OpenLayers que ofrece el GeoServer cuando
queremos previsualizar una capa en la sección Layer Preview (Figura 5).
Figura 5 – Layer Preview en GeoServer
Preparamos el cliente para consumir dos capas: El wms del GeoServer y las teselas que
hemos generado.
Utilizamos la librería GeoWebCache para consumir las teselas. Esta librería podemos
encontrarla en la siguiente dirección:
https://www.dropbox.com/s/nbywai83yb9i06m/GeoWebCache.js
Para crear una capa que consuma las teselas deberemos utilizar el siguiente código:
demolayer1 = new OpenLayers.Layer.GeoWebCache({ url: [
"https://<bucketName>/<folder>/<workspace>_<layer>" ], buffer: 1, type: "jpeg" }); map.addLayer(demolayer1);
Siendo https://<bucketName>/<folder>/<workspace>_<layer> la dirección en S3 donde
almacenaremos las teselas.
Probamos que el cliente web funciona al menos como la capa WMS de Geoserver (la
capa de GeoWebCache no funcionará todavía porque las teselas no están subidas a S3,
lo cual realizaremos en la siguiente sección).
5. Alojamiento de las teselas en Amazon S3
Trabajo con Amazon S3
Utilizaremos el servicio de Amazon S3 (Amazon Simple Storage Service), que es un
servicio de almacenamiento de archivos ofrecido por Amazon AWS (Amazon Web
Services).
Aspectos a tener en cuenta antes de comenzar a utilizar Amazon S3:
- Necesitamos tener una cuenta de Amazon AWS, como la que hemos creado en
clase.
- Si no queremos pagar por el alojamiento de contenido, debemos estar en el
periodo de Free Tier, que Amazon ofrece gratuitamente durante el primer año
que nos creamos la cuenta.
- El servicio de Free Tier para Amazon S3 incluye de forma gratuita 5GB de
almacenamiento, 20,000 peticiones de tipo GET y 2,000 peticiones de tipo PUT.
- Una vez consumido el Free Tier se empieza a cobrar el uso de Amazon S3, según
los precios de la Web http://aws.amazon.com/s3/pricing/. Siguiendo las
recomendaciones de este tutorial no llegará a pasar esto.
Alojamiento de teselas
Utilizamos el cliente S3 Browser para almacenar las teselas en la base de datos S3. Para
que el alojamiento de las teselas en S3 sea lo más rápido posible instalaremos el S3
Browser en nuestra instancia EC2.
En S3 Browser tenemos que configurar una nueva cuenta (Figuras 6 y 7)
Figura 6 – Gestor de cuentas en S3 Browser
Figura 7 – Configurando una nueva cuenta en S3 Browser
Para rellenar los campos Access Key ID y Secret Access Key tenemos que navegar a la
siguiente URL:
https://console.aws.amazon.com/iam/home?#security_credential y en Access Keys
crear una nueva Clave de Acceso.
El motivo de crear una nueva clave es por seguridad, para no tener que introducir la
clave de Amazon en programas desarrollados por terceros.
Crearemos un Bucket S3 en la región de Europa (Irlanda), Figura 8.
Figura 8 – Creación de nuevo Bucket en S3 Browser
Utilizaremos el programa para transferir la carpeta con nuestras teselas a nuestro
bucket S3. Comprobaremos que esa carpeta es pública para que sea accesible desde el
exterior (Figura 9).
Figura 9 – Explorando nuestro Bucket en S3 Browser. Comprobando permisos.
Ahora ya podemos modificar el código JavaScript de nuestro cliente para que acceda
correctamente a la dirección donde se encuentran las teselas en nuestro bucket S3.
Comprobamos que nuestro cliente funciona correctamente con ambas capas.
6. Alojamiento del Cliente web en Amazon S3
Además de las teselas, almacenaremos nuestro Cliente Web en Amazon S3. Para ello
crearemos otra carpeta en nuestro Bucket para alojar nuestra página. Comprobaremos
que esa carpeta es pública para que sea accesible desde el exterior.
Se recomienda ver el documento de Alojamiento Web con Amazon S3.
Mejoras a la pra ctica
Mejora #1:
Podemos mejorar esta práctica utilizando GeoWebCache para acceder a nuestro bucket
de S3 directamente. Para ello necesitamos montar nuestro bucket como una unidad de
disco y así indicarle a GeoWebCache que almacene las teselas en esa unidad.
Existen distintos programas que puede ser utilizados para montar un bucket de S3
como un directorio local o una unidad de disco. A continuación se enumeran los más
conocidos:
- Cloudberry drive: http://www.cloudberrylab.com/blog/how-to-map-amazon-
s3-as-a-local-disk-with-cloudberry-drive/
- TntDrive: http://tntdrive.com/
- Otros, S3FS y S3Backer: http://www.turnkeylinux.org/blog/exploring-s3-based-
filesystems-s3fs-and-s3backer
Recomendamos la utilización de TntDrive, que, aunque es un programa de pago, tiene
una versión gratuita por 60 días, tiempo suficiente para la realización y la corrección de
la práctica.
Al añadir una nueva unidad (Figura 10) nos vuelven a pedir las credenciales de Access
Key ID y Secret Access Key, podemos utilizar las mismas que hemos generado para S3
browser.
Figura 10 – Añadiendo nueva unidad en TntDrive. Configurando credenciales de acceso.
En propiedades adicionales (Figura 11) podemos seleccionar la opción Use Reduced
Redundancy Storage (RRS) para rebajar el nivel de integridad de los archivos
almacenados. De esta forma los acceso a las base de datos S3 se reducen.
Figura 11 – Propiedades adicionales de la unidad creada en TntDrive.
Una vez creada la unidad de disco podremos verla en Computer.
Figura 12 – Nueva unidad creada en explorador de archivos
Para configurar GeoWebCache para que utilice esta nueva unidad para almacenar las
teselas tenemos que detener el GeoServer, añadir las siguientes líneas en web.xml
(podemos encontrarlo en C:\GeoServer 2.5\webapps\geoserver\WEB-INF)
<context-param> <param-name>GEOWEBCACHE_CACHE_DIR</param-name> <param-value>C:\temp</param-value> </context-param>
Tenemos que cambiar la dirección C:\temp por la dirección donde queremos que se
encuentren nuestras teselas en la nueva unidad de disco creada con TntDrive.
Después reiniciaremos el GeoServer.
Además tendremos que modificar el cliente Web basado en OpenLayers para añadir
una nueva capa que acceda al wms del GeoWebCache. Se debe comprobar como las
teselas se generan correctamente y se almacenan en S3.
Mejora #2:
Añadir una nueva capa a nuestro cliente OpenLayers que venga de otra herramienta
en Cloud, como Google Fusion Tables o CartoDB.
Mejora #3:
Para alumnos que dispongan de ArcGIS pueden tratar de instalar la versión de prueba
de Arc2Earth y seguir un tutorial de publicación de teselas con Arc2Earth en Amazon
S3.
Un tutorial completo se puede ver aquí
http://www.geospatialtraining.com/Arc2Earth/export_13.htm
Elaboracio n de Informe y entrega de trabajo
La entrega se realizará por Moodle y corresponderá a una memoria de la práctica
donde se describa cual es el objetivo de la práctica, qué se ha conseguido y qué
problemas se han encontrado.
En la memoria de la práctica se tiene que especificar la dirección del GeoServer y de los
buckets S3 para que el profesor pueda conectarse y comprobar el trabajo. Por tanto se
debe dejar iniciada la instancia EC2 durante los días en los que se produzca la
corrección de la práctica.
Otra posibilidad es seguir el tutorial de creación de cuentas en Amazon y crear una
cuenta para el profesor de forma que pueda ver los servicios en ejecución y el
contenido de las bases de datos. En este caso, en el trabajo se deben proporcionar las
credenciales de acceso a Amazon creadas para el profesor.