[Gvsig_desarrolladores] RV: obtener informacion WMS

Jorge Piera jorge.piera en iver.es
Mie Oct 8 22:45:09 CEST 2008


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