Changes between Version 6 and Version 7 of FGDBSpecification
- Timestamp:
- Oct 9, 2013, 12:46:28 AM (11 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
FGDBSpecification
v6 v7 4 4 5 5 This is a work-in-progress reverse-engineered specification of .gdbtable and .gdbtablx files found in FileGDB datasets. 6 It applies to FileGDB datasets v10, as well as earlier versions. 6 7 7 8 = Conventions = 8 9 9 ubyte: unsigned byte10 int16: little-endian 16-bit integer11 int32: little-endian 32-bit integer12 float64: little-endian 64-bit IEEE754 floating point number13 utf16: string in little-endian UTF-16 encoding14 string: (UTF-8 ?) string10 * ubyte: unsigned byte 11 * int16: little-endian 16-bit integer 12 * int32: little-endian 32-bit integer 13 * float64: little-endian 64-bit IEEE754 floating point number 14 * utf16: string in little-endian UTF-16 encoding 15 * string: (UTF-8 ?) string 15 16 16 17 A row or a feature are synonyms in this document. … … 33 34 || int32 || file size in bytes || 34 35 || 4 bytes || 0x00 0x00 0x00 0x00 - unknown role. Constant among the files || 35 || int32 || offset in bytes at which the field description section begins , often (in FGDB 10) 0x28 0x00 0x00 0x00, i.e. 40||36 || int32 || offset in bytes at which the field description section begins (often 40 in FGDB 10) || 36 37 || 4 bytes || 0x00 0x00 0x00 0x00 - unknown role. Constant among the files || 37 38 … … 98 99 99 100 If magic > 1, there are extra bytes whose organization seems to comply to the following algorithm : 100 101 {{{ 102 1) Store current offset 103 2) Skip one byte 104 3) Read int32 value "magic2". 105 a) if magic2 = 0, then rewind to the stored offset and read 2 float64 (that happen to be NaN values). And then go to 2) 106 b) otherwise (generally magic2 = 1 or magic2 = 3), skip magic2 x float64 values 107 }}} 101 1. Store current offset 102 2. Skip one byte 103 3. Read int32 value "magic2". 104 a. if magic2 = 0, then rewind to the stored offset and read 2 float64 (that happen to be NaN values). And then go to 2) 105 b. otherwise (generally magic2 = 1 or magic2 = 3), skip magic2 x float64 values 106 108 107 109 108 … … 267 266 268 267 The last few bytes look like 00 00 00 00 X 00 00 00 X 00 00 00 00 00 00 00 where X is non 0 (often 1). Unknown role 268 269 = License = 270 271 This specification document is (C) 2013 Even Rouault and licensed under the [http://creativecommons.org/licenses/by-sa/3.0 CC-BY-SA 3.0] terms [[Image(http://i.creativecommons.org/l/by-sa/3.0/88x31.png, link=http://creativecommons.org/licenses/by-sa/3.0)]]. 272 273 Note: the scope of the copyrighted material does, of course, not extend onto any source or binary code derived from the specification, that may be licensed under the terms that their author may see fit.