[Gvsig_desarrolladores] MapOverview / Info deobjectos seleccionados

Carlos Sánchez Periñán csanchez en prodevelop.es
Jue Ago 21 12:26:35 CEST 2008


Hola de nuevo Carlos,

 

Si quieres los datos alfanuméricos de los atributos seleccionados de la tabla es muy parecido realmente, gvSIG separa Datos alfanuméricos de las geometrías pero ambas están relacionadas en la capa. Para obtener los datos alfanuméricos de una capa necesitas obtener su fuente de datos (DataSource) que puede ser de diversos tipos en vectorial, ya sea base de datos o fichero XML por ejemplo. Pues bién, los datos seleccionados vienen dados por unos índices de selección (FBitSet) que se encuentran activos o no y se indican en la clase SelectableDataSource. Por tanto accedemos a la selección de la capa y luego lo recorremos obteniendo los campos de cada fila seleccionada que equivaldrá a una geometría seleccionada shape(i).

 

Espero que el siguiente fragmento de código te oriente mejor.

 

FBitSet bitSelection = lyrA.getSelectionSupport().getSelection();  //accedes a los datos seleccionados de la capa lyrA. 

try {

//bucle que recorre la selección y devuelve los valores de cada campo j que contiene cada fila i.

for (int i = 0; i < bitSelection.getRowCount(); i++) {

      for (int j = 0; j < bitSelection.getFieldCount(); j++) {

                  Value v = bitSelection.getFieldValue(i, j);

return v;

            }

      }

} catch (DriverException e1) {

      e1.printStackTrace();

}

 

Este fragmento te sirve para una capa (lyrA) cargada en el TOC. Espero que se parezca más a lo que  lo que buscas.

Saludos.

 

Carlos Sánchez Periñán

Equipo desarrollo GIS

Prodevelop S.L.

Tel :  963510612

E-mail : csanchez en prodevelop.es

________________________________

De: gvsig_desarrolladores-bounces en runas.cap.gva.es [mailto:gvsig_desarrolladores-bounces en runas.cap.gva.es] En nombre de Web.DE
Enviado el: miércoles, 20 de agosto de 2008 12:37
Para: 'Lista de Desarrolladores de gvSIG'
Asunto: AW: [Gvsig_desarrolladores] MapOverview / Info deobjectos seleccionados

 

Hola Carlos,

 

gracias por tu pronta respuesta. Creo que no he esplicado que tipo de información es la que necesito. Lo que necesito no es la geometría, sino la información dinámica. Realmente necesito la misma información del tool info, pero para todos los elementos seleccionados. O sea algo parecido a la implementación de la función point(..) en la clase InfoListener, pero para todos los elementos seleccionados. 

 

Quizá tienes una idea.

 

Saludos

Carlos

 

-----Ursprüngliche Nachricht-----
Von: gvsig_desarrolladores-bounces en runas.cap.gva.es [mailto:gvsig_desarrolladores-bounces en runas.cap.gva.es] Im Auftrag von Carlos Sánchez Periñán
Gesendet: Mittwoch, 20. August 2008 09:44
An: Lista de Desarrolladores de gvSIG
Betreff: RE: [Gvsig_desarrolladores] MapOverview / Info de objectos seleccionados

 

Hola Carlos,

 

Voy a ver si puedo resuelver al menos parte de tus dudas.

 

En este caso acerca de demandar la información de los objetos seleccionados en un layer WFS.

 

Los layer WFS son vectoriales, por tanto una vez descargados en memoria está almacenado en una capa vectorial que será instanciando un objeto de la clase FLyrVect.

 

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.

 

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 a partir de el el getShape(i);

 

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);

            }

}

 

Espero que te ayude.

Saludos.

 

Carlos Sánchez Periñán

Equipo desarrollo GIS

Prodevelop S.L.

Tel :  963510612

E-mail : csanchez en prodevelop.es

________________________________________

De: gvsig_desarrolladores-bounces en runas.cap.gva.es [mailto:gvsig_desarrolladores-bounces en runas.cap.gva.es] En nombre de Web.DE Enviado el: martes, 19 de agosto de 2008 15:55

Para: gvsig_desarrolladores en runas.cap.gva.es

Asunto: [Gvsig_desarrolladores] MapOverview / Info de objectos seleccionados

 

Hola a todos!

 

Soy nuevo en esta lista, así que no sé muy bien cómo funciona. Bueno estoy desarrollando una aplicación con gvSIG y tengo dos preguntas, quizá alguien me pueda ayudar.

 

Preámbulo: Estoy desarrollando una aplicación sin utilizar el MDIFrame y sin utilizar la clase Launch.java para arrancar la aplicación, ya que no necesito toda la extensibilidad del Framework, sino su funcionalidad básica. Es decir estoy mostrando diferentes mapas y tools dentro de mi propia aplicación. Realmente casi todo ha sido muy fácil y funciona muy bien. Sin embargo tengo los siguientes problemas/preguntas.

 

1. MapOverview y TOC → no he podido hacer funcionar estos dos componentes y realmente no sé que me hace falta. No hay ningún error, solo que no muestran nada.

 

       // Initialize tree of layers

            tOC = new TOC();

            tOC.setMapContext(mapControl.getMapContext());

            tOC.setVisible(true);

            tOC.setBackground(Color.WHITE);

            tOC.getTree().setBackground(Color.WHITE);

 

            // Initialize map overview

            mapOverview = new MapOverview(mapControl);

            mapOverview.setPreferredSize(new Dimension(150, 200));

            mapOverview.setVisible(true);

 

2. Quiero demandar la información de los objetos seleccionados en un layer WFS.

 

Si alguien me puede dar una pista de cómo proseguir estaría muy agradecido.

 

Gracias

Carlos

 

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://runas.cap.gva.es/pipermail/gvsig_desarrolladores/attachments/20080821/e585a1a8/attachment.htm


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