[Gvsig_desarrolladores] RV: obtener informacion WMS

Oscar Garcia oscarg en dielmo.com
Lun Oct 13 15:09:00 CEST 2008



Siguiendo más o menos los pasos que me aconsejaron, sigo teniendo el
problema de que no se como conseguir el link que deseo, por ejemplo con el
siguiente código:

int x=717660,y=4373000;
Point p = new Point(x, y);			
XMLItem[] itemsWMS = capaWMS.getInfo(p, 3, null);
StringXMLItem itemWMS_aux = (StringXMLItem) itemsWMS[0];
itemWMS_aux.toString();



Obtengo este String:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html 
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="sp" lang="sp">
<head><title>Informaci&oacute;n parcelas</title></head><body><p>Referencia
catastral de la parcela:</p></body></html>


Lo que yo esperaba es esto mismo pero después de " Referencia catastral de
la parcela:" además esperaba una URL.


Con el getFeatureInfo() no he llegado a conseguir nada parecido. No se si lo
uso correctamente. El getInfo() se parece más a lo que yo quiero. El
problema es que le falta el link que comento, que ademas es lo que sale
cuando sobre una capa clickeas en información y es lo que sale la referencia
catastral y el link después.

Esto es lo que consigo con el getFeatureInfo():

<?xml version="1.0" encoding="ISO-8859-1"?><INFO>Info format not
supported</INFO>

Y este es el código que uso:

int x=474882,y=4332769;
String info = wmsDriver.getFeatureInfo(_wmsStatus, x, y, 10000, null);


Gracias.
Un Saludo.

Oscar Garcia


-----Mensaje original-----
De: gvsig_desarrolladores-bounces en runas.cap.gva.es
[mailto:gvsig_desarrolladores-bounces en runas.cap.gva.es] En nombre de Jorge
Piera
Enviado el: miércoles, 08 de octubre de 2008 22:45
Para: Lista de Desarrolladores de gvSIG
Asunto: Re: [Gvsig_desarrolladores] RV: obtener informacion WMS

Hola Óscar.

WMSStatus no es mas que un objeto que contiene información para relizar 
una petición WMS a un servidor concreto que se ha seleccionado mediante 
el interfaz de usuario. Así, un WMSStatus contendrá el conjunto de capas 
seleccionadas, el formato de la imagen... La capa (FlyrWMS) contiene el 
WMSStatus y el WMSClient, que representa una conexión con un servidor 
concreto WMS.

Si lo que quieres es tener una capa WMS para dibujar en gvSIG, deberías 
crear un objeto FlryWMS. Si por el contrario lo único que pretendes es 
recuperar información del GetFeatureInfo con el WMSClient y el WMSStatus 
bastaría. Te adjunto un test que he hecho que crea una conexión con el 
WMS de catastro mediante un objeto WMSClient y ejecuta la operación 
GetFeatureInfo para una capa determinada mediante el WMSStatus. El 
resultado de la consulta es un string que contiene el fichero XML con la 
respuesta del servidor.

Puedes usar cualquier parser de XML para parsear la respuesta o puedes 
utilizar el StringXMLItem que se ha utilizado en gvSIG (Mira el método 
getInfo() de la FlyrWMS).

Un saludo.

Jorge.

public class MyWmsTest extends TestCase {
private WMSStatus status = null;
private WMSClient client = null;
//Parametros de WMS
private String host = 
"http://ovc.catastro.meh.es/Cartografia/WMS/ServidorWMS.aspx";
private String layer = "Catastro";
private String srs = "EPSG:23030";
//Min X = -1050000.0
//Min Y = 2972455.0898203594
//Max X = 1150000.0
//Max Y = 5027544.910179641
private Rectangle2D bbox = new Rectangle2D.Double(-1050000.0,
2972455.0898203594,
1150000.0 - (-1050000.0),
5027544.910179641 - 2972455.0898203594);
private int width = 334;
private int height = 312;
private String format = "image/gif";
private String style = "Default";

protected void setUp() throws Exception {
initWMSClient();
initWMSStatus();
}

public void test1() throws ConnectException, IOException, WMSException{
client.connect(null);
String request = client.getFeatureInfo(status, 215, 90, 10000, null);
}

private WMSStatus initWMSStatus(){
if (status == null){
status = new WMSStatus();
//Fijamos la capa
Vector layers = new Vector();
layers.add(layer);
status.setLayerNames(layers);
//Fijamos el resto de parámetros
status.setSrs(srs);
status.setExtent(bbox);
status.setWidth(width);
status.setHeight(height);
status.setFormat(format);
status.setTransparency(true);
//Fijamos los estilos
Vector styles = new Vector();
styles.add(style);
status.setStyles(styles);
}
return status;
}

private WMSClient initWMSClient() throws ConnectException, IOException{
if (client == null){
client = new WMSClient(host);
}
return client;
}
}

Oscar Garcia escribió:
> Gracias por contestar Jorge.
>
> Lo que ando buscando en realidad es por ejemplo en catastro obtener el
link
> que sale como consulta de la información. 
>
>
> Puedo llamar a esa funcion desde el driver pero si es con el
> getFeatureInfo() que información es la que se le mete para hacer la
> consulta? (Pide un WMSStatus y cosas que no se que son). Es que no veo
> documentación al respecto de esa función, gracias.
>
>
>
> -----Mensaje original-----
> De: gvsig_desarrolladores-bounces en runas.cap.gva.es
> [mailto:gvsig_desarrolladores-bounces en runas.cap.gva.es] En nombre de Jorge
> Piera
> Enviado el: miércoles, 08 de octubre de 2008 10:57
> Para: Lista de Desarrolladores de gvSIG
> Asunto: Re: [Gvsig_desarrolladores] RV: obtener informacion WMS
>
> Hola Oscar.
>
> El método que comentas lanza la petición GetFeatureInfo al servidor para 
> obtener la información alfanumérica que es lo que estás buscando. Si 
> detallas el problema exacto que estás teniendo te podremos ayudar un 
> poco más.
>
> Un saludo.
>
> Jorge.
>   
>> ------------------------------------------------------------------------
>>
>> *De:* Oscar Garcia [mailto:oscarg en dielmo.com]
>> *Enviado el:* martes, 07 de octubre de 2008 18:39
>> *Para:* 'gvsig_desarrolladores-bounces en runas.cap.gva.es'
>> *Asunto:* obtener informacion WMS
>>
>> Hola a todos.
>>
>> Tengo un problemita con el WMS. La cosa es que yo por código cargo una 
>> capa WMS y todo funciona correctamente, el problema viene cuando 
>> intento capturar también por código lo mismo que en gvSIG se obtendría 
>> con el botón de “información” sobre una capa WMS.
>>
>> Alguien sabe como conseguir esa información a partir del FLyrWMS ¿?. 
>> Yo creo que es con este método: capaWMS.getInfo(puntoDelMundo, 
>> tolerancia, null);
>>
>> Un saludo
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> gvSIG_desarrolladores mailing list
>> gvSIG_desarrolladores en runas.cap.gva.es
>> http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
>>   
>> ------------------------------------------------------------------------
>>
>>
>> No virus found in this incoming message.
>> Checked by AVG - http://www.avg.com 
>> Version: 8.0.173 / Virus Database: 270.7.6/1713 - Release Date:
07/10/2008
>>     
> 18:40
>   
>>   
>>     
>
>
>   
> ------------------------------------------------------------------------
>
>
> No virus found in this incoming message.
> Checked by AVG - http://www.avg.com 
> Version: 8.0.173 / Virus Database: 270.7.6/1714 - Release Date: 08/10/2008
7:01
>
>   


-- 
Jorge Piera Llodrá
Especialista en Servicios OGC
Equipo de desarrollo gvSIG
IVER TI S.A.
C/ Lérida, 20
46009-Valencia (Spain)
Tlf.+34902252540
www.iver.es
www.gvsig.com 



Este mensaje y sus archivos son confidenciales. No está permitida su
reproducción o distribución sin la autorización expresa de "IVER Tecnologías
de la Información". Si usted no es el destinatario previsto, queda
desautorizado cualquier uso, acceso o copia de este mensaje. Si ha recibido
este mensaje por error, por favor bórrelo e infórmenos por esta misma vía.






Más información sobre la lista de distribución gvSIG_desarrolladores