Hello dearest IDL community! :)
I've got a problem reading shapefiles greater 2Gb using IDL v.7.1.1.
After execution of such code:
oShape = obj_new('IDLffShape', 'somefile.shp')
atts = oShape->GetAttributes(/all)
1) if I use x86 version of IDL:
I get
% IDLFFSHAPE::GETATTRIBUTES: No attributes exist for this shapefile.
% Execution halted at: $MAIN$
and execution stops, and
2) if I use x86_64 version of IDL:
a lot of lines like
fseek(-2138966623) failed on DBF file.
are printed. Execution continues and array 'atts' contains array of attributes but after specific array element (3984199 in my case) there are only zeroes (though there shouldn't be any).
After some investigation I discovered that IDL module 'idl_shape.so' is based on open-source library ShapeLib and the error with 'fseek...' is generated exactly in this library. As I understand this error occures due to int32-type index variable used in ShapeLib library. In later version of ShapeLib library this index variable became long (64-bit)-type and the error should not occure. BUT in IDL there is the old version of this library...
So, my questions are: does anybody met such problem before? if it was resolved somehow then how? and, may be someone knows about some kind of patch or replacement for 'idl_shape.so' IDL-module?
Thanks!
|