14.3.06

Geoserver y MapBuilder

Recientemente he estado probando Geoserver y me he llevado una muy grata sorpresa. Hace tiempo que ya hice pinitos con él, pero me pareció demasiado complicado de usar y con poca funcionalidad. Además carecía de un visor de mapas por defecto, y ver publicado uno requería construir uno propio.
La nueva versión de Geoserver ha mejorado mucho. Hay un sencillo instalador para windows, además tienes la posibilidad de desplegar un war en Tomcat u otro contenedor J2EE, pero lo mejor es que tiene integrado un visor web MapBuilder que facilita enormemente ver los mapas publicados.
En menos de un día puedes conectarte a cualquier origen de datos (Oracle, PostGIS, ArcSDE o Shapes) y verlos en Internet a través de WMS o WFS.
Muy bueno, a ver si logra ser el "Apache" de los servidores web GIS. Share/Save/Bookmark

11.1.06

Herramienta de Zoom

Una de las cosas aparentemente más simples como hacer un recuadro de zoom para las aplicaciones de mapas, se convierte en algo realmente complicado si uno quiere una herramienta que funcione correctamente en todos los navegadores, o al menos en los más conocidos, Firefox e Internet Explorer.
Por la red se pueden encontrar algunos ejemplos como la Rubber-band Zoombox para MapServer o los aims*.js de ArcIMS. Pero ambas tienen algunos inconvenientes, la primera que solo hace el recuadro de izquierda a derecha y de arriba a abajo, y la segunda que no me gusta el método que usa para recortar capas y está muy basada en los js de ArcIMS.
Por ello, durante algún tiempo he intentado crear una propia que fuera fácilmente acoplabe a cualquier proyecto de mapas. Aunque aún podría quedar algún detalle por pulir, creo que he conseguido una versión lo suficientemente estable.

Funciona de una forma bastante sencilla solo se necesita una página HTML con un div que formará el recuadro y el script que le da la funcionalidad.
Bueno, me dejo de rollos, ahí va la chicha:
Necesitamos una página HTML que contenga este script y un div con un estilo similar a este: style="position:absolute;top:0px;left:0px;width:0px;height:0px;visibility:hidden;border-style:solid;border-width: 3px;z-index: 2;"

//variables globales
var x0;
var y0;
var x1;
var y1;

var dragAndDropEnabled = false;
var boxDrawn = false;

var Top = 0;
var left = 0;
var width;
var height;

var divRecuadro = null;

function initZoom(divZoom) {
divRecuadro = document.getElementById(divZoom);
document.onmousedown = boxStart;
}

/*
Comienza el dibujo del recuadro del zoom
e - objeto evento asociado
*/
function boxStart(e) {
if(!dragAndDropEnabled) {
x0 = DameCoordenada(e,"x");
y0 = DameCoordenada(e,"y");
dragAndDropEnabled = true;
boxDrawn = false;
}

divRecuadro.style.left = x0;
divRecuadro.style.top = y0;
divRecuadro.style.visibility = "visible";

document.onmousemove = boxMove;

return false;
}

//Se va dibujando el recuadro de zoom
function boxMove(e) {
if(dragAndDropEnabled) {
x1 = DameCoordenada(e,"x");
y1 = DameCoordenada(e,"y");

width = Math.abs(x1 - x0);
height = Math.abs(y1 - y0);

if(x1 <= x0) left = x1; else left = x0; if(y1 <= y0) Top = y1; else Top = y0; divRecuadro.style.left = left; divRecuadro.style.top = Top; divRecuadro.style.width = width; divRecuadro.style.height = height; boxDrawn=true; } document.onmouseup = boxEnd; return false; } function boxEnd(e) { divRecuadro.style.visibility = "hidden"; dragAndDropEnabled = false; if(boxDrawn) { var xMax = left + width; var yMax = Top; var xMin = left; var yMin = Top + height; alert(xMin+"\n"+yMax); } else { //alert("Ha soltado el botón del ratón sin dibujar un rectángulo"); return false; } } function DameCoordenada(e,coordenada) { var x; var y; //si no hay un evento if (!e || e == null) { var e = window.event; } x = e.clientX; y = e.clientY; // alert("X= "+e.pageX+"\t"+e.clientX+"\n"+"Y= "+e.pageY+"\t"+e.clientY); return eval(coordenada); }
Share/Save/Bookmark

1.12.05

ArcIMS, BeaWebLogic, Sun Solaris

DESPLIEGE Y CONFIGURACIÓN DE UNA APLICACIÓN ARCIMS EN BEA WEBLOGIC (BWL) SOBRE SUN SOLARIS 9.
· Configuración del directorio output de imágenes de ArcIMS
Una vez instalado el ArcIMS en el servidor y configurado para su uso con BWL, es necesario configurar el directorio output donde ArcIMS genera las imágenes. Para ello se ha de establecer un enlace simbólico entre el directorio, /home/<>/arcgis/output, y el directorio $BEA_HOME/user_projects/<>/applications/DefaultWebApp/output. Para ello es necesario borrar primero el directorio output del $BEA_HOME y crear el enlace simbólico:
cd $BEA_HOME/user_projects/.../DefaultWebApp
rm –Rf output
ln -s /home/<>/arcgis/output
Para comprobar que se ha hecho bien el enlace:
ls –l
al lado de output debería salir una flecha indicando el directorio enlazado. De esta forma todas las imágenes generadas en él se publicarán directamente en BWL, a través del la URL, http://localhost:7001/output.
Para publicar el directorio website hay que seguir el mismo procedimiento.
· Despliegue de la aplicación war o ear. Para desplegar una aplicación war o ear, basta con colocarla en el directorio, $BEA_HOME/user_projects/<>/applications, y BWL se encargará de descomprimir y desplegar de forma automática. En casa de que la aplicación no se despliegue de forma correcta, es importante ver la versión del archivo web.xml (2.3 o 2.4).
· Configuración del script de arranque de BWL. Para evitar que BWL solicite usuario y password cada vez que se arranca el servidor es conveniente editar el archivo $BEA_HOME/user_projects/<>/startWebLogic.sh, y configurar las las variables, WLS_USER, WLS_PW.
· Configuración del servidor para arrancar BWL y ArcIMS al inicio. Se puede configurar para que arranquen al inicio de la sesión de usuario o como servicios del sistema desde la cuenta de administrador.
o Inicio de la sesión. Ir a “Java Lanzador/Preferencias/Preferencias del escritorio/Sesiones”. En la solapa programas al inicio pulsar agregar, y añadir las siguientes entradas: Share/Save/Bookmark

7.11.05

Frappr! Beta

Los de Google Maps, ya van sacando cositas. Lo más nuevo y chulo es Frappr! Beta. Se trata de poner un simbolito con tu foto (si quieres) del lugar donde te encuentras, así puedes tener a tus amigos colocados geográficamente por el mundo.


A algunos les parecerá una chorrada, pero creo que es una forma muy amena de "democratizar" y quitarle un poco de hierro al tema de los SIG, además de abrir este mundo a otras aplicaciones hasta ahora impensables.


Yo ya he añadido mi pin ¿y tu?



PD: Como no, AJAX in action!!! Share/Save/Bookmark

4.11.05

AJAX y Servidores de Mapas

Para mi el descubrimiento de AJAX ha sido una auténtica revelación. Pero, ¿en qué consiste AJAX?, simplificando se puede decir que AJAX es una forma de mostrar contenido dinámico en una página sin necesidad de recargar la página al completo. Por ejemplo, cuando se usan páginas JSP o ASP, estas páginas incluyen código que se ejecuta en el servidor, y como respuesta crea un código HTML que se envía al cliente y que muestra el resultado. El problema es que cada vez que se hace una petición nueva, se tiene que enviar todo al servidor, y da como resultado un refresco de la página.


Con AJAX se puede evitar esto, si solo se quiere actualizar una parte del contenido de la página, se puede llamar a un servelt, JSP o ASP y obtener solo la información o el contenido que interese, de ese modo no se recarga la página completamente. Las posibilidades son muchas.


Pero, ¿qué tiene que ver esto con los SIG?. Pues bien, el monstruo Google Maps, está usando esta misma tecnología para su producto (GMail o Google suggest son otros ejemplos).


Pero bajando a un ambito más terrenal (ya quisiéramos muchos la infraestructura detrás de Google Maps), ¿Cómo nos puede ayudar AJAX en nuestras aplicaciones de mapas? Por ejemplo, si usamos ArcIMS para publicar mapas por internet AJAX puede ser de gran ayuda. Ya no hace falta el maldito formulario oculto para enviar las peticiones y procesar las respuestas, o crear un JSP con el mapa que se tenga que recargar cada vez que se pida un nuevo mapa. Podemos utilizar AJAX para llamar a un servlet que nos devuelva la imágen que quermos mostrar, solo eso, nada más, ya que al fin y al cabo es lo único que hace falta. Otro ejemplo, ¿y si queremos mostrar la información asociada a un elemento gráfico?, ya no necesitamos un frame aparte, o una ventan emergente, basta con que creemos nuestro componente de servidor que nos devuelva un XML con los datos a mostrar. Luego, en cliente, podremos parsear este XML y mostrarlo en el DIV que queremos. Se podría crear, por ejemplo, una herramienta de Tooltip, que en tiempo real, y sobre una imagen, nos muestra la información que queramos. Las posibilidades son muchas.


Definitivamente, creo que AJAX es la tecnología que se necesitaba, para hacer que las aplicaciones web de cartografía, se hagan lo suficientemente atractivas como para competir con sus hermanos mayores de escritorio.


Para más información Google, ;-D

Share/Save/Bookmark