RE: [Gvsig_desarrolladores] Cómo acceder a la geometria de una seleccion?

Jorge Bellido Diez jbellido en ikt.es
Mie Feb 13 14:27:42 CET 2008


Muchas gracias Carlos, ya me funciona. 

-----Mensaje original-----
De: gvsig_desarrolladores-bounces en runas.cap.gva.es [mailto:gvsig_desarrolladores-bounces en runas.cap.gva.es] En nombre de Carlos Sánchez Periñán
Enviado el: miércoles, 13 de febrero de 2008 10:21
Para: Lista de Desarrolladores de gvSIG
Asunto: RE: [Gvsig_desarrolladores] Cómo acceder a la geometria de una seleccion?

Hola Jorge:

Siento no haber especificado la clase antes, existe en libFmap una interfaz llamada ReadableVectorial que la implementan la clase VectorialAdapter, ahí tienes ese método que es getShape(i); Desde el Layer vectorial puedes acceder a tu adapter. En este caso si lyrA es un FLyrVect será con lyrA.getSource(); para obtener el adapter y apartir de el el getShape();

Un saludo y espero que con esto ya soluciones tus dudas.

Carlos Sánchez Periñán
Equipo Desarrollo GIS
Prodevelop, S.L.
Tel : 963 510 612
csanchez en prodevelop.es
 
Abrir comillas Si los extraterrestes no van a venir aquí, nosotros iremos para allá.Cerrar comillas Paul Allen
 
-----Mensaje original-----
De: gvsig_desarrolladores-bounces en runas.cap.gva.es [mailto:gvsig_desarrolladores-bounces en runas.cap.gva.es] En nombre de Jorge Bellido Diez Enviado el: miércoles, 13 de febrero de 2008 9:11
Para: Lista de Desarrolladores de gvSIG
Asunto: RE: [Gvsig_desarrolladores] Cómo acceder a la geometria de una seleccion?

Muchas gracias Carlos, he intentado plasmarlo en el código pero tengo otra pregunta. 
¿De que clase es el objeto lyrA para que tenga el método getShape()? 
En principio yo parto de un: FLyrVect lyrA; pero no presenta ese método y he probado con varias mas y no lo saco.




-----Mensaje original-----
De: gvsig_desarrolladores-bounces en runas.cap.gva.es [mailto:gvsig_desarrolladores-bounces en runas.cap.gva.es] En nombre de Carlos Sánchez Periñán Enviado el: martes, 12 de febrero de 2008 18:47
Para: Lista de Desarrolladores de gvSIG
Asunto: RE: [Gvsig_desarrolladores] Cómo acceder a la geometria de una seleccion?

Hola Jorge:

No puedes acceder a la geometría porque el DataSource o fuente de datos es exclusivamente alfanumérica, no contiene datos espaciales, en gvSIG actualmente se trata por separado la información alfanumérica de la geométrica. 

La información geométrica de la selección se define en una clase "SelectionSupport" ya que se almacenan en la misma como una lista de Shape's accesibles a partir de un índice con el método...

	lyrA.getShape(i); //accedes a las geometrías de una capa.
 
Para acceder a las seleccionadas necesitas... 

BitSet sel = layerA.getSelectionSupport().getSelection();
for (int i = sel.nextSetBit(0); i >= 0; i = sel.nextSetBit(i+1)) {
		//Para ver que está dentro la geometría del BoundingBox 			//seleccionado.		
		Rectangle2D bb = lyrA.getShapeBounds(i);
		// si intersecta el Rectangle2D con el Rectangle2D reproyectado
		// la geometría en esa posición pertenece a las seleccionadas.
		ViewPort _vp;
		if (Utils.rectanglesItersect(bb, _vp.getAdjustedExtent())) {
			//Obtenemos la geometria	
			IGeometry ig = lyrA.getShape(i);
		}
}
Mas o menos esto adapatandolo a tu caso espero que te pueda servir.

Un saludo.

Carlos Sánchez Periñán
Equipo Desarrollo GIS
Prodevelop, S.L.
Tel : 963 510 612
csanchez en prodevelop.es
 
"Si los extraterrestes no van a venir aquí, nosotros iremos para allá."
Paul Allen
 
-----Mensaje original-----
De: gvsig_desarrolladores-bounces en runas.cap.gva.es [mailto:gvsig_desarrolladores-bounces en runas.cap.gva.es] En nombre de Jorge Bellido Diez Enviado el: martes, 12 de febrero de 2008 17:55
Para: gvsig_desarrolladores en runas.cap.gva.es
Asunto: [Gvsig_desarrolladores] Cómo acceder a la geometria de una seleccion?

Hola, soy relativamente nuevo en esto de la programación con GvSig. Estaba explorando su funcionamiento cuando se selecciona un conjunto de elementos de forma gráfica. El caso es que llego a obtener los valores alfanuméricos de la selección de mi capa pero no consigo acceder a la geometria (Shape) de lo seleccionado.

Aquí pongo el código con el que consigo llegar a los datos. Gracias de ante mano.


		// extraemos datos de la consulta
		try {
			FBitSet selection = lyrA.getRecordset().getSelection();
			
			DataSource ds = ((AlphanumericData)lyrA).getRecordset();
			
			try {
				ds.start();
				
				int idMunicipio= ds.getFieldIndexByName("Municipio");
				strMunicipio = ds.getFieldValue(selection.nextSetBit(0), idMunicipio);
				
				System.out.println(strMunicipio.toString());
				
				
				
				//Value strPoblacion = ds.getFieldValue(selection.nextSetBit(0),idPoblacion);
				ds.stop();
			} catch (com.hardcode.gdbms.engine.data.driver.DriverException e) {
				// TODO Auto-generated catch block
				System.out.println("fallo al abrir el dataSource");
				System.out.println(e.getMessage());
				e.printStackTrace();
			}
			
		}catch (DriverException e) {
			// TODO Auto-generated catch block
			System.out.println("fallo al hacer la consulta");
			System.out.println(e.getMessage());
			e.printStackTrace();
		}


 

 

Un cordial saludo;

 

··················································································
Jorge Bellido


 

_______________________________________________
gvSIG_desarrolladores mailing list
gvSIG_desarrolladores en runas.cap.gva.es
http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores

_______________________________________________
gvSIG_desarrolladores mailing list
gvSIG_desarrolladores en runas.cap.gva.es
http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores

_______________________________________________
gvSIG_desarrolladores mailing list
gvSIG_desarrolladores en runas.cap.gva.es
http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores

_______________________________________________
gvSIG_desarrolladores mailing list
gvSIG_desarrolladores en runas.cap.gva.es
http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores



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