[gdal-dev] deleting feature exceptions
=?gbk?B?d293?=
27949218 at qq.com
Thu Aug 14 21:56:20 EDT 2008
Hi,
i try to delete features from a set of shape file, sometimes get error. I use this version of ogrshapelayer.cpp : http://trac.osgeo.org/gdal/changeset/10969 . Delete feature in two ways would get different result:
(1) for(iFeat=0;iFeat<nFeat;iFeat++)
{
int cplE = pLayer->DeleteFeature(0);
if(cplE==CE_None)
{
OGRShapeLayer* pShpLayer = (OGRShapeLayer*)pLayer;
cplE = pShpLayer->Repack();
if(cplE!=CE_None)
{
printf("delete feature failed £¡\n");
return false;
}
}
}
int nFeatRest = pLayer->GetFeatureCount();
These codes could delete each feature with returned value CE_None, and at the end nFeatRest=0. But when ran to pShpLayer->Repack() second, the error occurs: "Failure writing DBF record 0", it jumped untill all features were deleted.
(2) for(iFeat=nFeat-1;iFeat>=0;iFeat--)
{
int cplE = pLayer->DeleteFeature(iFeat);
if(cplE==CE_None)
{
OGRShapeLayer* pShpLayer = (OGRShapeLayer*)pLayer;
cplE = pShpLayer->Repack();
if(cplE!=CE_None)
{
printf("delete feature failed £¡\n");
return false;
}
}
}
int nFeatRest = pLayer->GetFeatureCount();
These codes could delete each feature with returned value CE_None, but at the end nFeatRest>0 and nFeatRest<nFeat, some features were NOT deleted yet! Same as (1), when ran to pShpLayer->Repack() second, the error occurs: "Failure writing DBF record iFeat", it jumped untill all features were deleted.
Trace the error "Failure writing DBF record ..." into Repack():
/* -------------------------------------------------------------------- */
/* Build a list of records to be dropped. */
/* -------------------------------------------------------------------- */
...
for( iShape = 0; iShape < nTotalShapeCount; iShape++ )
{
if( DBFIsRecordDeleted( hDBF, iShape ) )//------------ERROR jumped ---------
panRecordsToDelete[nDeleteCount++] = iShape;
}
Why did this phenomena occurs?
Thank you.
------------------
To the world you're little, but to a person you're the world.
Chen Xuexia
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/gdal-dev/attachments/20080815/2c555853/attachment-0001.html
More information about the gdal-dev
mailing list