[Gvsig_desarrolladores] Ayuda con la siguiente excepción

Leonid Mendoza Robaina lmendoza en cenatav.co.cu
Vie Jun 13 20:21:35 CEST 2008


Hola a todos los desarrolladores:

Estoy programando una extensión con el objetivo de imprimir en pantalla las coordenadas de los rectángulos (en ingles a esto se le conoce como Bounding Box Region) que contienen las geometrías seleccionadas por el usuario en una capa vectorial que ha sido cargada en una vista.
El código de la extensión es el siguiente:

public void execute(String actionCommand) {
	if (actionCommand.equals("1_SET_ANNOTATION")) {
		printRect();
	}
}
private void printRect(){
try {
  View vista = (View) PluginServices.getMDIManager().getActiveWindow();
  MapControl mapCtrl = vista.getMapControl();
	
  FLayer[] actives = mapCtrl.getMapContext().getLayers().getActives();
  for (int i=0; i < actives.length; i++)
  {
    System.out.println("capa "+ i);
    if (actives[i] instanceof FLyrVect ){
      FLyrVect lyrVect = (FLyrVect) actives[i];
	FBitSet sel = lyrVect.getRecordset().getSelection();
	for(int j = sel.nextSetBit(0); j >= 0; j = sel.nextSetBit(j+1)){
	  IGeometry ig = lyrVect.getSource().getShape(j);//la execption se lanza en esta linea	
	  if(ig != null){
	    Rectangle2D rect = ig.getBounds2D();
		//Imprimir coordenadas del rectángulo.					
							
	  }
	}
    }
  }
}catch (DriverException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
}catch (DriverIOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
}
}

En ejecución se lanza NullPointerException en la llamada al método getShape(j) en la línea siguiente:
IGeometry ig = lyrVect.getSource().getShape(j);

La traza de la excepción es la siguiente:
java.lang.NullPointerException
	at com.iver.cit.gvsig.fmap.drivers.shp.IndexedShpDriver.getPositionForRecord(Unknown Source)
	at com.iver.cit.gvsig.fmap.drivers.shp.IndexedShpDriver.getShape(Unknown Source)
	at com.iver.cit.gvsig.fmap.layers.VectorialFileAdapter.getShape(Unknown Source)
	at com.iver.cit.gvsig.semanticAnnotation.SetAnnotationExtension.printRect(SetAnnotationExtension.java:81)
	at com.iver.cit.gvsig.semanticAnnotation.SetAnnotationExtension.execute(SetAnnotationExtension.java:25)
	at com.iver.andami.plugins.ExtensionDecorator.execute(ExtensionDecorator.java:88)
	at com.iver.andami.ui.mdiFrame.MDIFrame.actionPerformed(MDIFrame.java:616)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)
	at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:231)
	at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:231)
	at java.awt.Component.processMouseEvent(Component.java:5488)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3093)
	at java.awt.Component.processEvent(Component.java:5253)
	at java.awt.Container.processEvent(Container.java:1966)
	at java.awt.Component.dispatchEventImpl(Component.java:3955)
	at java.awt.Container.dispatchEventImpl(Container.java:2024)
	at java.awt.Component.dispatchEvent(Component.java:3803)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
	at java.awt.Container.dispatchEventImpl(Container.java:2010)
	at java.awt.Window.dispatchEventImpl(Window.java:1766)
	at java.awt.Component.dispatchEvent(Component.java:3803)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
	at com.iver.andami.ui.AndamiEventQueue.dispatchEvent(AndamiEventQueue.java:58)
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)


Por favor, alguien pudiera ayudarme a saber porqué se lanza la excepción y a corregir el código.
Muchas gracias a todos,

Leonid Mendoza
Estudiante de Ciencia de La Computación
Universidad de La Habana.

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


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