Buenos días Alex.

Le comento una serie de puntos sobre la funcionalidad que quiere implementar:

1) En primer lugar, supondré que su herramienta será un PlugIn (es decir, que la clase implementa la interfaz PlugIn o extiende a alguna de sus subclases, como AbstractPlugIn o ThreadedPlugIn).

2) En el método execute de dicha herramienta debe incluir el código que debe ejecutarse al pulsar el botón de la misma en la interfaz de usuario (o, si la tarea que desea realizar es de "larga duración", deberá comprobarse en dicho método execute que se cumplen todas las precondiciones para la ejecución de la misma en el método run(), recuperando a su vez los datos que necesite).

En este caso, lo primero que necesitará es recuperar el encuadre de la vista activa (no olvide incluir en el método getCheck() / createEnableCheck la comprobación de que debe existir una vista activa):

Envelope encuadreActual = context.getLayerViewPanel().getViewport().getEnvelopeInModelCoordinates();

3) Una vez obtenida dicha referencia, sería necesario recuperar de qué capa/s se van a seleccionar los elementos. Dependiendo de la funcionalidad que desea implementar, puede obtener la referencia directamente (si sabe de antemano de qué capa debe recuperarla), o, si es una herramienta válida para cualquier capa, puede obtener la referencia a la capa mediante la selección de la misma en el árbol de capas:

a) Referencia directa por nombre (sería recomendable incluir un chequeo de que la capa de nombre nombreDeMiCapa existe realmente):

Layer selectedLayer = JUMPWorkbench.getLayer(nombreDeMiCapa);

b) Recuperarla a partir de la selección del árbol (sería recomendable incluir un chequeo que compruebe que existe una capa vectorial y que está seleccionada en el árbol)

Layer selectedLayer = context.getSelectedLayer(0);

4) Recuperamos los elementos que cruzan con el encuadre actual:

List<Layer> layersToFilter = new ArrayList<Layer>();
layersToFilter.add(selectedLayer);
Geometry fence = EnvelopeUtil.toGeometry(encuadreActual);
Map layerToFeaturesInFenceMap = context.getLayerViewPanel().layersToFeaturesInFenceMap(
               layersToFilter, fence);

5) Para seleccionar los elementos puedes consultar el método refreshSelection(layerToFeaturesInFenceMap, context.getLayerViewPanel()) del plugin CalculateSelectionPlugIn.

Saludos,


Alex Mtz. de Agirre Escobar escribió:
Buenos días!

Estoy teniendo algunos problemas a la hora de implementar una herramienta propia sobre Kosmo.

El primer paso que debe realizar dicha herramienta es seleccionar los elementos de la capa activa que se encuentren en la ventana de visualización de Kosmo. Para ello, debo de llamar al evento que realiza el botón de selección, y posteriormente seleccionar los elementos que se encuentren dentro de las coordenadas de la ventana de visualización. De momento, me conformaría con lograr dicho propósito. El error que tengo en mi código es que el constructor /CalculateSelectionPlugIn/ no está definido.

Si fuese posible, les agradecería que me ayudaran a solucionar dicho contratiempo.

Gracias de antemano,
Alex.

------------------------------------------------------------------------
Eskura ezazu Windows Live Hotmail doanik, beti eskura edukiko duzun posta elektronikoko zerbitzua. Erregistratu orain. <https://signup.live.com/signup.aspx?id=60969>

--

Sergio Baños Calvo

Jefe de desarrollos
Sistemas Abiertos de Información Geográfica, S.L. (SAIG S.L.)
Tlfno. móvil: 685005960
Tlfno. fijo: (+34) 954788876

E-mail: [email protected]

_______________________________________________
Kosmo mailing list
[email protected]
http://lists.saig.es/mailman/listinfo/kosmo

Responder a