[Gvsig_desarrolladores] Escribir en un shp y en un dbf

Gorka Sanz gorka.zgz en gmail.com
Mie Abr 22 16:31:38 CEST 2009


Hola buenas tengo el siguiente código
                        FLyrVect lv = (FLyrVect) layer;
AlphanumericData co = (AlphanumericData) layer;
ProjectExtension ext = (ProjectExtension)
PluginServices.getExtension(ProjectExtension.class);
ProjectTable projectTable = ext.getProject().getTable(co);
EditableAdapter ea=null;
ReadableVectorial rv=lv.getSource();
if (rv instanceof VectorialEditableAdapter){
ea=(EditableAdapter)lv.getSource();
}else{
ea=new EditableAdapter();
SelectableDataSource sds=((FLyrVect)lv).getRecordset();
ea.setOriginalDataSource(sds);
}

if (projectTable == null) {
projectTable = ProjectFactory.createTable(PluginServices.getText(this,
"Tabla_de_Atributos") + ": " + lv.getName(),
ea);
projectTable.setProjectDocumentFactory(new ProjectTableFactory());
projectTable.setAssociatedTable(co);
ext.getProject().addDocument(projectTable);
}
projectTable.setModel(ea);
Table t = new Table();
t.setModel(projectTable);
t.getModel().setModified(true);
 if (ea.isEditing())
ea.getCommandRecord().addCommandListener(t);

hasta aqui bien, obteingo en t la tabla de esa layer, continuemos

                        IEditableSource ies=t.getModel().getModelo();
t.startEditing();
DefaultFeature df=new DefaultFeature(geom,lista,ea.getNewFID());
 ies.doAddRow(df, EditionEvent.ALPHANUMERIC);
 t.refresh();


y si ahora hago
 PluginServices.getMDIManager().addWindow(t);
me saca una ventana con la tabla de esa layer y los cambos realizados

y Lo que quiero es guardar una geometria (un punto) y unos alfanumericos
asociados a esa geometria no en el Table t , sino en un fichero dbf y shp
corrrespondiente, los cuales ya contienen una serie de datos

he probado a hacer


 VectorialEditableAdapter vea = (VectorialEditableAdapter) ies;
 IWriteable w = (IWriteable) ies;
 IWriter writer = w.getWriter();
vea.startEdition(EditionEvent.GRAPHIC);
lv.setRecordset(vea.getRecordset());
ILayerDefinition lyrDef = EditionUtilities.createLayerDefinition(lv);
 lyrDef.setShapeType(lv.getShapeType());
writer.initialize(lyrDef);
 vea.stopEdition(writer, EditionEvent.GRAPHIC);
lv.setProperty("stoppingEditing",new Boolean(false));

pero no escribe la geometría y los alfanuméricos en el fichero

también he probado a una vez obtenida y modificada la tabla  a usar la
herramienta de StopEdición del gvSIG para reflejar los cambios guardados,
pero esta no me sierve y me da un NullPointerException en la linea 84 de la
StopEdition
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://runas.cap.gva.es/pipermail/gvsig_desarrolladores/attachments/20090422/5b21d5fb/attachment.htm


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