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

Carlos Sánchez Periñán csanchez en prodevelop.es
Mar Feb 12 18:46:40 CET 2008


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



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