[gdal-dev] With 1.6.2, still can't read ArcInfo binary grids: GDAL Error 3:Attempt to read past EOF inC:\Temp\GeoEcoTemp_Jason\tmpopx_s3\projected0a/../info/arc.dir.

Even Rouault even.rouault at mines-paris.org
Sat Aug 8 08:12:59 EDT 2009


----- Original Message ----- 
From: Jason Roberts
To: gdal-dev at lists.osgeo.org
Cc: 'Roger Bivand'
Sent: Saturday, August 08, 2009 12:05 AM
Subject: [gdal-dev] With 1.6.2,still can't read ArcInfo binary grids: GDAL 
Error 3:Attempt to read past EOF 
inC:\Temp\GeoEcoTemp_Jason\tmpopx_s3\projected0a/../info/arc.dir.


> Hi all,

> I am using rgdal to read ArcInfo binary grids produced by ArcGIS. The 
> latest public version of rgdal, which binds with GDAL 1.6.1, fails with 
> the
> error message in the subject line of this email. I reported this a couple 
> of weeks ago in 
> http://lists.osgeo.org/pipermail/gdal-dev/2009-July/021369.html.

> Today, the rgdal developer (Roger Bivand) provided me with an rgdal built 
> against the 1.6.2 release candidate issued 31 July. The problem still 
> exists.

OK, I've looked more closely at 
http://rgdal.cvs.sourceforge.net/viewvc/rgdal/rgdal/src/gdal-bindings.cpp?revision=1.32&view=markup 
and I see RGDAL defines its own error handler for GDAL errors (around lines 
114-134). So the fix pushed in 1.6.2 that solves the issue for Python and 
other bindings languages will not help for the RGDAL case as the error() 
call probably causes a R exception to be thrown. As I've no knowledge of R, 
it is just wild guessing.

RGDAL_OpenDataset() could be modified so that its own error handler is not 
used during GDALOpen. Something like this might do it :

...
CPLErrorReset();
CPLPushErrorHandler(CPLDefaultErrorHandler);
GDALDataset *pDataset = (GDALDataset *) GDALOpen(fn, RWFlag);
CPLPopErrorHandler();
// Similarly to SWIG bindings, the following lines will cause 
RGDAL_OpenDataset() to fail on - unclearred - errors even if pDataset is not 
NULL.
// They could also be just removed. While pDataset != NULL, there's some 
hope ;-)
CPLErr eclass = CPLGetLastErrorType();
if (pDataset != NULL && eclass == CE_Failure)
{
    GDALClose(pDataset);
    pDataset = NULL;
    __errorHandler(eclass, CPLGetLastErrorNo(), CPLGetLastErrorMsg());
}

if (pDataset == NULL)
    error("Could not open file: %s\n", filename);
....

Note this is uncompiled & untested, but that should avoid similar situations 
in other drivers (non fatal errors triggered during dataset opening and 
cleared by CPLErrorReset() ) to occur .

> The problem had apparently been seen before. My original email prompted a 
> review of the issue, including mention of it being tracked in tickets
> #2447 and #3031. Evan made some checkins on 22 July that I thought would 
> result in this being fixed in both the trunk and the next release of 1.6
> (which would be 1.6.2). But I guess I did not fully understand it, and I 
> missed the fact that neither of these issues appeared in Howard's 31 July
> release candidate email.

The tickets are not mentionned in Howard's email because the fix is only 
partial and the tickets still open.

> So: is there any chance the GDAL team can fix this in either 1.6.2 or, if 
> it is now too late, 1.6.3?

> It may be that this fell off the radar because the severity of the tickets 
> (for example, #3031 is minor), or because there was a suggested workaround
> that users could simply rename the "info" directory to prevent GDAL from 
> failing. Well the issue is indeed severe if you are an ArcGIS user. In my
> case, the rasters were produced by ArcGIS 9.3.1. Presumably ESRI is 
> generating the rasters correctly. The workaround of renaming the info
> directory is not a good idea. That renders all of the rasters in a 
> directory inaccessible to ArcGIS. It is a major corruption of the ArcInfo 
> binary grid
> format to do so. I'm not sure why it was suggested in the first place, but 
> it is a very bad idea.

Eh! workarounds are workarounds and generally not very elegant. It enables 
GDAL to avoids reading the VAT table, but if ArcGIS doesn't like it, that's 
another story... The advantage with renaming is that you can undo it when 
necessary... Anyway, you're free of ignoring it if you don't like it.

> I'm sorry for not staying on top of this issue and somehow missing that it 
> was not put into 1.6.2 and that the workaround is such as bad idea. In any
> case, could you please consider fixing this in 1.6 soon? I can provide 
> example data if needed.

#3031 has already a link to sample data that triggers the error message. You 
just need to find and convince someone that has time and knowledge of the 
AVC driver.

> Thanks,

> Jason



_______________________________________________
gdal-dev mailing list
gdal-dev at lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/gdal-dev 




More information about the gdal-dev mailing list