[Gvsig_desarrolladores] edición de DBF sobre gvsigMobile

roeptisa mimo027 en gmail.com
Mar Feb 22 09:44:35 CET 2011


Hola,

Tengo un shape de más de 1000 registros, si edito una de los elementos de
ese shape con gvsigmobile, el tiempo que tarda es muy poco, y lo que está
haciendo realmente es editar la información alfanumérica del elemento
seleccionado, que está almacenada en su correspondiente fichero dbf.

¿Cómo puedo hacer uso de este código que ya hay implementado, para solo
editar el fichero dbf, no el .shp?

Actualmente para editar ficheros dbf hago uso de la siguiente función :
(pero el rendimiento es muy malo porque se tiene que recorrer todo el dbf).

public static void modificarDBF(String fName,int rowIndex,Object[]
recordModificar)
	{
		try{
			
				logger.debug("inicio modificarTabla2: " + fName + " " + rowIndex);
				
				File f;
				f = new File(fName);
				DbfMemoryDataSource drv;
				drv = new DbfMemoryDataSource(f);
				drv.start();
				
				
				int numFilas = (int)drv.getRowCount();
				logger.debug("numFilas: " + numFilas);
				
				DbaseFileHeaderNIO myHeader;
				myHeader = DbaseFileHeaderNIO.createDbaseHeader(drv);
				
				myHeader.setNumRecords(numFilas);
				
		
				logger.debug("strDirTemp: " + strDirTemp);
				OrderFileOutputStream outStream = new OrderFileOutputStream(f, new
File(strDirTemp));
				DbaseFileWriterNIO dbfWrite = new
DbaseFileWriterNIO(myHeader,outStream);
				
			
				
			    FeatureTemp fea = new FeatureTemp();
				fea.setFieldNames(drv.getFieldNames());
				
			
				for (int j=0; j<numFilas; j++){
					fea.setValues(drv.getRow(j));
					Object[] record = fea.getValues();
				
					if (j == rowIndex){
						record = recordModificar;
					}
					
					dbfWrite.write(record);
				}	
				
				
				dbfWrite.close();
				outStream.close();
			
				
					
		}


Quisiera usar el código que ya hay implementado en gvsigmobile para editar
shapes, pero solo usarlo para editar dbf, ya que este código es bastante
rápido para la edición de ficheros dbf de bastante tamaño, pero no he
conseguido usarlo, ya que me obliga a que tenga necesariamente un fichero
shape asociado al dbf.

He probado a usar la librería javadbf.jar, pero solo me sirve para añadir
nuevas filas, para editar una fila ya existente no tiene ningún método
definido.

Muchas Gracias.

Un saludo,

Rocio.

-- 
View this message in context: http://osgeo-org.1803224.n2.nabble.com/edicion-de-DBF-sobre-gvsigMobile-tp4560072p6051510.html
Sent from the gvSIG desarrolladores mailing list archive at Nabble.com.


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