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