Saludos a todos.
Estoy creando una extensión de GvSig que automatice ciertas
tareas. La primera de ellas es crear una capa vectorial sobre la vista activa
de forma automática (asignándola a un fichero temporal, indicando proyecciones
y atributos por código, etc). He probado a usar tanto código puro de GvSig como
a emplear las clases incluidas en Sextante, pero sin éxito. En ambos casos
consigo crear en memoria la capa, pero siempre falla al tratar de añadirla. Os
dejo el código que tengo hasta ahora:
Versión de extensión sin uso de Sextante:
public void
execute(String actionCommand) {
MDIManager
mdiManager = PluginServices.getMDIManager();
IWindow
window = mdiManager.getActiveWindow();
if
(window instanceof View){
View
view = (View) window;
FLyrVect
capa = new FLyrVect();
capa.createSpatialIndex();
capa.setName("Traza");
capa.setVisible(true);
capa.setActive(true);
view.getModel().getMapContext().getLayers().addLayer(capa);
}
}
Versión de extensión con uso de Sextante:
public boolean
processAlgorithm() throws
GeoAlgorithmExecutionException {
IVectorLayer layer = this.getNewVectorLayer(OUTPUTVECTOR, "Nombre
que aparecera", IVectorLayer.SHAPE_TYPE_LINE,
types, sFields);
FLyrRaster
capa = (FLyrRaster) layer.getBaseDataObject();
MDIManager
mdiManager = PluginServices.getMDIManager();
IWindow[]
windows = mdiManager.getAllWindows();
for (int i =
0; i < windows.length; i++) {
IWindow
window = windows[i];
if
(window instanceof View){
View
view = (View) window;
view.getModel().getMapContext().getLayers().addLayer(capa);
}
}
return false;
}
Eduardo
Alvarado Sánchez
Industrias
Mecánicas de Extremadura S.A. (IMEDEXSA)
Teléfono:
+34 927 29 02 33
FAX: +34 927
29 02 68
http://www.imedexsa.es
[hidden email]
----------------------------------------------------------
ADVERTENCIA DE
CONFIDENCIALIDAD
Este mensaje, su contenido y
cualquier fichero transmitido con él están dirigidos únicamente a su
destinatario y es confidencial. Por ello, se informa a quien lo reciba por
error o tenga conocimiento del mismo sin ser su destinatario, que la
información contenida en él es reservada y su uso no está autorizado, por lo
que en tal caso le rogamos nos lo comunique por la misma vía o por teléfono (+34
927290233), así como que se abstenga de reproducir el mensaje mediante
cualquier medio o remitirlo o entregarlo a otra persona, procediendo a su
destrucción de manera inmediata.
IMEDEXSA se reserva acometer
todas las acciones legales que crea oportunas contra todo aquel que no
cumpla con esta advertencia de confidencialidad.
----------------------------------------------------------