[Gvsig_desarrolladores] crear puntos y obtener coordenadas

Francisco Puga fpuga en cartolab.es
Lun Dic 12 18:36:51 CET 2011


Creo que Catch Coordinates es de Sextante

El día 7 de diciembre de 2011 04:57, MarC Ortiz
<yerotazma03 en hotmail.com> escribió:
> Buen dia!
>
> Estoy realizando una extension para gvsig en donde busco por medio de los
> Listener, crear puntos al vuelo sobre el MapControl y obtener a su vez las
> coordenadas de dichos puntos que se van creando, hasta ahora he conseguido
> capturar las coordenadas pero de la vista, a través de la clase que enseñare
> al final, pero a su vez sé, que la herramienta Catch Coodinates esta
> capturando las coordenadas de los layer y es precisamente lo que necesito,
> pero no se como acceder al codigo de dicha herramienta, por favor si alguien
> conoce, espero me indique!
>
> A su vez, como ya comentaba, quiero lograr crear puntos al vuelo, pero la
> unica forma que lo he conseguido es creando puntos pero de capas en edicion,
> reitero que quiero conseguir que esto sea al vuelo y sin tener que estar
> editando una capa existente, solo quiero indicar que voy a dibujar puntos y
> capturarlos para con estos realizar otras operaciones
>
> Espero me puedan ayudar, muchas gracias!
>
>
> package org.gvsig.proyecto;
>
> import java.awt.Cursor;
> import java.awt.Image;
> import java.awt.Point;
> import java.awt.Toolkit;
> import java.awt.geom.Point2D;
> import javax.swing.ImageIcon;
> import javax.swing.JOptionPane;
> //import com.hardcode.driverManager.DriverLoadException;
> import java.lang.Exception;
> //import com.iver.cit.gvsig.fmap.DriverException;
> import com.iver.cit.gvsig.fmap.MapControl;
> import com.iver.cit.gvsig.fmap.layers.FBitSet;
> import com.iver.cit.gvsig.fmap.layers.FLayer;
> import com.iver.cit.gvsig.fmap.layers.FLyrVect;
> import com.iver.cit.gvsig.fmap.tools.Events.PointEvent;
> import com.iver.cit.gvsig.fmap.tools.Listeners.PointListener;
> import com.iver.cit.gvsig.fmap.tools.BehaviorException;
>
> /**
>  * Implementación de la interfaz PointListener como herramienta para
> realizar
>  * una selección por punto.
>  *
>  * @author Vicente Caballero Navarro
>  */
>
> public class PointSelectionListener implements PointListener {
>
>  private Point2D p;
>  private final Image img = new
> ImageIcon(MapControl.class.getResource("images/PointSelectCursor.gif")).getImage();
>  private Cursor cur = Toolkit.getDefaultToolkit().createCustomCursor(img,
> new Point(16, 16), "");
>  protected MapControl mapCtrl;
>  /**
>   * Crea un nuevo AreaListenerImpl.
>   *
>   * @param mc MapControl.
>   */
>
>  public PointSelectionListener(MapControl mc) {
>
>   JOptionPane.showMessageDialog(null, " Estoy en PointSelection");
>
>   this.mapCtrl = mc;
>  }
>  /**
>   * @see
> com.iver.cit.gvsig.fmap.tools.Listeners.PointListener#point(com.iver.cit.gvsig.fmap.tools.Events.PointEvent)
>   */
>
>  public void point(PointEvent event) throws BehaviorException {
>
>
>
>   try {
>
>    //mapCtrl.getMapContext().selectByPoint(event.getPoint(), 1);
>             Point2D p = event.getPoint();
>
>             Point2D mapPoint = mapCtrl.getViewPort().toMapPoint((int)
> p.getX(), (int) p.getY());
>
>
>
>     JOptionPane.showMessageDialog(null, "Puntos x:" +  (int)p.getX() + "
> Puntos y:" + (int)p.getY());
>             // Tolerancia de 3 pixels
>             double tol = mapCtrl.getViewPort().toMapDistance(3);
>             FLayer[] actives = mapCtrl.getMapContext()
>             .getLayers().getActives();
>             for (int i=0; i < actives.length; i++)
>             {
>                 if (actives[i] instanceof FLyrVect) {
>                     FLyrVect lyrVect = (FLyrVect) actives[i];
>                     FBitSet oldBitSet =
> lyrVect.getSource().getRecordset().getSelection();
>                     FBitSet newBitSet = lyrVect.queryByPoint(mapPoint, tol);
>                     if (event.getEvent().isControlDown())
>                         newBitSet.xor(oldBitSet);
>                     lyrVect.getRecordset().setSelection(newBitSet);
>                 }
>             }
>   } /*catch (DriverException e) {*/
>   catch (Exception e) {
>    e.printStackTrace();
>    throw new BehaviorException("No se pudo hacer la selección");
>
>   } /*catch (DriverLoadException e) {*/
>    /*catch (Exception e) {*/
>    // TODO Auto-generated catch block
>    //e.printStackTrace();
>   //}
>  }
>
>  public void setPoint(Point2D p) throws BehaviorException {
>
>   this.p = p;
>  }
>
>  /**
>   * @see com.iver.cit.gvsig.fmap.tools.Listeners.ToolListener#getCursor()
>   */
>  public Cursor getCursor() {
>   return cur;
>  }
>  /**
>   * @see
> com.iver.cit.gvsig.fmap.tools.Listeners.ToolListener#cancelDrawing()
>   */
>  public boolean cancelDrawing() {
>   return false;
>  }
>  public void pointDoubleClick(PointEvent event) throws BehaviorException {
>
>   // mapCtrl.getMapContext().selectByPoint(event.getPoint(), 1);
>             Point2D p = event.getPoint();
>             Point2D mapPoint = mapCtrl.getViewPort().toMapPoint((int)
> p.getX(), (int) p.getY());
>
>     JOptionPane.showMessageDialog(null, "Puntos x:" +  (int)p.getX() + "
> Puntos y:" + (int)p.getY());
>  }
>
> }
>
>
>
>
>
> Diana Marcela Ortiz Giraldo
>
>    Universidad del Valle
>
>
>
>
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores en listserv.gva.es
> Para ver histórico de mensajes, editar sus preferencias de usuario o darse
> de baja en esta lista, acuda a la siguiente dirección:
> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>



-- 
Francisco Puga
Grupo de Desarrollo
Cartolab - Laboratorio de Ingeniería Cartográfica.
http://www.cartolab.es

ETS Ingeniería de Caminos, Canales y Puertos
Universidade da Coruña
Campus de Elviña - 15071 A Coruña (España)
(34)981167000 ext. 5493


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