Cuestión de altura
Para poder realizar las simulaciones, y más en el caso de una inundación, es vital conocer los detalles del terreno, y sobre todo su altitud. Tras mucho buscar por fin dimos con una manera de obtener los datos de altura de un terreno, y es a través de un servicio web proporcionado por la USGS (U.S. Geological Survey). Sólo tienen datos de los Estados Unidos, pero dado que nos estamos centrando en las inundaciones de Nueva Orleans tras el huracán Katrina es más que adecuado.
Ahora sólo queda implementar un cliente del servicio web en Java, de manera que el simulador pueda descargar las alturas necesarias. A continuación un mini-tutorial sobre cómo implementar un cliente de un servicio web en Java.
Lo primero es buscar el WSDL (Web Services Description Language) del servicio web. Por ejemplo la url podría ser:
http://web.org/EjemploService.php?WSDL
Lo siguiente es utilizar una herramienta que trae Java para generar el código necesario para acceder al servicio. Este código generado es el que se encargará de manejar toda la comunicación SOAP, por lo que implementar un cliente de un servicio web es realmente sencillo. Dicha herramienta es wsimport. Podemos usar la opción -keep si queremos que no borre el código generado (por defecto sólo deja las versiones compiladas). En nuestro caso el comando a ejecutar quedaría tal que:
wsimport -keep http://web.org/EjemploService.php?WSDL
La herramienta generará varios archivos. Un par de clases EjemploService y EjemploServiceSoap para el servicio web, y luego dos ficheros más por cada método en el servicio web: Metodo y MetodoResponse. Además por cada método habrá una clase más de interés, MetodoResult; dicha clase es una clase interna de MetodoResponse.
Un cliente sería de la siguiente forma:
EjemploService aux = new EjemploService();
EjemploServiceSoap service = aux.getEjemploServiceSoap();
service es la variable que nos interesa. A través de ella podremos llamar a los métodos del servicio web, con un código similar al que sigue:
MetodoResult res = service.metodo(param1, param2, param3);
List data = res.getContent();
En la lista data encontramos la respuesta del servicio web. Como podéis ver implementar un cliente son cuatro líneas mal contadas. Si queréis ver un ejemplo real podéis consultar el código del cliente del Elevation Service que utilizamos, lo encontraréis en el repositorio.
Tags: Java, mapas, servicios web












February 3rd, 2010 at 10:56
Hola,
Primero tan solo comentar que el proyecto me parece muy muy muy interesante y por otro, que también podrias adaptarlo a España usando la información del MDT que proporciona el IDEE sobre altitudes mediante protocolo WCS. Te dejo los enlaces por si lo ves interesnate:
http://www.idee.es/show.do?to=pideep_desarrollador_wcs.ES
February 3rd, 2010 at 11:22
Muchas gracias. Integraremos también ese servicio para poder hacer simulaciones en España.