From 7235cfb6d201f1c953f156bee41d886deb4c41d2 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 9 Mar 2023 12:35:48 +0100 Subject: [PATCH] OpenFileGDB: add read-only support for raster datasets The OpenFileGDB driver provides read access to rster layers of File Geodatabases (.gdb directories) created by ArcGIS 10 and above. The dataset name must be the directory/folder name, and it must end with the .gdb extension. It can also read directly zipped .gdb directories (with .gdb.zip extension), provided they contain a .gdb directory at their first level. The driver supports: - reading CRS information - reading geotransform - exposing overviews - exposing nodata mask band or nodata value - uncompressed, LZ77, JPEG and JPEG2000 compression methods. - exposing value attribute tables as GDAL Raster attribute tables. --- .../a00000001.TablesByName.atx | Bin 0 -> 4118 bytes .../a00000001.gdbindexes | Bin 0 -> 110 bytes .../a00000001.gdbtable | Bin 0 -> 518 bytes .../a00000001.gdbtablx | Bin 0 -> 5152 bytes .../a00000002.gdbtable | Bin 0 -> 2055 bytes .../a00000002.gdbtablx | Bin 0 -> 5152 bytes .../a00000003.gdbindexes | Bin 0 -> 42 bytes .../a00000003.gdbtable | Bin 0 -> 1021 bytes .../a00000003.gdbtablx | Bin 0 -> 5152 bytes .../a00000004.gdbindexes | Bin 0 -> 310 bytes .../a00000004.gdbtable | Bin 0 -> 13084 bytes .../a00000004.gdbtablx | Bin 0 -> 5152 bytes .../a00000005.CatItemTypesByName.atx | Bin 0 -> 12310 bytes .../a00000005.CatItemTypesByParentTypeID.atx | Bin 0 -> 4118 bytes .../a00000005.CatItemTypesByUUID.atx | Bin 0 -> 4118 bytes .../a00000005.gdbindexes | Bin 0 -> 296 bytes .../a00000005.gdbtable | Bin 0 -> 1803 bytes .../a00000005.gdbtablx | Bin 0 -> 5152 bytes .../a00000006.CatRelsByDestinationID.atx | Bin 0 -> 4118 bytes .../a00000006.CatRelsByOriginID.atx | Bin 0 -> 4118 bytes .../a00000006.CatRelsByType.atx | Bin 0 -> 4118 bytes .../a00000006.FDO_UUID.atx | Bin 0 -> 4118 bytes .../a00000006.gdbindexes | Bin 0 -> 318 bytes .../a00000006.gdbtable | Bin 0 -> 263 bytes .../a00000006.gdbtablx | Bin 0 -> 5152 bytes .../a00000007.CatRelTypesByBackwardLabel.atx | Bin 0 -> 4118 bytes .../a00000007.CatRelTypesByDestItemTypeID.atx | Bin 0 -> 4118 bytes .../a00000007.CatRelTypesByForwardLabel.atx | Bin 0 -> 4118 bytes .../a00000007.CatRelTypesByName.atx | Bin 0 -> 4118 bytes ...00000007.CatRelTypesByOriginItemTypeID.atx | Bin 0 -> 4118 bytes .../a00000007.CatRelTypesByUUID.atx | Bin 0 -> 4118 bytes .../a00000007.gdbindexes | Bin 0 -> 602 bytes .../a00000007.gdbtable | Bin 0 -> 2504 bytes .../a00000007.gdbtablx | Bin 0 -> 5152 bytes .../a00000009.gdbindexes | Bin 0 -> 112 bytes .../a00000009.gdbtable | Bin 0 -> 2135 bytes .../a00000009.gdbtablx | Bin 0 -> 5152 bytes .../a00000009.spx | Bin 0 -> 4118 bytes .../a0000000a.gdbindexes | Bin 0 -> 70 bytes .../a0000000a.gdbtable | Bin 0 -> 222 bytes .../a0000000a.gdbtablx | Bin 0 -> 5152 bytes .../a0000000b.freelist | Bin 0 -> 4440 bytes .../a0000000b.gdbindexes | Bin 0 -> 66 bytes .../a0000000b.gdbtable | Bin 0 -> 3270 bytes .../a0000000b.gdbtablx | Bin 0 -> 5152 bytes .../a0000000c.blk_key_index.atx | Bin 0 -> 471062 bytes .../a0000000c.gdbindexes | Bin 0 -> 308 bytes .../a0000000c.gdbtable | Bin 0 -> 286183 bytes .../a0000000c.gdbtablx | Bin 0 -> 35872 bytes .../a0000000d.gdbindexes | Bin 0 -> 86 bytes .../a0000000d.gdbtable | Bin 0 -> 598 bytes .../a0000000d.gdbtablx | Bin 0 -> 5152 bytes .../NCH_ES_WATER_LOGGING_HAZARD.gdb/gdb | Bin 0 -> 4 bytes .../timestamps | Bin 0 -> 400 bytes .../a00000001.TablesByName.atx | Bin 0 -> 40982 bytes .../a00000001.gdbindexes | Bin 0 -> 110 bytes .../a00000001.gdbtable | Bin 0 -> 7773 bytes .../a00000001.gdbtablx | Bin 0 -> 5152 bytes .../a00000002.gdbtable | Bin 0 -> 2055 bytes .../a00000002.gdbtablx | Bin 0 -> 5152 bytes .../a00000003.gdbindexes | Bin 0 -> 42 bytes .../a00000003.gdbtable | Bin 0 -> 2905 bytes .../a00000003.gdbtablx | Bin 0 -> 5152 bytes .../a00000004.CatItemsByPhysicalName.atx | Bin 0 -> 4118 bytes .../a00000004.freelist | Bin 0 -> 20824 bytes .../a00000004.gdbindexes | Bin 0 -> 310 bytes .../a00000004.gdbtable | Bin 0 -> 466094 bytes .../a00000004.gdbtablx | Bin 0 -> 5152 bytes .../a00000004.spx | Bin 0 -> 4118 bytes .../a00000005.CatItemTypesByName.atx | Bin 0 -> 12310 bytes .../a00000005.CatItemTypesByParentTypeID.atx | Bin 0 -> 4118 bytes .../a00000005.CatItemTypesByUUID.atx | Bin 0 -> 4118 bytes .../a00000005.gdbindexes | Bin 0 -> 296 bytes .../a00000005.gdbtable | Bin 0 -> 1803 bytes .../a00000005.gdbtablx | Bin 0 -> 5152 bytes .../a00000006.CatRelsByDestinationID.atx | Bin 0 -> 4118 bytes .../a00000006.CatRelsByOriginID.atx | Bin 0 -> 4118 bytes .../a00000006.CatRelsByType.atx | Bin 0 -> 4118 bytes .../a00000006.FDO_UUID.atx | Bin 0 -> 4118 bytes .../a00000006.gdbindexes | Bin 0 -> 318 bytes .../a00000006.gdbtable | Bin 0 -> 2818 bytes .../a00000006.gdbtablx | Bin 0 -> 5152 bytes .../a00000007.CatRelTypesByBackwardLabel.atx | Bin 0 -> 4118 bytes .../a00000007.CatRelTypesByDestItemTypeID.atx | Bin 0 -> 4118 bytes .../a00000007.CatRelTypesByForwardLabel.atx | Bin 0 -> 4118 bytes .../a00000007.CatRelTypesByName.atx | Bin 0 -> 4118 bytes ...00000007.CatRelTypesByOriginItemTypeID.atx | Bin 0 -> 4118 bytes .../a00000007.CatRelTypesByUUID.atx | Bin 0 -> 4118 bytes .../a00000007.gdbindexes | Bin 0 -> 602 bytes .../a00000007.gdbtable | Bin 0 -> 2504 bytes .../a00000007.gdbtablx | Bin 0 -> 5152 bytes .../a0000004f.gdbtable | 19 + .../a0000004f.gdbtable.FDO_OID.gdbtabidx | Bin 0 -> 8192 bytes .../a0000004f.gdbtable.cdf | Bin 0 -> 1109 bytes .../a00000050.gdbindexes | Bin 0 -> 70 bytes .../a00000050.gdbtable | Bin 0 -> 531 bytes .../a00000050.gdbtablx | Bin 0 -> 5152 bytes .../a00000051.freelist | Bin 0 -> 4440 bytes .../a00000051.gdbindexes | Bin 0 -> 66 bytes .../a00000051.gdbtable | Bin 0 -> 757 bytes .../a00000051.gdbtablx | Bin 0 -> 5152 bytes .../a00000052.band_index.atx | Bin 0 -> 4118 bytes .../a00000052.blk_key_index.atx | Bin 0 -> 4118 bytes .../a00000052.col_index.atx | Bin 0 -> 4118 bytes .../a00000052.gdbindexes | Bin 0 -> 308 bytes .../a00000052.gdbtable | Bin 0 -> 3000 bytes .../a00000052.gdbtablx | Bin 0 -> 5152 bytes .../a00000052.row_index.atx | Bin 0 -> 4118 bytes .../a00000053.gdbindexes | Bin 0 -> 86 bytes .../a00000053.gdbtable | Bin 0 -> 598 bytes .../a00000053.gdbtablx | Bin 0 -> 5152 bytes .../int8.gdb/a00000001.TablesByName.atx | Bin 0 -> 4118 bytes .../filegdb/int8.gdb/a00000001.gdbindexes | Bin 0 -> 110 bytes .../data/filegdb/int8.gdb/a00000001.gdbtable | Bin 0 -> 403 bytes .../data/filegdb/int8.gdb/a00000001.gdbtablx | Bin 0 -> 5152 bytes .../data/filegdb/int8.gdb/a00000002.gdbtable | Bin 0 -> 2055 bytes .../data/filegdb/int8.gdb/a00000002.gdbtablx | Bin 0 -> 5152 bytes .../filegdb/int8.gdb/a00000003.gdbindexes | Bin 0 -> 42 bytes .../data/filegdb/int8.gdb/a00000003.gdbtable | Bin 0 -> 1039 bytes .../data/filegdb/int8.gdb/a00000003.gdbtablx | Bin 0 -> 5152 bytes .../a00000004.CatItemsByPhysicalName.atx | Bin 0 -> 4118 bytes .../int8.gdb/a00000004.CatItemsByType.atx | Bin 0 -> 4118 bytes .../filegdb/int8.gdb/a00000004.FDO_UUID.atx | Bin 0 -> 4118 bytes .../filegdb/int8.gdb/a00000004.gdbindexes | Bin 0 -> 310 bytes .../data/filegdb/int8.gdb/a00000004.gdbtable | Bin 0 -> 12875 bytes .../data/filegdb/int8.gdb/a00000004.gdbtablx | Bin 0 -> 5152 bytes .../data/filegdb/int8.gdb/a00000004.horizon | Bin 0 -> 32 bytes .../data/filegdb/int8.gdb/a00000004.spx | Bin 0 -> 4118 bytes .../int8.gdb/a00000005.CatItemTypesByName.atx | Bin 0 -> 12310 bytes .../a00000005.CatItemTypesByParentTypeID.atx | Bin 0 -> 4118 bytes .../int8.gdb/a00000005.CatItemTypesByUUID.atx | Bin 0 -> 4118 bytes .../filegdb/int8.gdb/a00000005.gdbindexes | Bin 0 -> 296 bytes .../data/filegdb/int8.gdb/a00000005.gdbtable | Bin 0 -> 2071 bytes .../data/filegdb/int8.gdb/a00000005.gdbtablx | Bin 0 -> 5152 bytes .../a00000006.CatRelsByDestinationID.atx | Bin 0 -> 4118 bytes .../int8.gdb/a00000006.CatRelsByOriginID.atx | Bin 0 -> 4118 bytes .../int8.gdb/a00000006.CatRelsByType.atx | Bin 0 -> 4118 bytes .../filegdb/int8.gdb/a00000006.FDO_UUID.atx | Bin 0 -> 4118 bytes .../filegdb/int8.gdb/a00000006.gdbindexes | Bin 0 -> 318 bytes .../data/filegdb/int8.gdb/a00000006.gdbtable | Bin 0 -> 263 bytes .../data/filegdb/int8.gdb/a00000006.gdbtablx | Bin 0 -> 5152 bytes .../a00000007.CatRelTypesByBackwardLabel.atx | Bin 0 -> 12310 bytes .../a00000007.CatRelTypesByDestItemTypeID.atx | Bin 0 -> 4118 bytes .../a00000007.CatRelTypesByForwardLabel.atx | Bin 0 -> 12310 bytes .../int8.gdb/a00000007.CatRelTypesByName.atx | Bin 0 -> 12310 bytes ...00000007.CatRelTypesByOriginItemTypeID.atx | Bin 0 -> 4118 bytes .../int8.gdb/a00000007.CatRelTypesByUUID.atx | Bin 0 -> 4118 bytes .../filegdb/int8.gdb/a00000007.gdbindexes | Bin 0 -> 602 bytes .../data/filegdb/int8.gdb/a00000007.gdbtable | Bin 0 -> 3626 bytes .../data/filegdb/int8.gdb/a00000007.gdbtablx | Bin 0 -> 5152 bytes .../filegdb/int8.gdb/a00000009.gdbindexes | Bin 0 -> 112 bytes .../data/filegdb/int8.gdb/a00000009.gdbtable | Bin 0 -> 2221 bytes .../data/filegdb/int8.gdb/a00000009.gdbtablx | Bin 0 -> 5152 bytes .../data/filegdb/int8.gdb/a00000009.horizon | 1 + .../data/filegdb/int8.gdb/a00000009.spx | Bin 0 -> 4118 bytes .../filegdb/int8.gdb/a0000000a.gdbindexes | Bin 0 -> 70 bytes .../data/filegdb/int8.gdb/a0000000a.gdbtable | Bin 0 -> 820 bytes .../data/filegdb/int8.gdb/a0000000a.gdbtablx | Bin 0 -> 5152 bytes .../data/filegdb/int8.gdb/a0000000b.freelist | Bin 0 -> 4440 bytes .../filegdb/int8.gdb/a0000000b.gdbindexes | Bin 0 -> 66 bytes .../data/filegdb/int8.gdb/a0000000b.gdbtable | Bin 0 -> 2748 bytes .../data/filegdb/int8.gdb/a0000000b.gdbtablx | Bin 0 -> 5152 bytes .../filegdb/int8.gdb/a0000000c.band_index.atx | Bin 0 -> 4118 bytes .../int8.gdb/a0000000c.blk_key_index.atx | Bin 0 -> 4118 bytes .../filegdb/int8.gdb/a0000000c.col_index.atx | Bin 0 -> 4118 bytes .../filegdb/int8.gdb/a0000000c.gdbindexes | Bin 0 -> 308 bytes .../data/filegdb/int8.gdb/a0000000c.gdbtable | Bin 0 -> 779 bytes .../data/filegdb/int8.gdb/a0000000c.gdbtablx | Bin 0 -> 5152 bytes .../filegdb/int8.gdb/a0000000c.row_index.atx | Bin 0 -> 4118 bytes .../filegdb/int8.gdb/a0000000d.gdbindexes | Bin 0 -> 86 bytes .../data/filegdb/int8.gdb/a0000000d.gdbtable | Bin 0 -> 598 bytes .../data/filegdb/int8.gdb/a0000000d.gdbtablx | Bin 0 -> 5152 bytes autotest/gdrivers/data/filegdb/int8.gdb/gdb | Bin 0 -> 4 bytes .../gdrivers/data/filegdb/int8.gdb/timestamps | Bin 0 -> 400 bytes .../lu_4bit.gdb/a00000001.TablesByName.atx | Bin 0 -> 4118 bytes .../filegdb/lu_4bit.gdb/a00000001.gdbindexes | Bin 0 -> 110 bytes .../filegdb/lu_4bit.gdb/a00000001.gdbtable | Bin 0 -> 468 bytes .../filegdb/lu_4bit.gdb/a00000001.gdbtablx | Bin 0 -> 5152 bytes .../filegdb/lu_4bit.gdb/a00000002.gdbtable | Bin 0 -> 2055 bytes .../filegdb/lu_4bit.gdb/a00000002.gdbtablx | Bin 0 -> 5152 bytes .../filegdb/lu_4bit.gdb/a00000003.gdbindexes | Bin 0 -> 42 bytes .../filegdb/lu_4bit.gdb/a00000003.gdbtable | Bin 0 -> 1025 bytes .../filegdb/lu_4bit.gdb/a00000003.gdbtablx | Bin 0 -> 5152 bytes .../a00000004.CatItemsByPhysicalName.atx | Bin 0 -> 4118 bytes .../lu_4bit.gdb/a00000004.CatItemsByType.atx | Bin 0 -> 4118 bytes .../lu_4bit.gdb/a00000004.FDO_UUID.atx | Bin 0 -> 4118 bytes .../filegdb/lu_4bit.gdb/a00000004.gdbindexes | Bin 0 -> 310 bytes .../filegdb/lu_4bit.gdb/a00000004.gdbtable | Bin 0 -> 15189 bytes .../filegdb/lu_4bit.gdb/a00000004.gdbtablx | Bin 0 -> 5152 bytes .../filegdb/lu_4bit.gdb/a00000004.horizon | Bin 0 -> 32 bytes .../data/filegdb/lu_4bit.gdb/a00000004.spx | Bin 0 -> 12310 bytes .../a00000005.CatItemTypesByName.atx | Bin 0 -> 12310 bytes .../a00000005.CatItemTypesByParentTypeID.atx | Bin 0 -> 4118 bytes .../a00000005.CatItemTypesByUUID.atx | Bin 0 -> 4118 bytes .../filegdb/lu_4bit.gdb/a00000005.gdbindexes | Bin 0 -> 296 bytes .../filegdb/lu_4bit.gdb/a00000005.gdbtable | Bin 0 -> 2071 bytes .../filegdb/lu_4bit.gdb/a00000005.gdbtablx | Bin 0 -> 5152 bytes .../a00000006.CatRelsByDestinationID.atx | Bin 0 -> 4118 bytes .../a00000006.CatRelsByOriginID.atx | Bin 0 -> 4118 bytes .../lu_4bit.gdb/a00000006.CatRelsByType.atx | Bin 0 -> 4118 bytes .../lu_4bit.gdb/a00000006.FDO_UUID.atx | Bin 0 -> 4118 bytes .../filegdb/lu_4bit.gdb/a00000006.gdbindexes | Bin 0 -> 318 bytes .../filegdb/lu_4bit.gdb/a00000006.gdbtable | Bin 0 -> 263 bytes .../filegdb/lu_4bit.gdb/a00000006.gdbtablx | Bin 0 -> 5152 bytes .../a00000007.CatRelTypesByBackwardLabel.atx | Bin 0 -> 12310 bytes .../a00000007.CatRelTypesByDestItemTypeID.atx | Bin 0 -> 4118 bytes .../a00000007.CatRelTypesByForwardLabel.atx | Bin 0 -> 12310 bytes .../a00000007.CatRelTypesByName.atx | Bin 0 -> 12310 bytes ...00000007.CatRelTypesByOriginItemTypeID.atx | Bin 0 -> 4118 bytes .../a00000007.CatRelTypesByUUID.atx | Bin 0 -> 4118 bytes .../filegdb/lu_4bit.gdb/a00000007.gdbindexes | Bin 0 -> 602 bytes .../filegdb/lu_4bit.gdb/a00000007.gdbtable | Bin 0 -> 3626 bytes .../filegdb/lu_4bit.gdb/a00000007.gdbtablx | Bin 0 -> 5152 bytes .../filegdb/lu_4bit.gdb/a00000009.gdbindexes | Bin 0 -> 112 bytes .../filegdb/lu_4bit.gdb/a00000009.gdbtable | Bin 0 -> 2175 bytes .../filegdb/lu_4bit.gdb/a00000009.gdbtablx | Bin 0 -> 5152 bytes .../filegdb/lu_4bit.gdb/a00000009.horizon | Bin 0 -> 32 bytes .../data/filegdb/lu_4bit.gdb/a00000009.spx | Bin 0 -> 4118 bytes .../filegdb/lu_4bit.gdb/a0000000a.gdbindexes | Bin 0 -> 70 bytes .../filegdb/lu_4bit.gdb/a0000000a.gdbtable | Bin 0 -> 280 bytes .../filegdb/lu_4bit.gdb/a0000000a.gdbtablx | Bin 0 -> 5152 bytes .../filegdb/lu_4bit.gdb/a0000000b.freelist | Bin 0 -> 8536 bytes .../filegdb/lu_4bit.gdb/a0000000b.gdbindexes | Bin 0 -> 66 bytes .../filegdb/lu_4bit.gdb/a0000000b.gdbtable | Bin 0 -> 1545 bytes .../filegdb/lu_4bit.gdb/a0000000b.gdbtablx | Bin 0 -> 5152 bytes .../lu_4bit.gdb/a0000000c.band_index.atx | Bin 0 -> 4118 bytes .../lu_4bit.gdb/a0000000c.blk_key_index.atx | Bin 0 -> 4118 bytes .../lu_4bit.gdb/a0000000c.col_index.atx | Bin 0 -> 4118 bytes .../filegdb/lu_4bit.gdb/a0000000c.gdbindexes | Bin 0 -> 308 bytes .../filegdb/lu_4bit.gdb/a0000000c.gdbtable | Bin 0 -> 16203 bytes .../filegdb/lu_4bit.gdb/a0000000c.gdbtablx | Bin 0 -> 5152 bytes .../lu_4bit.gdb/a0000000c.row_index.atx | Bin 0 -> 4118 bytes .../filegdb/lu_4bit.gdb/a0000000d.freelist | Bin 0 -> 4440 bytes .../filegdb/lu_4bit.gdb/a0000000d.gdbindexes | Bin 0 -> 86 bytes .../filegdb/lu_4bit.gdb/a0000000d.gdbtable | Bin 0 -> 598 bytes .../filegdb/lu_4bit.gdb/a0000000d.gdbtablx | Bin 0 -> 5152 bytes .../filegdb/lu_4bit.gdb/a0000000e.gdbindexes | Bin 0 -> 66 bytes .../filegdb/lu_4bit.gdb/a0000000e.gdbtable | Bin 0 -> 294 bytes .../filegdb/lu_4bit.gdb/a0000000e.gdbtablx | Bin 0 -> 5152 bytes .../gdrivers/data/filegdb/lu_4bit.gdb/gdb | Bin 0 -> 4 bytes .../data/filegdb/lu_4bit.gdb/timestamps | Bin 0 -> 400 bytes .../rat.gdb/a00000001.TablesByName.atx | Bin 0 -> 4118 bytes .../data/filegdb/rat.gdb/a00000001.gdbindexes | Bin 0 -> 110 bytes .../data/filegdb/rat.gdb/a00000001.gdbtable | Bin 0 -> 420 bytes .../data/filegdb/rat.gdb/a00000001.gdbtablx | Bin 0 -> 5152 bytes .../data/filegdb/rat.gdb/a00000002.gdbtable | Bin 0 -> 2055 bytes .../data/filegdb/rat.gdb/a00000002.gdbtablx | Bin 0 -> 5152 bytes .../data/filegdb/rat.gdb/a00000003.gdbindexes | Bin 0 -> 42 bytes .../data/filegdb/rat.gdb/a00000003.gdbtable | Bin 0 -> 1039 bytes .../data/filegdb/rat.gdb/a00000003.gdbtablx | Bin 0 -> 5152 bytes .../a00000004.CatItemsByPhysicalName.atx | Bin 0 -> 4118 bytes .../rat.gdb/a00000004.CatItemsByType.atx | Bin 0 -> 4118 bytes .../filegdb/rat.gdb/a00000004.FDO_UUID.atx | Bin 0 -> 4118 bytes .../data/filegdb/rat.gdb/a00000004.gdbindexes | Bin 0 -> 310 bytes .../data/filegdb/rat.gdb/a00000004.gdbtable | Bin 0 -> 13164 bytes .../data/filegdb/rat.gdb/a00000004.gdbtablx | Bin 0 -> 5152 bytes .../data/filegdb/rat.gdb/a00000004.horizon | Bin 0 -> 32 bytes .../data/filegdb/rat.gdb/a00000004.spx | Bin 0 -> 4118 bytes .../rat.gdb/a00000005.CatItemTypesByName.atx | Bin 0 -> 12310 bytes .../a00000005.CatItemTypesByParentTypeID.atx | Bin 0 -> 4118 bytes .../rat.gdb/a00000005.CatItemTypesByUUID.atx | Bin 0 -> 4118 bytes .../data/filegdb/rat.gdb/a00000005.gdbindexes | Bin 0 -> 296 bytes .../data/filegdb/rat.gdb/a00000005.gdbtable | Bin 0 -> 2071 bytes .../data/filegdb/rat.gdb/a00000005.gdbtablx | Bin 0 -> 5152 bytes .../a00000006.CatRelsByDestinationID.atx | Bin 0 -> 4118 bytes .../rat.gdb/a00000006.CatRelsByOriginID.atx | Bin 0 -> 4118 bytes .../rat.gdb/a00000006.CatRelsByType.atx | Bin 0 -> 4118 bytes .../filegdb/rat.gdb/a00000006.FDO_UUID.atx | Bin 0 -> 4118 bytes .../data/filegdb/rat.gdb/a00000006.gdbindexes | Bin 0 -> 318 bytes .../data/filegdb/rat.gdb/a00000006.gdbtable | Bin 0 -> 263 bytes .../data/filegdb/rat.gdb/a00000006.gdbtablx | Bin 0 -> 5152 bytes .../a00000007.CatRelTypesByBackwardLabel.atx | Bin 0 -> 12310 bytes .../a00000007.CatRelTypesByDestItemTypeID.atx | Bin 0 -> 4118 bytes .../a00000007.CatRelTypesByForwardLabel.atx | Bin 0 -> 12310 bytes .../rat.gdb/a00000007.CatRelTypesByName.atx | Bin 0 -> 12310 bytes ...00000007.CatRelTypesByOriginItemTypeID.atx | Bin 0 -> 4118 bytes .../rat.gdb/a00000007.CatRelTypesByUUID.atx | Bin 0 -> 4118 bytes .../data/filegdb/rat.gdb/a00000007.gdbindexes | Bin 0 -> 602 bytes .../data/filegdb/rat.gdb/a00000007.gdbtable | Bin 0 -> 3626 bytes .../data/filegdb/rat.gdb/a00000007.gdbtablx | Bin 0 -> 5152 bytes .../data/filegdb/rat.gdb/a00000009.gdbindexes | Bin 0 -> 112 bytes .../data/filegdb/rat.gdb/a00000009.gdbtable | Bin 0 -> 2221 bytes .../data/filegdb/rat.gdb/a00000009.gdbtablx | Bin 0 -> 5152 bytes .../data/filegdb/rat.gdb/a00000009.horizon | 1 + .../data/filegdb/rat.gdb/a00000009.spx | Bin 0 -> 4118 bytes .../data/filegdb/rat.gdb/a0000000a.gdbindexes | Bin 0 -> 70 bytes .../data/filegdb/rat.gdb/a0000000a.gdbtable | Bin 0 -> 820 bytes .../data/filegdb/rat.gdb/a0000000a.gdbtablx | Bin 0 -> 5152 bytes .../data/filegdb/rat.gdb/a0000000b.freelist | Bin 0 -> 4440 bytes .../data/filegdb/rat.gdb/a0000000b.gdbindexes | Bin 0 -> 66 bytes .../data/filegdb/rat.gdb/a0000000b.gdbtable | Bin 0 -> 2748 bytes .../data/filegdb/rat.gdb/a0000000b.gdbtablx | Bin 0 -> 5152 bytes .../filegdb/rat.gdb/a0000000c.band_index.atx | Bin 0 -> 4118 bytes .../rat.gdb/a0000000c.blk_key_index.atx | Bin 0 -> 4118 bytes .../filegdb/rat.gdb/a0000000c.col_index.atx | Bin 0 -> 4118 bytes .../data/filegdb/rat.gdb/a0000000c.gdbindexes | Bin 0 -> 308 bytes .../data/filegdb/rat.gdb/a0000000c.gdbtable | Bin 0 -> 779 bytes .../data/filegdb/rat.gdb/a0000000c.gdbtablx | Bin 0 -> 5152 bytes .../filegdb/rat.gdb/a0000000c.row_index.atx | Bin 0 -> 4118 bytes .../data/filegdb/rat.gdb/a0000000d.gdbindexes | Bin 0 -> 86 bytes .../data/filegdb/rat.gdb/a0000000d.gdbtable | Bin 0 -> 598 bytes .../data/filegdb/rat.gdb/a0000000d.gdbtablx | Bin 0 -> 5152 bytes .../data/filegdb/rat.gdb/a0000000e.freelist | Bin 0 -> 8536 bytes .../data/filegdb/rat.gdb/a0000000e.gdbindexes | Bin 0 -> 66 bytes .../data/filegdb/rat.gdb/a0000000e.gdbtable | Bin 0 -> 537 bytes .../data/filegdb/rat.gdb/a0000000e.gdbtablx | Bin 0 -> 5152 bytes autotest/gdrivers/data/filegdb/rat.gdb/gdb | Bin 0 -> 4 bytes .../gdrivers/data/filegdb/rat.gdb/timestamps | Bin 0 -> 400 bytes autotest/gdrivers/openfilegdb.py | 373 ++++ doc/source/drivers/raster/openfilegdb.rst | 97 + .../openfilegdb/gdalopenfilegdbrasterband.cpp | 1840 +++++++++++++++++ 311 files changed, 2331 insertions(+) create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000001.TablesByName.atx create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000001.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000001.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000001.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000002.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000002.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000003.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000003.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000003.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000004.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000004.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000004.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000005.CatItemTypesByName.atx create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000005.CatItemTypesByParentTypeID.atx create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000005.CatItemTypesByUUID.atx create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000005.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000005.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000005.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000006.CatRelsByDestinationID.atx create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000006.CatRelsByOriginID.atx create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000006.CatRelsByType.atx create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000006.FDO_UUID.atx create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000006.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000006.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000006.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000007.CatRelTypesByBackwardLabel.atx create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000007.CatRelTypesByDestItemTypeID.atx create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000007.CatRelTypesByForwardLabel.atx create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000007.CatRelTypesByName.atx create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000007.CatRelTypesByOriginItemTypeID.atx create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000007.CatRelTypesByUUID.atx create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000007.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000007.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000007.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000009.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000009.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000009.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000009.spx create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000a.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000a.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000a.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000b.freelist create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000b.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000b.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000b.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000c.blk_key_index.atx create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000c.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000c.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000c.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000d.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000d.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000d.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/gdb create mode 100644 autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/timestamps create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000001.TablesByName.atx create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000001.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000001.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000001.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000002.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000002.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000003.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000003.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000003.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000004.CatItemsByPhysicalName.atx create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000004.freelist create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000004.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000004.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000004.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000004.spx create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000005.CatItemTypesByName.atx create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000005.CatItemTypesByParentTypeID.atx create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000005.CatItemTypesByUUID.atx create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000005.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000005.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000005.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000006.CatRelsByDestinationID.atx create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000006.CatRelsByOriginID.atx create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000006.CatRelsByType.atx create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000006.FDO_UUID.atx create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000006.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000006.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000006.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000007.CatRelTypesByBackwardLabel.atx create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000007.CatRelTypesByDestItemTypeID.atx create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000007.CatRelTypesByForwardLabel.atx create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000007.CatRelTypesByName.atx create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000007.CatRelTypesByOriginItemTypeID.atx create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000007.CatRelTypesByUUID.atx create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000007.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000007.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000007.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a0000004f.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a0000004f.gdbtable.FDO_OID.gdbtabidx create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a0000004f.gdbtable.cdf create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000050.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000050.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000050.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000051.freelist create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000051.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000051.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000051.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000052.band_index.atx create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000052.blk_key_index.atx create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000052.col_index.atx create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000052.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000052.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000052.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000052.row_index.atx create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000053.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000053.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000053.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000001.TablesByName.atx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000001.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000001.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000001.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000002.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000002.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000003.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000003.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000003.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000004.CatItemsByPhysicalName.atx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000004.CatItemsByType.atx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000004.FDO_UUID.atx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000004.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000004.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000004.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000004.horizon create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000004.spx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000005.CatItemTypesByName.atx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000005.CatItemTypesByParentTypeID.atx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000005.CatItemTypesByUUID.atx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000005.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000005.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000005.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000006.CatRelsByDestinationID.atx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000006.CatRelsByOriginID.atx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000006.CatRelsByType.atx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000006.FDO_UUID.atx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000006.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000006.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000006.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000007.CatRelTypesByBackwardLabel.atx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000007.CatRelTypesByDestItemTypeID.atx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000007.CatRelTypesByForwardLabel.atx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000007.CatRelTypesByName.atx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000007.CatRelTypesByOriginItemTypeID.atx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000007.CatRelTypesByUUID.atx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000007.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000007.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000007.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000009.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000009.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000009.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000009.horizon create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a00000009.spx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a0000000a.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a0000000a.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a0000000a.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a0000000b.freelist create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a0000000b.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a0000000b.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a0000000b.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a0000000c.band_index.atx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a0000000c.blk_key_index.atx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a0000000c.col_index.atx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a0000000c.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a0000000c.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a0000000c.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a0000000c.row_index.atx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a0000000d.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a0000000d.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/a0000000d.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/gdb create mode 100644 autotest/gdrivers/data/filegdb/int8.gdb/timestamps create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000001.TablesByName.atx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000001.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000001.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000001.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000002.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000002.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000003.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000003.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000003.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000004.CatItemsByPhysicalName.atx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000004.CatItemsByType.atx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000004.FDO_UUID.atx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000004.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000004.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000004.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000004.horizon create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000004.spx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000005.CatItemTypesByName.atx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000005.CatItemTypesByParentTypeID.atx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000005.CatItemTypesByUUID.atx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000005.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000005.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000005.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000006.CatRelsByDestinationID.atx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000006.CatRelsByOriginID.atx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000006.CatRelsByType.atx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000006.FDO_UUID.atx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000006.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000006.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000006.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000007.CatRelTypesByBackwardLabel.atx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000007.CatRelTypesByDestItemTypeID.atx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000007.CatRelTypesByForwardLabel.atx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000007.CatRelTypesByName.atx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000007.CatRelTypesByOriginItemTypeID.atx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000007.CatRelTypesByUUID.atx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000007.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000007.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000007.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000009.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000009.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000009.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000009.horizon create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000009.spx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000a.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000a.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000a.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000b.freelist create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000b.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000b.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000b.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000c.band_index.atx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000c.blk_key_index.atx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000c.col_index.atx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000c.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000c.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000c.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000c.row_index.atx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000d.freelist create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000d.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000d.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000d.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000e.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000e.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000e.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/gdb create mode 100644 autotest/gdrivers/data/filegdb/lu_4bit.gdb/timestamps create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000001.TablesByName.atx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000001.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000001.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000001.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000002.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000002.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000003.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000003.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000003.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000004.CatItemsByPhysicalName.atx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000004.CatItemsByType.atx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000004.FDO_UUID.atx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000004.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000004.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000004.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000004.horizon create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000004.spx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000005.CatItemTypesByName.atx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000005.CatItemTypesByParentTypeID.atx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000005.CatItemTypesByUUID.atx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000005.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000005.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000005.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000006.CatRelsByDestinationID.atx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000006.CatRelsByOriginID.atx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000006.CatRelsByType.atx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000006.FDO_UUID.atx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000006.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000006.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000006.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000007.CatRelTypesByBackwardLabel.atx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000007.CatRelTypesByDestItemTypeID.atx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000007.CatRelTypesByForwardLabel.atx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000007.CatRelTypesByName.atx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000007.CatRelTypesByOriginItemTypeID.atx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000007.CatRelTypesByUUID.atx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000007.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000007.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000007.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000009.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000009.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000009.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000009.horizon create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a00000009.spx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a0000000a.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a0000000a.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a0000000a.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a0000000b.freelist create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a0000000b.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a0000000b.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a0000000b.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a0000000c.band_index.atx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a0000000c.blk_key_index.atx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a0000000c.col_index.atx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a0000000c.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a0000000c.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a0000000c.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a0000000c.row_index.atx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a0000000d.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a0000000d.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a0000000d.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a0000000e.freelist create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a0000000e.gdbindexes create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a0000000e.gdbtable create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/a0000000e.gdbtablx create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/gdb create mode 100644 autotest/gdrivers/data/filegdb/rat.gdb/timestamps create mode 100755 autotest/gdrivers/openfilegdb.py create mode 100644 doc/source/drivers/raster/openfilegdb.rst create mode 100644 ogr/ogrsf_frmts/openfilegdb/gdalopenfilegdbrasterband.cpp diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000001.TablesByName.atx b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000001.TablesByName.atx new file mode 100644 index 0000000000000000000000000000000000000000..0f518f7a271fcec8734e7d6022bcea79e95ac7e0 GIT binary patch literal 4118 zcmeH~X%2!g5QWEmzXLZj;sQiPgBZorcvQbZiHS=T4A>uS^V%|WdA!aP5D^&xO#?6l zdff+g&;}jQ1TD}74NwC;kS8r9l8NkOOu3gMbtqHuspqNnfIX%iVOhyWJaRxEk87WM zClJX@oRadLpUe77qxpsCV6J}IKAW|_9-6tRre%x=hWJ`pzEou1j9-vO!5UwmS6orrJSZJXYe=4XTE?nqK2x-%%ff6AN2yTW^r!_cDLX(1h8z0p(qj4oz z2R<0SbM9T-7JwePBm1OzZSU)M^DS&H?0*kv!HW<8ZQ+R+3M*)aAFk1zAcLWppun1u zLd_u|aLW8J42E*Pt!lj*salz0Nr?l}wMj5cH#v6!Csw<1sp?FbL@z4q`=n!i#1+mQ z(exUVZcFX#Iqjgai8fqPCC3{4pDS+emb2vS&3bmi8c5fBCEY31f_J?*IS* literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000001.gdbtablx b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000001.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..936805dcc60b1daa9ab37cc3afecd8c2f3fff3e5 GIT binary patch literal 5152 zcmeI$F%5t)5Jur^NJnN|AO;yV!GedHAVC8v2twGoH{gNcHTmDv=^Jl|h>{y~HP>>n zkxmYBl8ZcK;{Qw*vXY(L#HWA)3Mim}0tzUgfC36Apnw7jD4>7>zZT$(_nq=y7b6FI literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000002.gdbtable b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000002.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..a0af90eaae1fb1738ddead12a36441ef8292c88d GIT binary patch literal 2055 zcma)7-*3|}5H{*c$JBM>=L-l0#>7CQsAyD!Hz!THh%}iJM;g3DrcFkqCP7ImHvV{o z?KWwh#Dz$f9Q*G3zB`}KEdam~89o_pGK#OWyPTb@7U=#Co!TX$U4{6>AOIn_1`aVw$t)&wf=(#gU`UYu?2c3ox(0GO zuI?fA3LT*zzBKa#yqM?G4Cgoq=e{&e;vl?Uq&N?gxKA~#Jr9)&XhQ|5wx?P41fm@m zY3IkB&B0i;CMvSOu1xlnB>I{9S?14Pa)yVcp@S?Nj@7$*Y=p7@oU`i6h9!Hv#WT)g ze*&*OO*d4}(Z8v!0g@$dzh^^-D&{dhQJX!Q29Lxr7#2x+MU%o-q};#Br65TooL90! z4|mhKmX|g|xS(eDIeFgMST3keDHZvbB774@i)eiYS@^qp5G=`ctV-|%&7hXcT4c>w62nN@a;TA-8V{K>>}pstJ{f{uzx zwLPMCxx@M@yVvWi+c+c2B|**yRJ90~?_BEwV8tnL66iN6&m&&HZqj>EQP1vYlw>%Z zvWArTxfI6is_^+f6(ZK!A$ulRq>T!y*LmZ~=!;3p`sW+_TcHP+nbl)MpW^1U@a>I0 KE8>8gpP0Wjd{iF* literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000002.gdbtablx b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000002.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..7c12c568195050346285f43f1164067d9ce86e7c GIT binary patch literal 5152 zcmeI$uMNUL97pkkmOm2^Jhm2##9$eqEP*Rw1rkOeL9hS=;0Ue>8dF=-gapO!jZptC z`F_laOP;(er8I~wVx!n8mY&eUoVyj2aD)qdU^)!8P{9j+u+D-5Jm3qX*gyq0c!S3R7O;Q?EMNf(Sik}nuz&?DU;ztQzycQNS%9xS#`yy^ CN)wa- literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000003.gdbindexes b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000003.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..58df68d525b47a895d5876a8bf5f437a90afc3f0 GIT binary patch literal 42 mcmZQ%U|?VaVmAgC27iWl22UW(z#ss`|Nk=rNhTnMhyegseFSR& literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000003.gdbtable b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000003.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..e7801afe8f9dcc65cd832f2d7058bdefb285f806 GIT binary patch literal 1021 zcmbtSzi-n(6n;(GPyv6%O$=7#A8`^dfR#9IDlU#}2ijPXWzuVE6giS(=$e6{3j-Sq z5-S@Edl3?U0RI648w^Zz2omouiITc43n%&B-S@tG_wM^#1b_m5KehmNFs{a*;$n4g z30z>@=4<5Lg+d#e0Hy6h$paUBu;2h^B<%93)Pe}cFa?G%6nA$vk;4UY>i`a+2MNTG zAv4eFFOmK~ICROOdCnbP+lLAEz#zq55*Xr2+;O{qV}{<8`Oe=xf4yZ}j@|GAf>Zd! z_Cm#|SBTU!{T>ZSa|80adzS08n*mwVs#>kCXtlB|sYbo5>NQo>^r|)(NL{y0Ev#Ut zj3uY>@PtTmSsqBePTR-2Y=pRglv+jCR72Gj!>DL@l=lU*<8vNh_E^N(%d#o<&o0Cs z&OSfP?_d4=`0n?Y^ZWDnzrNC^-3P14e*&1lDRy0FUp%yF;vC$wazF233)j|B?X}boQ-=-*!3y@zW@ozF_H;g_NbkD4V1NH8x$7 zTE685q!o=ZXGPO2PDVu1Wj?sxS2&$XnwepFcH!$a M{^tE&`J0b_0pL*i`~Uy| literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000003.gdbtablx b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000003.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..2f80ed4fe5fed90691cce6424c11c3787cc56315 GIT binary patch literal 5152 zcmeI$u?+wq3rnmoN4hP&=SoH)4+8~(OVoEK6eWDtb^RSWo63ES7toeSo8PJF)92>_q`Xu-zKjB literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000004.gdbtable b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000004.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..5b77f9f2642051b325ced0ef262a50e682bfa599 GIT binary patch literal 13084 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 T2oNAZfB*pk1RfK}KQK*x_D%u~ literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000005.CatItemTypesByName.atx b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000005.CatItemTypesByName.atx new file mode 100644 index 0000000000000000000000000000000000000000..c01991aa9c1f739839627ac073f4a862b763c4cb GIT binary patch literal 12310 zcmeI2TW`}q5QQh)@09zUn*I}%65yc-H4!{FX#^2zQrRh#f5T7ZJ9Z+gmirQ^*?E|? zPQ1Hm>*F&sdzr17SqEGKm%&ArzK!gsjqS(|Y+(~xneCSK11soX&`x<>ETlry*v zUV;of2JgTVa39eg497_WUF61MWkcvhz>5>#v{PUFIUDHn$&e@|2qp z%PzbQQR|TUH@Hsiq||Pge&tjqHcP6cH@#}hRy8j=HF>StAMBK<7-Pi(Th2>sdeXE9 zH)ZZlh+xHR7Y|hCu1M;2EA=vK^7EvfSoW~#w2a`~iDI>Os(r+&8cCFi&6oMvFJ0%=#0YG=GSTvd0<$Guz`XZeu>rzR#vxpUdbyO3dQ?x86g!0=4{Q-Yd>cU-K5f zUrSFL;c4=_9{aI)EdGo%^_Dj#J z&d#(tC^$`<*fG}jF%yg5F|kpN&Fvbe>}~S%X5oroj*2=Boe?Rutv%RS{0im}t^YI% zrnF_-v*Uc3P4*f^dwG?s;2wAjloL>H;3nvR8{iGN2G%Y8(sO>}Ie*I;O5W|`VsN&&#>eXG)sPs`h}HGi?T^o!6>&z}T-H?2yk> zccXtsK5@?aLkyL_(-`CH`VKGcR0~)t1L|!CZR6LLlS-xPy7Nx_UMLU>gaV;JC=d#S U0-->yz`v|RLnrwl_9Ex3YPn2)mu2XG9}a1PgS2QP36 z%Uq-SESlF}7K?q;Xt<WFE@_i=U(&RF$QuDkq)6(K5~ZIq{O_GpAfJ$@_yA)Z*ff`!p^W3F zr>CcXf$Mq={0Mvx{0002`~iFpyahf3o&&!D&wyWmuYo^-m%x?hci<=BZ{Q8^EARvG z3iuBA7Wf4C8TbAZuWT!;;P1@=qDZ(`RM#5gs4C!ahb-(pFRJ$6T=}4HlX|PY4 zGTEeY=Yfj&o~i{htQaH`jl8r$Ir=<}t;ihrn-yd8GEkx|^i>eQTcfu2+JQ>*1ftlg zhbqOH$Ti(5datz3i4wauZ3R(s#R*ER*-2VAFj0i&uqK;ZbiSgLyLC2VRw3~K6EZiM z^Rm@^_BF34s~ybHH3bQ`PHu+yR#GsR>|%(r2CA=~xqvV0NwMY7^kL;lJ3QoyvU--` zvx_A;$m$IV6+BhjBPv%!xy>Dn#=}u@Txq5_^-{ohl|H-QZ!V=rCc4Sv=%!)D6N~t) zNc6<)iYR3}^%8Dje({SrC_r^hZ|;+qGNKl%LwAbW;E83>QQ2vYrLuMG;pct}F1S3Y zKoE4VK_d_DG>*3soCnUqXa$50f=3#` z33*3iMwli7-G``++8~tn`z;0cRU5HXhK>p*GK5;}Gv}&07+%dDQa~TU#^}qysxPmU zn~&Do2Hb}z*IwEgG^|6Rz7)9{lV;W^wb&FmCx=U`ds21>UxuOyfbf2?M z9TvoM!V~S{-mypu7DATBPOzGgYw8yG{&FGD#44Unr#1GT>y&=YxW+y>45$W{QhI>Z zSV>$sdc!GD61%;XOT%`PRE0tUs^(_I@7f36idrz^!Ors5L)sUd(5sMh?X)%zRE*?# zMLF2SE>eTG@C3X)&mM$GEQUeMihVp2-pIswft`?oLkSxZwAbRS6{~ykbxsy|#OZ8< z+8d#x*usI}+oSJ=l=qMMci=JmgMkMF4+b6#JQ#Q|@L=FWG4SsHr}68F{QbWG*ZqGX C^)T81 literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000005.gdbindexes b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000005.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..bc887093f340449a4e4f40224ff3a487814c09a8 GIT binary patch literal 296 zcmZQ!U|`?@VmAgC27iWlAWmY)Vn}63W+-9s1d1^*2mtZ_|BOJA1Bfx@g@B^Y42fX% zB|x3I3?U4a3dhbTnfm;XF>qb^dg{nc|bd0W}}-3 X@&j&lgxu%{v>_L00|Nu98xi6F*S08% literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000005.gdbtable b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000005.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..9a9af20d7cd137a873aadf7dfc281674dd1a68f8 GIT binary patch literal 1803 zcmZWp3rtg27`~L!f&%4bT->r%9u=H(2r|Ze0i~3pv{1@4V`@&zp|G)pg z-+z4xf`~-xGqn8B@;-~j?p>_sfWH^=dmsMSUqk4L5&{wif+JK!20@5~0$~AB;Qq5n zCJf9a0Kp&xg%CQTlCYrt91>j$)#%cU4hZ3ixww3mFUYrl8CX}6{?$q9iDUTONK@Ct z*qT{$PLoXi+j(HD7VBu*q^E5kBJ7O~X)m)PlT_c0ui2ThCojZT7FQu@->y8TxpY*L zK7AxOhh_n3kY)f5u#n@!CtH)sixT^?97DGCyJIihz$s!KWEenF2?$%L@T)M#3|uhQEb)%3{a}Dagbt3nuY1{NmYxw!ZH&Rbbi8{F zUW~*e%bP0>aYnRd<;9aR^8H+TP^M8W#&h}WXbWwkjg`>|e6RY^tC;MIsmGQ*{o&5i zXeAEz)sa*T!i}Ewt9yB1Mf#zyH(ehSCpMs?d5=)VK{KB{w)6I^<#mku@b12Y%{zXa z#)3#u(deLk^Ro4*p~H%FgaZWi=>|d zlNCxcXtT$1jRMDLm!MeLx_4|72x~9HQ-tOlc0n`X=9?Nv;awJc24FQ3reEH6H+(In zv^!QlyYfAmf^&n?^eo2!1E&Le6XXs3!e=1qmSQ&h?8OSf$iCxYc!XdrU^&Q0CHrXmCg2f^M+wRW$mAwz zCeWjDct(JYwXCZ5&F+d^^>m`}xC>VllnDW6WuUuTyw!0_;mSmATdhP;$!m7FhS8+f zCrGW^@6U*EXuz8f3_ln~*ipFu)mTn@OaC`qRK6WYy9dK#cK!{h%2@7#b8C8&aF9_a z^v2@^iC4SFhkTO8)Anl{TVE(zK7Z?vcb^RPwqXi?3lXRW2C|Ui=FI4B?f=bgwyyvH literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000005.gdbtablx b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000005.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..cd82d543ccb66794b44f5b39d1c0a802f7c6dda7 GIT binary patch literal 5152 zcmeI$p$)=797gej77`>OX|ON`9iRf(0?hyw2tx2ozzU>_)OUeeG*t*j;Qv-Yze~QK zIdRF8m!*_Ov2|<`yT(!jZRg11$4k3uk!32MQkF x!3iGlg4s0Kz!C1ygU13Euz&?DU;ztQzycPqfCVgI0Sj2b0v7nE0RMZ8^8;7~5x@Wd literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000006.CatRelsByDestinationID.atx b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000006.CatRelsByDestinationID.atx new file mode 100644 index 0000000000000000000000000000000000000000..8fcc74c8b7c77738f89b80bc0c62de67dde26def GIT binary patch literal 4118 zcmeI#%?W@o41m$NjJJUO0o!A>aVc?kts=NV5xzp2ufDiE zrJ{a|Rii75CJRaDU_M)Mw$^;~*o>J7AbqbxrC&7TT(-h5u0Hq1Rwwb2tWV=5P$##AOHaf{8?bWum11l-|G|cPzhTA literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000006.FDO_UUID.atx b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000006.FDO_UUID.atx new file mode 100644 index 0000000000000000000000000000000000000000..c2af0446a52f34d95c63269478d853f58062e311 GIT binary patch literal 4118 zcmeI#Q3`-C2!P>rncf6jQhT0Tmx}IQD}rt?f`8!DC*^xHgb;=++I#cU@%IqeYl#*Y yuTpGU#ne^utVwK3C9Aqs^P|UR%tQbI1Q0*~0R#|0009IL__M%xU;W?9zttxT{|OcV literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000006.gdbindexes b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000006.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..c608a88be082bd48fb5821f6bacf48df11c2495d GIT binary patch literal 318 zcmZvXu?oUK6a+_6v526JAEZG@C5Wj-MI<6B#>TIYbHordSM0&Zv3dAtL4iW?c4G0C6X92N+;_M6@{tQVBSq!NR$qXe7o(wJw3~Ve+ zETIgc5DvE*6HrAFLncEy5a&Szxzt$LT!31NVOoF!EFlb)3bd^TFzhfWny&2}TxH23Mei{+?4)c`JV9fWu}E|K1Heem*b#`u4Jj zTy$FR@pqfj@0OQc6Bb_b)nDz{XHooU-oiIGSAVRy^TcG0^DcK8zttC>9|!pq0AhnV ARR910 literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000006.gdbtablx b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000006.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..431307d13c60381f56be9a7c0c765046b36cb27f GIT binary patch literal 5152 zcmeI$!3h8$3-MA9039Z2oNAZfB*pk1PBlyK!5-N L0{;rUe_$^>!R-Lc literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000007.CatRelTypesByBackwardLabel.atx b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000007.CatRelTypesByBackwardLabel.atx new file mode 100644 index 0000000000000000000000000000000000000000..e8d13d4268fe83d1407dc2b65e9207219d447817 GIT binary patch literal 4118 zcmeI0Yfghe6opTHzh5h0FKuf4qek68i>Sm}8j3OQ#-;k*8Brlt5|aWZFgY+opnN@d z?r?)7ogmxx&;~k2YiJv-q8{2oD`*oPp#x<1t)pFZh_=u^TD0}`pjZ>#D$r1g>qSZ# zUFeQ|)2$EFRGCIlP8B)MGkQiFaW>O4w2=m`Khm6jRwMOqeBa${%EzDh%*miJ$BIt0 zov%Evd{$iR6%WG}xLD>(T-IKZ1v7FvhS74w=S}(AVkDL`8u08n1UBc4BzF1SmenQD zB~+>73SpalxHTuTew8_eKhYEWjO)zLK<94s!ueE>jF;J}_{uDG$N0bVdH#@yPKe`> z_>Vv1yv(@fzg^{D+xdzsP5!UyJ68GkwNf`jTE%z6%u8v$zNyc*{7Kb(39F)2GKuba z>*e>=b@Wk7amgw>s|5YKtXTa8>O*MNpRL?=wncSycfNC=bD(qJFAlr~J#I7QUjeND E4zpV$O8@`> literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000007.CatRelTypesByDestItemTypeID.atx b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000007.CatRelTypesByDestItemTypeID.atx new file mode 100644 index 0000000000000000000000000000000000000000..e2a366ba5cc108100c23bff01ed10d9689bb4dec GIT binary patch literal 4118 zcmeI0J8oqm3_xFIGBf$iH;YJT32b9bX)tW+>h68~Ql*U2Bn6g^L}3ejOaqt8_#0g7AA@hf&tS*<4IHR$ZEAzHGy%IfXhQ*> z6ML2{wfgyKvudhTH8s$J1K1Kln}~p8j%lU0zU(|cYnE~<=3YR3DKKIMT{eK$FrU#H zsho!j)s<(=Wh4ex5in+hJi4N4ry+D6MkzuaQZx>{#Gv_#mDo~jM!xVoh9~KRI#g{A zJW2+$$TF7NGIniJ-kRkqCE;q&YKhaAA+aM8hBbL#ng|1IB@+rT!k4QvD3z&5ZAYy;cCHt-P! Oo?l-5*O&k6Ux5G0>!F_j literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000007.CatRelTypesByForwardLabel.atx b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000007.CatRelTypesByForwardLabel.atx new file mode 100644 index 0000000000000000000000000000000000000000..5e8ff3f66ab21946662225b300e6e2b212e73baf GIT binary patch literal 4118 zcmeI0TTa427=;gB@vf|3_JT3-!C=GCmPp z=Rfm@AW1#&u?GjR0~c@t=iu)T;TSrw4ZE-f`_P3`ID;eDbo5oK&_WN&IL{Sy$=ug- zO*n^^$A8pU>gChVw%rS=`gcuLCn#)Rn-yH4#d&+xjG6W3%j`LccdSg8>(1gTr3-TE z#Qv4~8`Ko=i~?)AXFfuswZ<@F*EgVk8Sc5e1P$~Qg=_1|-BM2{&*^d+OKLmjdKQV= z)gH+4?-8Zmxnq>Y)1#BVb(WgUhIBaBHRCg9yiwhsd-}H?+2oydo=N)ZxK+J3`B(L% n&dQJ-QPBHh>UrPwZ~9%G){_Itf#g6F2i`-6$IREi0G@vUny(M% literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000007.CatRelTypesByName.atx b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000007.CatRelTypesByName.atx new file mode 100644 index 0000000000000000000000000000000000000000..88108cf1ae90e2b7cb0e9adccc4fa424dbe9032e GIT binary patch literal 4118 zcmeH~TTa6;5JjiF->(&PFH}MN0D^7+N`Q#AK~53sZdfX3>{iu~k{=W&A4znTsV!%2 z?#y^x5s?d^*ACbRJ+KK5z!um5yWj+zf<15q&cQY~28ZAbEZ>D$x(4znGf+s%^IE2o zVCmSWI4nEgm)N)UANb`mmS?!R=xoYgZ~5KIi`>KP1BRK5(9zD9*VjE_{VTr*nG@wv zSlwmX1nEQ8mGSTBsN^!d3i+Fmv1?J7cn1 z`KsoZvlHrWom0Q_DEYQx7Ocek58a}D-J?&P&WPe<(Rtg{*@Avm-Awhg^S{-v|99~3 z&`?h>Q`FS6OGebEqTTMV{H&i@@UXtys&dPjW)&RzeQk_(%Bc-IvW<-8*M=S0@+%#v YyMa!DPJvE=e<<+X@3C63{O7Lr512t6ng9R* literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000007.CatRelTypesByOriginItemTypeID.atx b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000007.CatRelTypesByOriginItemTypeID.atx new file mode 100644 index 0000000000000000000000000000000000000000..33cb6e8c58da52fafbf79da14948e5f013ec333b GIT binary patch literal 4118 zcmeI0Nv<6s3`Jl1zFkCSmcTtjz_6*OxA(XrW&ZUQDHD*6RD+9+Pt}CF-EOy^$+cc5 zACou9r{qiWGI^VPOWr5%lJCjav1>7w2Sb|lJSFuc))jchs zUz739ykkZ+XREeauT-C!$`U1y)FAyKa8rWOSAj}v?^#-e(c}KKRJcmP-JqE`uuO#( zNT3n5ms)Iao<5p0)-@o+v!m5?&z>_96^`PyY<=8!z8_k;L1p%=RT-SBz+BW^q6dwf t@gJt1|COJe$G|ag3>*W;z%g(P90SL|G4MYO{Q7fyzi#k<{{mdkzX7e~pg{lt literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000007.CatRelTypesByUUID.atx b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000007.CatRelTypesByUUID.atx new file mode 100644 index 0000000000000000000000000000000000000000..5a6033e77a5944a0e7635ef11d4238fb6d836af6 GIT binary patch literal 4118 zcmeI0Nsinw3`INhJRTxD0-{Js)RGjXOBL$w`PD!!(3@;*-~qDDGWnmiaXmdfJ^coc z<12Uzet_@b7kJ$J4Bmiu;3s$wK7cRa75E5VgHPZaxQ>?_xRvA*;)CkxO4@d(7`|}2 z>WEWWWZiE(b}`SO8p5QxlI&zso>u2JJEn5KwU+hZCavH>x}}oa!fLe18!OI@Did$v zPSP5l#lFehjhL+so=40ksxr%BKX{fT>Df-UP><7a%Q034s?IFdcAoddcTc|e(8bBt&&a-@-Z8=cBEz>wN7Llb78_|$e$B)Dbp;h6kUewD%}GeEn&b9 zBl=jR{gKhRkgTN|W%bGEh^burCsrP4oW0&}YgH3_jHC<`iIrPHT1J;5JkBonTb5dL zi{M2EtX5rQ7Kd7J^q6f#;yq@;MMfx|B~Vo-1>%xT44 z6kA98;hxBdDm(n_eq(_=^AcFTi8{7n6mdQvd(} literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000007.gdbindexes b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000007.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..2a98c93adab6374c865fccc1045125683eb4a05b GIT binary patch literal 602 zcmaixVGF@f7=<5Fd_a6e{>-eEl9l)@8wnelmHhfSvslCKT4%fW-MP=X_q|P^Ejie@ ztR;^lJA7iMszFamlA7Kv>GywM)d?H<7g`sv6;HpM-C2SERT9zjtKJvR}JS&t08k_L_S#SGPiCL9r)!ePGS$2L{*xBp87Q98>^fzOCcb^M9L=6l&bTe9J!33G; z-+;EQ$l)n+2!zlSv}A;h|L1}uOeH#pM#uyrNV^~e3m_m6iqYRdLhqc;GpU&=m0#!0 z*jT%z>(|+(H%hKXrtL0OF46>r|KV)78Mp0efyOycd#8o4Y*nZTp5RDcXU-;VR?0|- z_9W5dNfRb6%@qGJ#*96?3$R|ud?8CJtpvy6bQ;MNkUUEnwIsipVK>I)*a)5?tkxn- zL(qhU-f6sPfgBk(bST?_P&xCl*d+kA{*yA4>whq}h@7Uj^E17GoSNzhrSSq+^U%`ng5efK{ zTa2_0V)$?;whNrXTPiyzOnW}%%%9GGdZMoMcV*i*nIFtmR`4mIYKwN9l+zSnPI|`1 zSQ$%^KQ>dPY&?O0h6AE;XV_dC4e2vW3!jczz@~tK7PS6=OgLiQhSOB#$}UMba_qse3mJ+ zGCPAXyB{bXtZ?ZjQ$ln4fv+5i#c?M(qDl9Tm>!Ajz^@1P0we9c_D z{>O?zfNuV#^Yv97{krO`j+IT63clB6c>A=qCQg$6(eX)03LU{|;)(ymJrj1&_b*>2zT{5AJqLIA25 literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000007.gdbtablx b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000007.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..a6247b20b804a5252a76b15e6148c0f313174788 GIT binary patch literal 5152 zcmeI$s||oa6hzU-|6@q76hJ*_D!@?$0*66U6MZ0PftfB4cayn+WYv+IMMR?YTA_9R zIh-+7E~m|u&52w)oxzuP=XI7+xt+OE9%rrnz^+5I_I{1Q0*~0R#|0009IL OKmdV12>A8S^Z5YvO9-|A literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000009.gdbindexes b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000009.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..8211a233625ef9fe771fc3784e2a0b85f3984089 GIT binary patch literal 112 zcmZvTISRla00buo1dBi(B|@4gVxRxNLMMe?idlwbcLfefL^7}38eG!*Vs0|qQ=iLZ Rn`soPpGSjT;Clu6TMVar3+Vs= literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000009.gdbtable b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000009.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..2eb61193296fa56cbef627c2d02487e19a5109a4 GIT binary patch literal 2135 zcmeHIOK4L;6g}xn`dKJ0bmK~ji>jgIHA!m)vClS*mFDAn34&5WP17WrMrfig%}VM{ z+;ml_Zlt(TK@bYHQg`k|1l{=AxKa!v6{+I6Gf7kW$X|97Sjo%LT405+j8mTPM7ZuUXW^{8fY#>5z# zm&i6XiV$6M2vdy=TM;*qM;bYW?1P|*e-cspCu)2%$kzNN8|`H>PJq$;Dz?O}tLCSz z5modJQKba&Vnmg!5=0wk>=Lf4eJLqrBWj%HOqps=(@!(E$lX%h^|lJaFue*~FFO*d z?QoumS(QhS9P6!~QJfgfaiS_}nOZcEM8l1(Iocrk6v5zp!yOR>$xbp&uPdU}m($sg-X{8ta#fj8%RK873MYn1qQ%H9Pn9IY#$ImTapA2i zMl;q~kAYPOe424ys4{#sH=z2N72RL{wY<~&+Cuep7Z$z-TwHcRMeOH&TYTmGW?i_1(qCNsq_%<<7fjE3WF|?T1UQ`L9c> z`zxP6ygKmU-jnJr28pe_-8r0DZFn6#xJL literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000009.spx b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a00000009.spx new file mode 100644 index 0000000000000000000000000000000000000000..6d236bdee5ca53a730e4092d11e2b31f1f938a7d GIT binary patch literal 4118 zcmeIuu?YY$3sk5#sx(8MC^8tlT8R)KK!5-N0t5&UAV7cs0Rq1Z+&b^#bThjF D7A^ox literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000a.gdbindexes b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000a.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..240144ef31ae76a6e98f8311d7c20618a5efc563 GIT binary patch literal 70 zcmZQ%U|`?{VmAgC27iWlh9ZVUhGK>ihEyOco*|PV1t=!~#Q*;@0!dCF#-;)QV_FK? literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000a.gdbtable b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000a.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..84260044f7fd8a69aa25095c242a57556814a0ee GIT binary patch literal 222 zcmZXO%?g505QV?&UNLOpW3&$+ptTPXks22yL*2ORNqdnN*E3;@=)hryIX}!6*od>} z#V=m#a#*M7&UTp{yMYTM6Ac4r0yU&A+5etfI@xYAD&@&**+;I51Re?pdhV(_saCS} h^%5=8sMYK(WQ8wfcpn{4O=Be*qF~SeA;#o$TLArO9X|j7 literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000a.gdbtablx b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000a.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..b48fa99a8c383a6940493d0467ea03bf4adbb29f GIT binary patch literal 5152 zcmeI$!3h8$3-MA9039Z2oNAZfB*pk1PBlyK!5-N L0{;rUe_$^>%s&9K literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000b.freelist b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000b.freelist new file mode 100644 index 0000000000000000000000000000000000000000..e8d168993dd6b1bc9ca98c1c407945338b3ca845 GIT binary patch literal 4440 zcmeI$u?+wq38>+*ZTnU I`9gjj3YHG5RsaA1 literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000b.gdbindexes b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000b.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..0449ced6cb124413cd552d9da2bd6506f217b832 GIT binary patch literal 66 wcmZQ%U|`?@VmAgC27iWlAa-K#VsK?}W(Z;M1d1^*2mtZ_|BOJA1Bfx@0s18eMNJ?A;+ zciK=QYJuW)5VZuGpSm{M>SG%wfMMJYVLEasorX~+4WT^Bq70(&uojVJ^d8NmSu};p zs1WTEnoI>$gc_q-QrIk-OVi;M6<&%y#ZZ$lf*esTAA}O!Lv(6|@_R&Y)E`kY`S50f z7P;}p{We*t3U&=|DyU=8K9QwNkc;U5ie9+*xeWE>~)abG@WkVB&onG^i* zVK>l%&O}`xo&w4Rc_tj)Av3d(x+zE z6cji1-h+~Y9Z$tBdf_4Blkx1>yo>p=n`0#J4sxQe2d5wbg`@cpfzOBsF@1=b3_tgI zUOe8dZ1^3L<5a}aaXv(Iqs_71C@JXkZ}Z|^=2O-@ub${1kI^nfOhxTQ+l`uM#_Qxl z@I7y4qvZ_e$|>h>kWX4ZdOPGJb^qtFW1kqyJMrv{ur&j3Cibv7E1X>)W}bwacT0DS zv*JS^r^G6y**KSza2lJ>X_j0MQ)mwS`10}a6(kn`e@Yv1&K+@qq^7|Wp^SHArJvcW z;N>uPNrY)TJ+f%5V=GJ;8$t#{`7!(jK2FXvYhDr4DR{&xQfH7znP}2tWs93S61gLSK0m6+)%ytq;mZ%JZ*VMjiiE(+6pt)5SWNj{&IE9TVeqqCTBRusXgUrcOe&LC(Hj90pam^e&Lw`%8SbbqOY|L z3jb&_Ov|yYK}dU=nC9-W8sRD@gUqM*l&=f^Hpjc?K(-+%Uh5GQvCe zZwnu^ieg%kOC}1VG=SA6d57qTS_x!@CuzU%us&iBf6!UjszZ~o^`Pm($ge*awky?f zQ4Kn-z3ZabJM_vEcG?pZcBxq-j2T@ebXFD$d#;v^vtq|B5dF&9GU2PCaxknu7Y>T< zw|Sv3ZscxZd_Dg!Kvw^l1fgqiobqn8(7k=C&{Gv5Ox&XLO{)D#bn?~BLT?M5uP?ez zwD0P5Ve0ZL!nAI3p;&42V^tshO!=4QC+$W+^|!j7w9Y3)r_Nq1^zGC*-YauOd%GSH zrW8&PCfDv%cK%hEG+)=3__N%sR$}1_u_roi2tDf>m8PxG{o^j>1pZq{mg`ES@|{J( z{#!Jk37_;99p75l`P#zEqWj*c5ccWi680YN6UNTeb@!~kDcV`B{bN#8cNyPC>>V3* zU)rx+Cc0g8gRs@g!@`#BZVN-g^O@%UT-gWnXIQT2J3FPnxjAs6=> z%JlL52h~1b(n4moQ9UC{IZZ%jN>FvaUpdNVmdznHEpd~P-NO82SHKRoUBi;Gsn$pS Fe*jqG>TUo4 literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000b.gdbtablx b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000b.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..7d097093679d8345678fd3b207c3b5bea237923f GIT binary patch literal 5152 zcmeI$p$z~a3`M~bK(IP2O}haSaZR54>STLFv}|QFd$==lv>%2h1PBlyK!5-N0t5&U TAV7cs0RjXF{3lTVz^d*7TeJZ# literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000c.blk_key_index.atx b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000c.blk_key_index.atx new file mode 100644 index 0000000000000000000000000000000000000000..a97b98ff470085e77a912ef1c5b0b9be51ac967c GIT binary patch literal 471062 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®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 CH1PQV literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000c.gdbindexes b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000c.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..031560094ed7aa017e5d9ded12d9f35a4f074c60 GIT binary patch literal 308 zcmaKm%L>9U00c)te4yYr`2xLo@h%mer&A@Y_e)E}b!iADd{@UI-FWsSnKrU2m=gx!NSKQCcrfpvF?EPUJHA?yV fOQlrY{!(3|qr#R%rjROJ^X{d?s?e-Rqc(g1!*D1E literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000c.gdbtable b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000c.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..21e020fd37bf0c9c6ed792243b7824578dad6911 GIT binary patch literal 286183 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 E4|Sucod5s; literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000d.gdbindexes b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000d.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..142048fb144f5d25724c60c5755bed6d000a6f30 GIT binary patch literal 86 zcmZQ%U|ihEyOc3CPZ4NCApw0!ao20U-YWpAks%0x>?7 E06fPI3jhEB literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000d.gdbtable b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000d.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..b94f6bb43e15e05f98e49432669ead014d4559d9 GIT binary patch literal 598 zcmaJ5tj~-6k$@F!0@VVm__~>JH{!Wn}=LdwXYN!AJ literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000d.gdbtablx b/autotest/gdrivers/data/filegdb/NCH_ES_WATER_LOGGING_HAZARD.gdb/a0000000d.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..b9e6995672ad410de3c0d9bb1af2d2e6c0e71adf GIT binary patch literal 5152 zcmeI$!3h8$3gzMAT=~vI zQ(D67&^t!SE@eG3aZJ1t&+7~O7r%4|5~t6$6Wcx{)a2V*USGI<I4uq~{HJK##V4(^AIFb+3^UD9kO9~W!cW3w%ntx9F8#g63lNoLb|jZUA2(VVb8 zH#QND+BfjuXtvd-tM)m4Iz|(-rR$G>cHSSzA1SlPjemCP8%lIU3{~_=*2!-AG(-$x zeYQUy;+{sl`xV(*9@gi2JjsZmiayC}b`^a(+lP*b!RB%8`v2v?u9K(p4C|laJNOb_ zgg@YIcnxNOId)Gt8TNxS;2<~`4u^|i9uzI%`*ZI4DtC1q=yEr`==vJJCkXrJ^hsV{ ztLT%wzJ~SbxW0z<>Bz{!`fSD{S^K)RU#l-$`?3*Mv%iP^(~*(+vpJe|qPKVV^_iT@ z&Bp5O{rdf?us(^|V)?V{)HkTyKVP3l|NPm2d9Nk*be6BLPosbHl-ECBpGN<5^cj9V zFN*oweXRqn19}}WbNu(1ly^1j8{k2>2iC)_@E9zGVK@PHfiK`=cp6@S-{B|t7G8ya z;C*-t=7L$=_}lQrtaX2WxUTWvtUfnB5kKp9SJ<$BF8|jt{+spB>66S5tN54A5M!2i zSf7sZiLgE$;}cwV#LI1tW(!{95HH3`^wVous)aV$Mh?!Fs!dA+t0qb`QNMPiV9_ zFF2C*C9nXtgEg=Mu7c~~0k|91!7cD8EP;h^JnRgg!$#e4f>(Ej|zH zlZ=qU_0RdIvwdiYe*O3@TfW-j^Q=A_|4P=rZvI()lC`g!KIzCH?eFvLH*|kfOMDR0 z=l96*>ST5Qe0}liWIcWHBZfNqT*MG>{*Iq3wcD)&F&r?@`!}EGH_Ib10=L6)uoHX+ zAHtLH9Q+DDz}N6H`~~mA8!!jVSi;_LDjWc3!69%yxb|oBSNlXKZShA|pY7k{UF(Z_ zz_5Q-U%YF5J$>5Z4_m&W{=Mkzn%|c%-;h4Pe~(uud(#)MPS(>W8Gn@3Kk4u9DA(sQ zZi)HBb@b_MAI?9W?L%V3qE7pjh#2bVvpsUW+UMv0^UaovK`sdI8tX8A@dsJEb@byXfM+&TN zF?0FNGyTl6BYX;*;0bsZeu3}dD|iY1gm>U|m<_wZUT_NR4`;%`P_(%6vGapM`AvW8 zMb&q!u1`AuD)Z0Rm+j%3o1s|GKgs;7+&_u&-#Y%e{6QlBD)-Onix&a+=AX{?A)9}d zm#=L8Rj$wGH}PtppMO=?m#uwO`>I}!tJ6MY^DpaPx=z1;x0f^S?`!h@`T8{FUq$|P z>XV3n%lz~6oBozuwRfwdPosZ+epBs?`+HPT%-`;79cUfU>%cUm+4=v!vHc@_1Fyi} z@E*JggD?~Jfzx0B&W1zb0yqjTg%e?WxD!UfU)=T8&hHE5|3eesW1nV-68TLXeeoj9 z-u%l(m@)GIa{pxWn{s`!`AxY#+5D!uzHII5Z^Y60Zgtv+Y<^??^Ye$!bCLKh@1L)) zGk?&oPc}X;D&NlgHyZu(^DmA5N#{3Z?Zeln(LX((uPkmKzCMlqN%R^1b;7TIt9ZJW z-shiWpKq(}`!U1%vhhlD(XwB%>9(IMwcD)&F&vo6e`4nOo8>$>0xpL6Fa^x#17?63 zCzuZAd4c9NTfh$R348#LL)qf4U&Z6odiu{|eSZIxZ@ta$Df7?QC)L zp6E4)lX0G6v5HT-G+%1f{|BpYIqF7|mC0Iunh~;bp0v3dwPVRLw$`w&{+|6jvZ}uE zWFsm^qU+4+lkzF#c~+m4Pi6W{y<0=gTh4sLg{)We?JuF%#N2QF8$(^%DvUa#c1iTQ zR&?G@-$wMLZP++CuEfRAXnWDQNbC#g^JlZg8*R@!P(`0){?JWd{MmMS|H|US_V29& atplwCtpo8K*fd}=d6VgzyZ&Y|zyAwHfo5_5 literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000001.gdbindexes b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000001.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..b02aa7510589a8e036faa03406cf6d841029f368 GIT binary patch literal 110 zcmZQ#U|?VaVmAgC27iWl22UW(z#ss`|Nk=rNhTnMi17efAql^u>Q2r1Tf#j&mSo@t){ls zhElhBQ@tHks8dx!@?S#CY^sr}Ah4;<)g`0~H33qur{*9(yS4FhIJg;4%G1A#Nl~4j zKu~=SV+J!DFZZv`;8{xD$1s5}ipi*`_R8Zi#_z(ogYj*61V!#aNb1t9JsVz0cYMu)}g^OGqE-G(uJRGvZ+)GUlok1vby z5C;U|yA>?1uKnOa^+5=p9XY|OI6E2_li}*havvumFJ>Y;i!*W-XAEa?>PQwew6mYU z({F*dNqLDfs3k^59Y+BiM*&hCrxxQdDaWai_1EFjVO5OBIP14C=328hX`GzXJh_-= z4RYE@vC_7p)wrTM9aJQxEk$CQ6>-{Dv=&!Xr-O>5w53Q)vm#F0iu!Rybvmd>N?VG= zG%MmX?Mv8>!&ke5t(En)Km0vpXHk#4hr(Hu6Ul-aF>7xuN7ZAP`=MFfA`Im*ti8p} z(_9$p%y`-X2oAz%TQ}R$uH^SH)mKJy3xF~hU~NhL1Q%enHvr%U+W^}2&QW0sfz5sb z0mS&4i1Z|+#Ow))!U-FDslPz z4C9em{UIb;U?i^pJS3XPM1qYNk}hEgSVkj~lX=kiljB5$q7{Z}D;ZGjB?sD=2|`U< zRK9mNZgZ$v`$vLdd6};74rBIv9DgGuYnRd9@*R=LGr?_XN61QqUb!&|OCgy6j2;w^omo4ok3~4 z4pDs9p%ol)Em0D#(-hBj2BqyfM4|oatP1;%B4OnD9QEL4pHQqCe}`bnOHm7Ou0C+T6a$G@J-C=pT$I=o1*j^ z0w1aJ!V!rmk%{uE$so#A$svmCB}k+fq;t@SS5I6fi!h$cM~uk9N-)Q(L7sf?OiH(U60IxW!8jf=0jRUuZrDzRz@)^BK?LoSd9RvC&w5>})LO1_tpA z8GOSmD%{_KCLBgPy3mJ*$Y2r+sLl;GVGmB=B5q0_wgQC)D{K%(TRSHVH(BDgC?BA5I!PzMbLob z=*4Typmb%h4_$bSNffLKcAyjYFo9XruMXPKhYV&=RU90^RXo8sej%?UsKZ`#;0{JH zjgrz}7tUh@U$C?+Xv7)Z#RUGMeofGZK4kC*<>f&$&S4Pmkj3VTpdAnJ6@_bq7W7~Y zbJ$cFv||Y0QBoDOpa)}^!}jW+1H<@%vYOx!uHzMcqoFo9ja$fI77goybW(v-AQeaj eQh`(;6-WhAfm9$BNCi@XR3H`j-vWN?%=rfv5@@vm literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000002.gdbtable b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000002.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..a0af90eaae1fb1738ddead12a36441ef8292c88d GIT binary patch literal 2055 zcma)7-*3|}5H{*c$JBM>=L-l0#>7CQsAyD!Hz!THh%}iJM;g3DrcFkqCP7ImHvV{o z?KWwh#Dz$f9Q*G3zB`}KEdam~89o_pGK#OWyPTb@7U=#Co!TX$U4{6>AOIn_1`aVw$t)&wf=(#gU`UYu?2c3ox(0GO zuI?fA3LT*zzBKa#yqM?G4Cgoq=e{&e;vl?Uq&N?gxKA~#Jr9)&XhQ|5wx?P41fm@m zY3IkB&B0i;CMvSOu1xlnB>I{9S?14Pa)yVcp@S?Nj@7$*Y=p7@oU`i6h9!Hv#WT)g ze*&*OO*d4}(Z8v!0g@$dzh^^-D&{dhQJX!Q29Lxr7#2x+MU%o-q};#Br65TooL90! z4|mhKmX|g|xS(eDIeFgMST3keDHZvbB774@i)eiYS@^qp5G=`ctV-|%&7hXcT4c>w62nN@a;TA-8V{K>>}pstJ{f{uzx zwLPMCxx@M@yVvWi+c+c2B|**yRJ90~?_BEwV8tnL66iN6&m&&HZqj>EQP1vYlw>%Z zvWArTxfI6is_^+f6(ZK!A$ulRq>T!y*LmZ~=!;3p`sW+_TcHP+nbl)MpW^1U@a>I0 KE8>8gpP0Wjd{iF* literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000002.gdbtablx b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000002.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..7c12c568195050346285f43f1164067d9ce86e7c GIT binary patch literal 5152 zcmeI$uMNUL97pkkmOm2^Jhm2##9$eqEP*Rw1rkOeL9hS=;0Ue>8dF=-gapO!jZptC z`F_laOP;(er8I~wVx!n8mY&eUoVyj2aD)qdU^)!8P{9j+u+D-5Jm3qX*gyq0c!S3R7O;Q?EMNf(Sik}nuz&?DU;ztQzycQNS%9xS#`yy^ CN)wa- literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000003.gdbindexes b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000003.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..58df68d525b47a895d5876a8bf5f437a90afc3f0 GIT binary patch literal 42 mcmZQ%U|?VaVmAgC27iWl22UW(z#ss`|Nk=rNhTnMhyegseFSR& literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000003.gdbtable b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000003.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..ea35310fe36849901f958ef3f39ad9ca7550c57c GIT binary patch literal 2905 zcmeH}&x<2P6vyBE*l}?8Bnw`Ig+6&`L(-jJeQ`G?Ju$;}64E{H&V;e(=~QNV%~TJS zo?S;h%)x^{@E~|p@Ze=H9)!JknnCan@FIf9ig*zO_2Mo>@Kqp{>!`c=Jp zRb5r@)8DEU09eC+b{XIT+W5D9aaekK<$JO2!MjUUvr#SEZ3Q3XM%5-6qnK6HO3B%>+DawivYXGFtwycV zRwiM2y->{Pg;ZMAjABa56*NuH<@McNwb`m!CXP_$l(IX%cc7^0RC-t4s@EJGm+qrK za%BqHoUR#KE@K#39lMHo!D;tQ7&v_)vZt@7N>TmRgQyN~e0EK)zw_h04}bmq?AgKH zpTDs7npb1{?_MaJ3>Sp<)yp4OzkTJS=j4US^>efS;#-^LnT7s@6vN>Cm1e84DKctS zFqyeD*>Wth6EI5jbX`%C`8JPva70}e#U+w1`6rpLv5<1+hJL`@9`@1@6~TaBEJh3< z36GR}#HO)nmYrIo-c}s$vi@z#`;=Iedu|wT1;Hw{N|x!Et+uk^_OQ)#`=QVF6*ZR@ zKLOcHOg-S?K@=pnmnjQ5t_9!VcYK#A>NC1DgzdRKN;X_iOaLi13?o1Fj_bG~;cYMhtuHF?)#xcW~m9WLIg>p&@o|(Jtkbd6d{E z{g56CjljNhK7K8e&ir!#ELhAm1l(9ERhm5_vyn^LCx7OZ{I%O`0mMD zKfL$B-=;>Ki!iu9rY3@cEZXiV$@rg}8HxGtaP!-e;O6d_oA@F?ZqU84Mw8O<%YM&y z`3bR)4p2Czg(vQl(4L8FB0dw}9GQ9KJI2&G6CW9mm#l40{-IcVe&>{wlz r33ZW!nYjKtJ+V>% literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000003.gdbtablx b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000003.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..861811b21cfb9bb8b2dbfc76697707978c57e1c6 GIT binary patch literal 5152 zcmeI$yA6Oq3`9Zm7XdvGP!#=#6hO?n45YENPr7u%o2qKa)@;eHejH=+cAhyox8&Xv gM}PnU0t5&UAV7cs0RjXF5FkK+z~2S>3$WMs0rFG=v;Y7A literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000004.CatItemsByPhysicalName.atx b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000004.CatItemsByPhysicalName.atx new file mode 100644 index 0000000000000000000000000000000000000000..c280648d3b4412a92746a8241beda2b422c1b414 GIT binary patch literal 4118 zcmeI$OAdn|6ouixx`OV2E!Z7c+JO;M()XYaGk@NA{uxEMNf( aSik}nuz&?DU;zv4Sl|@OUw^6fEx;eR5f5qr literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000004.freelist b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000004.freelist new file mode 100644 index 0000000000000000000000000000000000000000..273470c5754f576d355addc2b2621a8bf89bd55b GIT binary patch literal 20824 zcmeI(J4@S99LDiSQ?=p+1;MG{=HMmX0-}S1pdz@Gf-Q(34uUVhMeqg=iZ8(nK@{Qz z1;Ihk$;H~zMQjVUh>KG;$sl5UPEha#gn;rr5b~T~!a2z&)9-)&$&-}!7$}i;Bc3o2 zKmY**5I_I{1Q0*~0R#|0;N1z7`5T4)f2>`)FZZOdRVtcrNI8@x9H#rF$Uld8r?mPf zPx{yv$RFLvX{`_a3`1kYQfZYBt?1lgW z2q1s}0tg_000IagfIt=n!f|{!|F5o;#uJ_uJIo$Agv#Rib0vP|knhS?(&2xFwDah| zKmY**5I_I{1Q0*~0R#|00D-q4;Di25{~xXagwLDp=dfnjBiv{3vRA12zJkm=)WRd& OUhw+$Y=4eiulEEk6Y9AD literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000004.gdbindexes b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000004.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..a4f334d7ba2a29501d0c354bfa511e177f638ce0 GIT binary patch literal 310 zcmZ{g!3x4K5CuoEpdjMO4^k1lsGvPd6+y*9!Cw0Hbz&`1q=&bVx0$z_B*0j$ShD4) zPTaY0rev)LQ&rbJ>rnmoN4hP&=SoH)4+8~(OVoEK6eWDtb^RSWo63ES7toeSo8PJF)92>_q`Xu-zKjB literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000004.gdbtable b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000004.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..a20e01c323b9e3c12174ce2760d794d87f5afc6c GIT binary patch literal 466094 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 literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000004.spx b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000004.spx new file mode 100644 index 0000000000000000000000000000000000000000..944cb05feeda2ea02fa3fca1b1b0e88b3eb443f9 GIT binary patch literal 4118 zcmZQzU|?VbVh|97P^08%2#kinXb6mk0EHo-WyrxWMS`V)LSsg?kA}c#2#kinXb6mk cz-S1JhQMeDjD`T!LV&{o)cc2Fkg*^(02DC+@&Et; literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000005.CatItemTypesByName.atx b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000005.CatItemTypesByName.atx new file mode 100644 index 0000000000000000000000000000000000000000..6055e63d1770656a548cfe05268d9c2b1af5ae52 GIT binary patch literal 12310 zcmeI2TW`}q5QV4Q@AvzyhJS)m0z4F+X5HBMR1;FU}O7f6FanhTiTRXW;^Bmz7_N@X{Wr-^WEcbhXSEM zC=d#S0--=C5DJ6>p+G1Q3WNeF70{mlSxw*;_3gTSh59A90iFYW?-h6eUVy9M4!8~; z0p$>`0p$_4K?W{?hu|G}1K!(+eg4vN_WWb&A@#^+?EF*i`kQC>>RiOk7WM;9o^lgn z*@M>sY8`O@4X!ggF16dCUpbYj&66tWO|QnX)twie+Pqfn4|YOSOt4~sEf=LVJ!#s9 zn=*IDM6hDEhX*QiS0weim3o=A`FYY#Ec@7WRz`5{M6pIY-F?KW8cCFi&FlQ^m$LPT z{@i{gX8j3Hnm@!v*<+1>ne9@G+l0^4@3ZOF=Q4T^6SFw`t#?tbKrMfn_lk4d*Sy8= z*V5C*c$)mKPis_r;@O&S@+W&RnzM4z*z9qx6FpzWx zDQ(&H>^NU$lf6dK9$)1?xC!2ZyWlmr3?750;0d?~)-8k5bAIDFf6Ez4-tFV$zw)L5 zyyouyE1~i9hF^OmYrd26&RagGt;G<}%em5LO4`h-_K=w~Z3d^C*Q$5O*smSzh|d#u zqkl#|al!gS43)pr7~|{u4lnIg3s@=x>TL$?;@6dvN~P+$^G^I;C=d#S0--=C5DJ6> Tp+KX+zif+!PVIF{ucG#U=-trb literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000005.CatItemTypesByParentTypeID.atx b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000005.CatItemTypesByParentTypeID.atx new file mode 100644 index 0000000000000000000000000000000000000000..c1c65c4f79f274f03bc92a0bca51bea2531295f6 GIT binary patch literal 4118 zcmeI$$8Lo%5Cu@ud+)t0vKz?_d%QHZ=cf?=o=cRs$ts&fiJnI~fW*ka6-B1&y6zR` z+JZG$hYi?;J=lk1IDu2RfJ?Z7TeyQqc!FnmfgL!2LpXzTcz}DDkGBHXunOC71UIk= z%Uq-SESlF}7K?q;Xt<WV4e%QH4EPiH1^62H3iuXy4*U-M3j6^42>cCv0{jeo4}1gs z1-t-02Yv#616~5JfIoomfM>vmUU2*I6unnknNi}@rmY}Kt~f!7H9JY`1}2Ko9M) z-(4(8BC9tfRPa>ojHp}@6Hzqynid!w73j&2%e%vi*^ zVxuQ!S41gW)=RjB`Nc2hpa9i1y}3_b%7|L54&5nggC~|jM`foqmdep_hUfhjT=4j& z0zuHd292FKX{5Iiyc5pBXa$50f=3#DS8c>n89FMM*df&7(6A1L`cmX-OuBcCQj1N2bM|m)^-S8`!Iz=z5QkRGMRxI865a1v zrw$9^IpK+Raqn0p1q&fd<7}|HA=lI+@crdNo*S!}ow7CdzE_rh&A7%%Tn1DFODR3T zYOGCMIC{e^P&Rh^D3^xqCaDUA1XRt#h(EOt{3&X|jESA)qe33#aHGo@Q70$ zgW3n7qu9cQ;K!q%g_QS?@*lus=m!H21|AGN7P|IEO<|K8NExAhNi-q-m( D3sErI literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000005.gdbindexes b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000005.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..bc887093f340449a4e4f40224ff3a487814c09a8 GIT binary patch literal 296 zcmZQ!U|`?@VmAgC27iWlAWmY)Vn}63W+-9s1d1^*2mtZ_|BOJA1Bfx@g@B^Y42fX% zB|x3I3?U4a3dhbTnfm;XF>qb^dg{nc|bd0W}}-3 X@&j&lgxu%{v>_L00|Nu98xi6F*S08% literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000005.gdbtable b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000005.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..57f1fb88b85f57331b03802205658cce6fae613b GIT binary patch literal 1803 zcmZQ(U|>)J;wT_y1!5TBW{0pepaLLy77&{eM05BvBr#+$q%tHklrVTQxG*rVu`scO zGK4}nTxu*l0St)@ML-pKKoubjl?(+yHdrN4lEn`wnF|zPU|9e*R~JZjtektuuIIaJ zcZ|eSx##<~y!~k2#?q7KvBXPeheo$eGEY!qUV5s6OMY%*W}ZG!!{YR7aVzI6a%s@K z8U4weWoMGExkdG2$UXuaQkFw>GRD6zOCwMfAwu_UoLwZs6Z#j~)uWb2)9r%slg zMSez04LaxD(rEaf>)Wa3_h@5cdM&?OYGO%g5zrQdp4W;kH=C{syH9CxHt^*T_=ce; zD77FbGdU5aM+Iolwc5MCRlT-5%#wO@_@cOqJGvg`kjy+#$fApD%(?Kt;Ge4Bgqrnz zU2#W0vqRmX3RHV_Eo;k-RRdeGIN`$f>Tq9ir1I5R&FrVA9yKbcZ*L`*;CI#)UO;sSwcjF908uFOk@ zY0v{|KzBX5HN1{V#U(|F$t59)Nja$?&zQcdu4wb}_uTCfz&%YQIs)CH{7{d>YypMY zXS^jf>xvg)SW%~);_aeX~UX)s#npcuo0*X)PoW$Z{P~>D9H!MCBpX|Bof$;l3 zoOg@SHSz`|7A2?VD7Ymi0j&h3_^M3l+uN+OoMtS_d%on@y36PeWDm*D&q>O!&;qLE z|5tphp~&B%)kvW<_QoGJbhVuDaMJ{;z8q9omiAWFxxK`R*Dc+T9bGj?NPa;+FuhkA z0~HH(oAu}|tn-;>aq^g7=F5Kc!bZqBKP5FqAuKVc6jtPb{L5KUT%gm+>@`nG=gq6= z*}u@^oEKJpfI|orAy2lY+~L2o*Llm=Ps*)#K7^vXO3)*-xFjDKIEgt5zKKQIsYU8Q zUFgn1*Tn`Y1wl&l?J7Q>N)>T!7CmR#dh7B=^kRa|Ek7qEwFngU=B1`(DaPwPmh7vr zsnOVa8a=kyLsE;1fQ2i_-5pFzuFhjhbMI-qXP+oExe(n2g2Bldsky-90M8SkV12lp zZCmuOInFI}^5&>C23Mo&5(-Mq0Vkp2jLZT^G6FfQZ|N03`6OqDsc&2Pce(!AgRYGo xTEv11ko44P(e1zQ`A+WMvbjV#crLnHNC5)X07@6=Wh#0AaRj9n=a&MLDF8l9wyyvH literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000005.gdbtablx b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000005.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..ab1f2d304e3aaf59397f6bd74d841677978eda2e GIT binary patch literal 5152 zcmeI$p%KDB7zN==E>HnF0!aZ8ln{xIpny~mhoJye3>Jq*VKEWu0G+|o0ROgt-kW)! zIdL;9FQ=4>*fzF`onz?%AE>!IzyLRxp)7+2dbq+2IR_0KVT1{aD%e90BfQ`XJ09=g w0#8_AvkqD~!5!Y$kgrOM zlS2`8(i-a~b>tD9K@-PPF{$Dzby$B~)%C22fYhz1Yayd0Q$IF*Asvf9t~U9UZ9&2K zO~&dp;{@%&V~rSHecVyf)Yc%=n20i^h^7ctb>X_K-BGD6tlekf1VJ8hEkP&OZr;jR z1=TakKY`BLE<&=w*F4jxHXEn!l&pa$(Y7l}DswONn1dqIXdU6GVm=i;^48)~l^U0V zvj(V2WzaF)4xa1|R)u%(b5G(#H6pu{$=P%YZ?}a;@3ZdS`^riIb-))|@Q|d@e6rWW zYa*)KmhD~0kAT(Oh;nGOst4Zh)SDj?6C*PSCQU3> z*lCKW$vrokrp*UlJzi)|f$vB4vI}H5^>I0OJ(`E=t40;>2y{c+*}WiX5qn%vR@U@N zdri17740Pi!!Tn&&`isGT-lGtI7ylnq@CWNW5EzB56dpCEo^{QXE_}#)g|`~VPi~I zn5<63>~YJBDC2Ae3bl$slHvE9V45;ehR(KXfcstQ(!`3WEXasw;d?$<1KVKcQ1JM; zPSx~*$+2iqyKGo~C738&)@)k`BO}VKTlCN_FpX4L-mz_{?`~yanMgs#qZNf3(+;`4 z+AG1mDAPdxvJ#Ww!V|sC16?8~ww!{w=uo?sm08X_NQS6w*oDWa_k($C*i7*2g5-6( sc7^Z9<8}NmdG`Ed;K{&~fhPk`2A&K&8Tda2{(1Fwe!rprcis2@0()#lWdHyG literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000006.CatRelsByOriginID.atx b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000006.CatRelsByOriginID.atx new file mode 100644 index 0000000000000000000000000000000000000000..2b9a3acb76e240fb2f53f0bd4cad36f37c0d5849 GIT binary patch literal 4118 zcmeI#$qIuo6hP5*p67YA6Ws;WYK&{EKUMngy%yY-?tKpqWZ^q3$7^ciDjwgtE7ay6Y_P)KJo8fSgN0hJggLu0#ZNFwKF*7+{DI#+YD=8Rl4Ei51q^V2d60IN*pA&bT1ICzgepR}$>w89A?G zlNxPe7qoZA>L{4h`Q)D3VBd0;l#q8qz7E+Z{@n`;^%IeYl>$;g3P=GdAO)nrj{>*v LsXsgU=aa2J%)m{P literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000006.FDO_UUID.atx b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000006.FDO_UUID.atx new file mode 100644 index 0000000000000000000000000000000000000000..bad1aa860de520068a97106c77498fa8c2febe77 GIT binary patch literal 4118 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 literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000007.CatRelTypesByBackwardLabel.atx b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000007.CatRelTypesByBackwardLabel.atx new file mode 100644 index 0000000000000000000000000000000000000000..838d1c6d393efe820bd7ebe0cf9aacc3aa4e1941 GIT binary patch literal 4118 zcmeI0Yfghe6opTHzh5h0FKuf4qek68i>Sm}8j3OQ#-;k*8Brlt5|aWZFgY+opnN@d z?r?)7ogmwe(JI#D$r1g>qSZ# zUFeQ|)2$EFRGCIlP8B)MGkQiFaW>O4w2=m`Khm6jRwMOqeBa${%EzDh%*miJ$BIt0 zov%Evd{$iR6%WG}xLD>(T-IKZ1v7FvhS74w=S}(AVkDL`8u08n1UBc4BzF1SmenQD zB~+>73SpalxHTuTew8_eKhYEWjO)zLK<94s!ueE>jF;J}_{uDG$N0bVdH#@yPKe`> z_>Vv1yv(@fzg^{D+xdzsP5!UyJ68GkwNf`jTE%z6%u8v$zNyc*{7Kb(39F)2GKuba z>*e>=b@Wk7amgw>s|5YKtXTa8>O*MNpRL?=wncSycfNC=bD(qJFAlr~J#I7QUjeND E4zo8SO8@`> literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000007.CatRelTypesByDestItemTypeID.atx b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000007.CatRelTypesByDestItemTypeID.atx new file mode 100644 index 0000000000000000000000000000000000000000..0d75fb7df19e90dcf88f0e3f0db1e37926541f52 GIT binary patch literal 4118 zcmeI0xo%}43_xFIGBa6b%}1oO1hz4zG#GyB>i+xqrAis4NeV0-iNY*Crh&`la(N1_ zaT9zEZi8>Zeefmt5j+OJgTKLD@ICk$JOqD&>l(j;f5DFT8#qwi+SCSXX##d}(1rp$ zC-y8^YW4HeX4O=wYHFYb2e2iAHW2~G9Mei~ec5?@)-2^z%)Nm6Qeeaix@-WgVLqcY zQaKM5sw>av%Sa5YB4Er0d2~h9PDAKCj8cR;q$nJCi9z!fBeA8}jC|pF3{TPrb*S1L zc$5rgk!38kW$fCdyfw>JO2XBk)e@&KLt;lH5cg~;r`oxmhc{)+vx65!;F_aDtWgJ1 zVo#dWiW*mRk)|w=GUCi7GbrT(V^Y)N=G61~{#(9hZUfuEHn0tB1KYqhunlYj+rUQ{ Pcz${HUtj*Oe*yjj$m^k> literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000007.CatRelTypesByForwardLabel.atx b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000007.CatRelTypesByForwardLabel.atx new file mode 100644 index 0000000000000000000000000000000000000000..36eeea63e0e6f3e9a0d18a255e0bdafacd73809f GIT binary patch literal 4118 zcmeH~Yf8gF6opTH)%R-!vlm71hg7T^u(p*zOr)(p+>J~1JFTVSfRGAigh}|Co1tkB z=bpK=l5`F}Hem~PU>6QyA5LHo&Y%O^a0DCBg#$Q-Q&@f$WprGqR;8I9RB)Xt=#tv^ zQ;oQWme2pFuh#RYpKZGr6#I8gS4SvpUz-(Np~ZQ7)r87=%X#*k#5-1A=IhSlBBe8O z>csw)`Ww_#@PqW_X<=Y{M*b|5?O3kTjqho{Z*pS$Z1miG_m literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000007.CatRelTypesByName.atx b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000007.CatRelTypesByName.atx new file mode 100644 index 0000000000000000000000000000000000000000..c4046b406157790ffe18d0c039635a7044f53cac GIT binary patch literal 4118 zcmeI0+fKqj5QYcO=hGAPT_hN9)M#G-u`01pvtSHwe`E`*HGUYK<0Mce%8u$%4t z{by!pgNVo#&}$p)fDYINhhPs}fPHWVj=>hV1P9<0oB(~tIXD7kS6BKn1ry15-pW{d zSUUD44$ICb68pCP1HVFYd4ZdY&Sv%NEx&ttl}DI;!f+@9bhPuU>+2q|{*~X8%!u+} zSvH$dwu;{aS~@BvL)9Mk^IXN45w7Bw!pw1p?2O53 z>8qMw!A_{VbwT~kqU76>S+IKEf9Mv?>mCVpIwgvudFO3XXAAmObu-n|&i_@v{@=mB zLqk2mj8Rk1E<>U|7VUOr`B^`+;9-5YRpk~ln^iFN`&y26%BcxEvW<-8*MuF}@+&)6 Yx8tn>tpcqA|54y4>99<(_!mI!UzmLzng9R* literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000007.CatRelTypesByOriginItemTypeID.atx b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000007.CatRelTypesByOriginItemTypeID.atx new file mode 100644 index 0000000000000000000000000000000000000000..9c26599a843646ebdf887388e0f2a747f0ecfa1b GIT binary patch literal 4118 zcmeI0$*SEj42DnVd3=cO1h!@`ZOeYC!+G~Ah3+qxLN_*i5W;WC`jSm@yWMU-lWV)z+&d-5vzl)OydCEt>d$=Bpf@*;Viyia~4XFcD*9X)zm-e7Mpz@Y)&P=VLN zQMIaBJf4{172L%aDAo;Jn4rnZf>QSAEPIamxXWm&q6T}oWye_1$OjA_WQ-)#vZECv z^U`uNPT*d$)bMIdIs;F2p#aE6S#2f;QVmV`B z7|oCuVHdhmN@79=M9RS4H*_8g%xT(0A2P?4vMLw^E3z#U3b`9cuVR@pt9x2N zzb50IdB==u&Q@);Ua3Acl_g3ZsX_Wf;HCtluL70U-m|m_qsRSesc@BoyFoK?V3`Un zkU%49FSXduMfw`!;L=PG{ t<3CJ2|1Cc|kAY+07&r!wfn(qpI0lY^W8i-n`1R-O{rZCc`xoH4{tdAqpg{lt literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000007.CatRelTypesByUUID.atx b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000007.CatRelTypesByUUID.atx new file mode 100644 index 0000000000000000000000000000000000000000..41eba58281891cc99fec544878e4f03411b852c8 GIT binary patch literal 4118 zcmeI0Nsinw3`INhJRTxD0-{Js)RGjXOBL$w`PD!!(3@;*-~qCWHu;~maXmdfJ^coc z;}>`jzJTxGBlrwHfp_2=_yOL458!d%EASfp1aHAta2+o|&llHH1lXCE3ZOJgv@cc1-1dYc1=+kF6S`v3#-v4Z>%^ss!Y6v zJ4tJJ7W*c1H)6IncpfpEsLCvh{oq-Wq-Q(XLOo8yEyq|Hs5-M)+l2;ZAeE-%TNa5f zbQ#-+>HRh;`lSahw@NxW$j5Bd+L4-l)H;!I%!LV;A%9NHrA)K1Qgj)zt8@=^w1fda zjOb&L_D4qNLb8@>l+`DrBc^igqaYL`qpeO>`y>{HHaWZVxZj++zy+H1a8gwx8>Lg4 z$F5PMRQL+1VXX_5m>urXan_|&tZNnDbM|__tyN9zF_JP&Bvx((X&GIL@Ho5NZ&_;1 zErJ&vuv&GISsZG?(POp|iT9WV7a5^=mOxdV6o^YUF?_NnZ%5S{G94LbjK_Q2n7-Sh zQfwXVhkGI;s_gKy`;Gl2*jnK_h?j1UEPE_e?J+~KVd&UnxL{-~&Lmy;(#)l@?=Row o*PWMv%fMyeGH@BV3|s~-1DAoz!2dAt=lKi%@fH8?Ux3H@FOr3!Qvd(} literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000007.gdbindexes b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000007.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..2a98c93adab6374c865fccc1045125683eb4a05b GIT binary patch literal 602 zcmaixVGF@f7=<5Fd_a6e{>-eEl9l)@8wnelmHhfSvslCKT4%fW-MP=X_q|P^Ejie@ ztR;^lJA7iMszFamlA7Kv>GywM)d?H<7g`sv6;HpM-C2SERT9zjtKJvR}JS&t08k_L_S#SGPiCL9r)!ePGL z=z#+oENDSMxLinwBFIB;4zvhRBZGGwA0Hso0g290huC;#8sUFo>B%4l)i3(E{-Ff)ex?jOkm@btZ9rLebS zcmF!S>_+L;proB;s-;>V`5)DLZ$@l=nyal|q`PyRv}{qRNrB`kL2pi@@~pIx#P)P- z3Y1BSm*(Q9k~J%z-38bt^2?7`bxoc1e8QPOtN-Z@zB16AW-Bm1Sg5KL68tq5-DF=o zpSQSt(z?A17XLPo*)SBMp-3U0qf}Os=LsgA&10>sr6_De9x2eI)mo&~k_>5~cqIlZ z9mtullAJ&rX@o*s1fz5v1h9*4Y+7Y(YS$#IE4{C`-1+pA7YQ3LoalKip;~r|(?uU# z`d?`v7)*m>m8)1rAZdnoC1DO;Kxsj&?qCm86U5!}(BAXYvLmYYq)=T;*ZuQsoc-}d zDmZc5jBj5qzuA3U${mQg5I1WzQQR|}!K0is<8s6Ui2;#auw5#;aWX!>KKSz$apBot z{^dzs-}u3~#K!R4EBoZdNm8<4Or|$)C}ND*7^m1ST`2WtrHFLV0%VD_w`%$oQIVIm zJ9=-Y?X4PANogKDTu~vbGbbNd7y3m+ZLBd+&E}#s5)5Vx9L=j^W84q{>P0SNd1Tw} zsnOc^I($sw$38S{8MYPH?(f!@E;KeOerbx5N-ES{QaVZ~WVswnJdv=%q{70-N8>k$ zKDB<+_4=C50exL+=j!HbCAXwCzIxQFY;gN?2|JFgz1TN7roxX9s9aZp{YQcqSA#~Y zD=Nw%0S`0^5KGI^OfGHN9OBTfjK?on7JMYlveXX2LGo#o6*Yz_J&R-WEm^*Lj z=*}Dg;-XHY)ux~HF`n31u zMtkb|!$Suw??zTrLFuHyN)Zf7m65V)NCQV3{atP9*qbZOq7$lgVgcS3qw9I{eTJel zTGxC&Y16zqTi=TOWuL=@iEyNljExh13;%4xmzW;;y>k ze$3$Xl=`NZbRE4NaZ=Ll0Q(30vh|Han%2@iYaWH7$;VMVg{Fd-M7?>eQ!eE>XOuW3 z$3SO|m}qw3Q%)d2f#}M^*=^fPZbxel%VRrI{OI6!4*sAEGpJtK^`JbkJ#qN7bd)Rb z5XMC(7;KN%&C(=bs0Y-E%!e~qZA@K$EWW0BTDk4xmDN%KNRu*qY|!pHn5Y~RDWg#I zCr?vTKW*B%QcNlx6@I~~+}_#Rus&+!#?Q1^rlxn{1h z@uym=QVynmH#FtPMM`NZ=DDXLiDGjp0rdlRWukP}maL4p6s9iGHhac5 xy%F_RzlGYJS^0OL_Wjz=+Jx{8jnd!C%rSovf)Nd@EWfcojZkTnj?EDb{tKH3su%zO literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000007.gdbtablx b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000007.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..316722e09bf29dd4df1066696950fffae01b6693 GIT binary patch literal 5152 zcmeI$tqp)M07T(J`Bfwc) + + + + + + + + + 0x3E434A8A5E4E45C1 + 0xC0790000 0 + 0x4078FFFFFFFFFFFC + 0xC0790000 0 + 0x4078FFFFFFFFFFFC + 0x 0 0 + 1 +
+
+
diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a0000004f.gdbtable.FDO_OID.gdbtabidx b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a0000004f.gdbtable.FDO_OID.gdbtabidx new file mode 100644 index 0000000000000000000000000000000000000000..31002a2ef011b37e8804b909aa9deba2481c6f50 GIT binary patch literal 8192 zcmeIu0SN#g3;?hz4`2tA$i-kLH;1rA*gU&Nw8&ij1_lfmFkrxd0RsjM7%*VKfB^#r V3>YwAz<>b*1`HT5V8FnS0}t4K0nY#c literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a0000004f.gdbtable.cdf b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a0000004f.gdbtable.cdf new file mode 100644 index 0000000000000000000000000000000000000000..28508f802cc5c287caa75ff3a4bbfc28d458d765 GIT binary patch literal 1109 zcmZuxTWHfz82*#S8qtp6wM>*QD2l||B<;F_x@K*fcC%}3Qm52fcL`f(J8`af*D=8> zh>Gk*Wq6&Npdu3#73X!ns30iAJAVQp2f?{2&Z6-2(ltZC=4)Dq;hMM+Gz1?PG!;!-*Fm~K!gxT-~kz8K_T z1hC+OBCw+h16~k7fhYuZrWaNJ$C4ooexw>fx&gFDQ~e*W5O{DRZB~y~uptLdceA4C zKs62x9%ULcjs}C2BSdGNZo=Bu69g)lznIyrmeJG%eGT{Evq13NF4=v3$dkQqRht z9iLwZtHQ;9B2=}v4!5SaOGn%C`j@tvi7CENNC`&*Ti#!m(5P1G9IYXeY#DiR6&6@XT#KCl zd_iiovu%m-$&Rr-CfxW0`^B1YqNaHtb$o_%3W*a0hPMDF9B;NfFQF_Jk_uB_sN%dy zNX+=O=jNtYWoKsf-5Or_^2oEaz1i7rKiyL>xVPJ2(Co(C)J0+UoYg0$6VLaxXb6mT z_pVvJy!g`=6M?;LvjB#hhhFC|S}!~>&3#`{dh`)S-96ZRvXgW7wheu)|KM}``mg_* z-^IBHg3Ozb!#=l&Pli=E2@1Xuy6_p$gU^JCd%_d;=+@v`aRrmakmQkLG@23>lAK^& zMRuC;3Q9B>qrLw?a@a3M&}S5*|I!M1XA#Rgtu}^p6%3=zRr6q#!k_ zYQwf}E4)O3QaN;W0r>dKTFPHtCIYbsM2mB6!y8K2P|j_28=57%%1AGE-b`%{c#Uk$$j D+r$@5 literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000050.gdbindexes b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000050.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..240144ef31ae76a6e98f8311d7c20618a5efc563 GIT binary patch literal 70 zcmZQ%U|`?{VmAgC27iWlh9ZVUhGK>ihEyOco*|PV1t=!~#Q*;@0!dCF#-;)QV_FK? literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000050.gdbtable b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000050.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..d5ee79cc64141e46ac504647d615f02700c33ab2 GIT binary patch literal 531 zcmZQ(U|?Vb;w&J+3Z!8`m@@BuGmt z&{UA}GzJC^0alRXem`eoVQ2uV1YvI=27&)T0F+~3a6G+~;a1QE!4;nv5_($SK4oGM z0g8g8RCl*GOj>2+aMM@k>eJ_L4h>Z+mR*$HB)C72gF!**YcV^+M4&2nSATcs;AkZv z5g+az9B*i8VWOnt;usR@8?EGmBorLr;Tq)c=@PAkP-bRqZeeI_u4kZQWND#iWNL0? zWNd0?92=_>5aj9W3N*pJC^a>&JTo~%Nyk9XAXX>T&ocyQZfZJE94usLZenU|WNBn- zXlZF;4AcsA6Bf{rb^t8ekmdmPHjq;Z5dqTGBJ12ARxNP?tH}BR5$`zcfX+YY>KE7L W-MA9039Z2oNAZfB*pk1PBlyK!5-N L0{;rUe_$^>%s&9K literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000051.freelist b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000051.freelist new file mode 100644 index 0000000000000000000000000000000000000000..e8d168993dd6b1bc9ca98c1c407945338b3ca845 GIT binary patch literal 4440 zcmeI$u?+wq38>+*ZTnU I`9gjj3YHG5RsaA1 literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000051.gdbindexes b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000051.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..0449ced6cb124413cd552d9da2bd6506f217b832 GIT binary patch literal 66 wcmZQ%U|`?@VmAgC27iWlAa-K#VsK?}W(Z;M1d1^*2mtZ_|BOJA1Bfx@0s18e1_q*rau%r;^!$k4HcVkJur*}?E z_=wG$%*P7K=(Td1P*I+;QgbBKQPZ-vR996stuWuvJNa70vMQ=bUAuY@>!RjOYSxG< ztWc~gY6@=IU9I3aGKl@4Q9Wnm@M#S(;+&Px7^lZwoOQW0>@&2);S%_SM)Zo@FvHf3 zYTqeu!M1@ZG|!l7#ng`V^oF`T=SYu1hRArIy$X8Eyht`|ch@5@2|o{8#Ah_^);+k# zl~7R796L+K^@22U4(mI{*DT(Y*zPf>EKTdGv`%^mvdrqB7&MNmF7kP5Hb9N$R*0W~ zOrznmWH()#Yph+RY74eQhhL|@5C0zUj?UJ8en}?JNOB*$QTO6e>Erp2?$3KVEqr>> zW4R{xv+wuH;-EMG?}WXaelU-YZPZlI5UBIqqo`^JJ`C>e8L%_lVV!F0MkhAN`}{-E u&&C6>170?OlTv@2Q|c5z(@h&Fu9~&*gqy+Yul@fB*pk1PBly UK!5-N0t5&UAn=Po{R6AI3%{QMO#lD@ literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000052.band_index.atx b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000052.band_index.atx new file mode 100644 index 0000000000000000000000000000000000000000..5792f523b51a6d1bb4676de6bd5899991e40fff0 GIT binary patch literal 4118 zcmeIzI|{%c5CG9lV*bA?<^HG2Y!R?dCyekw5kaRhBH~7l4m}1GjF>QE!HNw#4xG5~ rooDK>fCVgI0Sj25kplVe|JBG7y`}{$U;ztQzyei)^3*?nZshs}@&W+g literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000052.blk_key_index.atx b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000052.blk_key_index.atx new file mode 100644 index 0000000000000000000000000000000000000000..8943ed345530d76a86b2c1c970172bb7d5571793 GIT binary patch literal 4118 zcmeH_YYu}T5QNv(zO;`kaDe_$d;hyR#Ew*=xc@tlFAH%Xvx8=4FAzrs4&VrCZ~|v= z0atJX4QRm~Jirt1JeC?+0-gQNezD`1VAJG&s%zT*s|?vaYudq~P3QJKQ0wtPt;fSK z_p9U00c)te4yYr`2xLo@h%mer&A@Y_e)E}b!iADd{@UI-FWsSnKrU2m=gx!NSKQCcrfpvF?EPUJHA?yV fOQlrY{!(3|qr#R%rjROJ^X{d?s?e-Rqc(g1!*D1E literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000052.gdbtable b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000052.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..a00b9c5808ce11d8cdb519f8015372174cd4642e GIT binary patch literal 3000 zcmZXW2|U!>7r=kajA6zw7)v6WA$lr<{SmZyh=@y1eyvP{PEvP`!8f1~HU%K6Ow-8<*rdp_TD?m74Og8%@)4>m&%0Dyu0 zj!=+aM)LnCD#0Gg9)s)P05=iP15N@b0Da&`zyvS=04^ve$_KCmeg=Gj%YYAH4~{(n zN5B?v1)tz97=Z8r^=yq3IOhPa^8){G&%k}aaR4~u3GUm`IeTJP~!#ebp!Q| zpcP-R0o-U9&({-fAV3gED+1EOfMejZ5rqCmL<1i^F987~$Q|*Mz-#AeO)`xFg>#ries3#^cg*UV(Zr^`Ef*GIdmum zqTw1Mzt@G}Bcnf@qNQ=oTSiW~;_%?c-5lMa3CZ0~DZTyPDNay9VLSD@3B2?_}PTjy0~G4KZ&1@F0anh zO&Whjg0IL)nrkA=^>i*$Cbmw}<(Kl-KfjStCqrmahXaF436WYf@?qLT6}HCXMMW)t zNzf-%xqE|ubZOyNIZEh6(h8!4S$A&zI=A4hnrKDq8VP=rGgf#Oni}!I1w)DKKwEi372|od$Xe+{@Sy#z0Gh3lHL~jC-s?8|_6lahOiINsL`{)Vv~U(w1fsus z302gz*x0u9PO3pPU}14n@qE7i;^}t63*B6=o@s?ZvSAfzJTV;Y+1Gd9Y7J5= zL`?R-6&CgJ+yduf9O1F^a`ePtz|lkPf!bTf6_xiW>RDfC-yKP%v)|_tyHfCAAUhuk0MfirT}@&^1v%spOyb{kes`PwksC|le?!_+cVgf!Z4Oa(mkq;Z#$N%L!$=EZ?gw_3`=BwxIFSS06fc(fx$nJ5d9pyU8)uPE7 zz0b1KmN@_HFHdwz13m>_Jo+Rywl;Tp3p?u1DL#?O{VkL-`^qZ>8UD>1HWWK=qS;kL zE#ry6qoc=!kfuggF-9t$2Pm<)$9;NQu>0>#ju{x-WCcj^RAb1o#`(H}fyWM+*=vn$ zfp`720`q(YB!JGrY&vtyONu5oK(lf`QAOWZ zEAPNG7OR<_VReW(Fth4E+tM0_0qzcb(QaI&GvDK~k&l41y^l};o)=m+r{hh#D-wM+ z1uLb}@V?kQBQq#EuY{qKnYo&rSAu+nUGmy(R{8i&^{~C)k$cE8Vz3%kh-?S zeJM8@#&V?Q24TD`MpcnbRyy_{cn{6>YM(gaO zKsMMuk=(D+nLcPIV|ay};iS-#7?d;P<`i?evpjDATp?V3*&m6k3@n>yj<-^D&zNma z+EdWl{IT_1=UR>`aY);hCF*P>d8pEvMb?CLnWkEuZtw7`*X>&lamvVk>MRf(roEPC zePwm((QHhQ<&06T==8x>0eXt1XUi+Q!GYVoS4|E!%&+!TCemXhpBcu~->`0dkWNWd zZTsxbtf8_B;At4F7#`-Us8hok=?}WcU8y(e%`yz(j)d=pVFnx}K0KAQnf(mT~XBmCEVO zjn1LO{bDin#?5>st`CItFmsz8vYlb@9+Ti!=`G+{O0+2 z586X2hookxo)I`NSrHC$V??mn9}KtJ4Z_7Y-^Ru|d2>`{m*T#q+76uM_f%}M!)z*D z)b?ewQP|S)zeg?+k26<`$!1A)B`#VN4wr`TqUAri9tuAh9qZa{RY@4MvV9agw+v_$ zm}eJtuM(mekKv-JROH7cajD}Ug-luM_(sNwpL^@%V-8uV}R!MYkMr1pn0 zi1GFb2Rwa|ts+WF#YGyGq(33JOIo)I=ieub@Ak*v`=qp zBAZqQ>lK)7bMLrRejG_ezV3IIi&1}QW0tRZ>Fl2)2IoiOIjg2v1>up9fGua2F83zN z+XkkPHd&EQ$O!vGL&MaGv7VEam9_b_yTeLZG5YU{^#1~*yz_BK*$Fp<9g%+|^~-IC zYG&VdNs=Wt6I06FEsR#5hO)`l`V*Ae!e*vJ&H6UB_Bb%NLIFOtUxoi;SJ`3zKfolD@c;k- literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000052.gdbtablx b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000052.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..2f134dad77d199325155275739c1ceffb299d7ee GIT binary patch literal 5152 zcmeI$yAeP@7)9Zq9nXM70d%DmMJP!dMr!mxB5-dPg0nOC1iRT6Zi$O5VwU~T! zJ4deUNg4gRI9;i1&QK|Htvt@!D3|lL3I_oM5I_I{1Q0*~0R#|0009ILKmY**ekkCN HKhNg_cI62~ literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000052.row_index.atx b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000052.row_index.atx new file mode 100644 index 0000000000000000000000000000000000000000..e3c0c26cfe7e22c385e2ced5fe159c12b6daab84 GIT binary patch literal 4118 zcmeI!yA6Oa3;Wq)uW13s}Gc7Whwra=m}|oICF~)II>) literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000053.gdbindexes b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000053.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..142048fb144f5d25724c60c5755bed6d000a6f30 GIT binary patch literal 86 zcmZQ%U|ihEyOc3CPZ4NCApw0!ao20U-YWpAks%0x>?7 E06fPI3jhEB literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000053.gdbtable b/autotest/gdrivers/data/filegdb/dem_1bit_ScalePixelValue.gdb/a00000053.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..8948c07589d44e92a19fc90ddde4ec128d230d89 GIT binary patch literal 598 zcmaJ1ZgZ5XL#c7LEh4qmT|t=n?-wjg*cuDUfLL z14tlI(^K$fZQ~_KSlT)E&6{J#4uCnHF@>fszJp3;ZRHn&E3v89u+oE%1S#6+p+P%F z3m!sB%&ST@A#i~{WsD}JN8Mm3*&2&BIVZ`zikYaxXsBHl(pV}ppCBT5%9Bd{`p?@@2^V3!vt(N;khUH22Z>OzAe6c^FGJax1~$0V2$^gH|kKeczJ#!VBr zWH|TDn;L*7^T|9i<#&1bJH6k)_sXB?HAGXyz>|v941zs0%WIfujA392V`Mn65;$H` z3O)AiNjzN6&xO(c8j%i>Z5`az&61rCG}2 zoa>+iYPZxxTQ14c;@jk*ePi3NYVY@7IMMPGiO#KA%U8CGNOeY;)P3-e@bdN`#nR`$ P%JEd8EBjNW>E^D#)QCFct8dkP=OM5?hSZgcuoE{b^68|BBJERT+MB{ z*vUaoa*>-nWa9r!7ShN{I`Ju>fC36Apnw7jD4>7>3Mim}0tzUgz^?^3<9(;R7eOBe Al>h($ literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/int8.gdb/a00000002.gdbtable b/autotest/gdrivers/data/filegdb/int8.gdb/a00000002.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..a0af90eaae1fb1738ddead12a36441ef8292c88d GIT binary patch literal 2055 zcma)7-*3|}5H{*c$JBM>=L-l0#>7CQsAyD!Hz!THh%}iJM;g3DrcFkqCP7ImHvV{o z?KWwh#Dz$f9Q*G3zB`}KEdam~89o_pGK#OWyPTb@7U=#Co!TX$U4{6>AOIn_1`aVw$t)&wf=(#gU`UYu?2c3ox(0GO zuI?fA3LT*zzBKa#yqM?G4Cgoq=e{&e;vl?Uq&N?gxKA~#Jr9)&XhQ|5wx?P41fm@m zY3IkB&B0i;CMvSOu1xlnB>I{9S?14Pa)yVcp@S?Nj@7$*Y=p7@oU`i6h9!Hv#WT)g ze*&*OO*d4}(Z8v!0g@$dzh^^-D&{dhQJX!Q29Lxr7#2x+MU%o-q};#Br65TooL90! z4|mhKmX|g|xS(eDIeFgMST3keDHZvbB774@i)eiYS@^qp5G=`ctV-|%&7hXcT4c>w62nN@a;TA-8V{K>>}pstJ{f{uzx zwLPMCxx@M@yVvWi+c+c2B|**yRJ90~?_BEwV8tnL66iN6&m&&HZqj>EQP1vYlw>%Z zvWArTxfI6is_^+f6(ZK!A$ulRq>T!y*LmZ~=!;3p`sW+_TcHP+nbl)MpW^1U@a>I0 KE8>8gpP0Wjd{iF* literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/int8.gdb/a00000002.gdbtablx b/autotest/gdrivers/data/filegdb/int8.gdb/a00000002.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..7c12c568195050346285f43f1164067d9ce86e7c GIT binary patch literal 5152 zcmeI$uMNUL97pkkmOm2^Jhm2##9$eqEP*Rw1rkOeL9hS=;0Ue>8dF=-gapO!jZptC z`F_laOP;(er8I~wVx!n8mY&eUoVyj2aD)qdU^)!8P{9j+u+D-5Jm3qX*gyq0c!S3R7O;Q?EMNf(Sik}nuz&?DU;ztQzycQNS%9xS#`yy^ CN)wa- literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/int8.gdb/a00000003.gdbindexes b/autotest/gdrivers/data/filegdb/int8.gdb/a00000003.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..58df68d525b47a895d5876a8bf5f437a90afc3f0 GIT binary patch literal 42 mcmZQ%U|?VaVmAgC27iWl22UW(z#ss`|Nk=rNhTnMhyegseFSR& literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/int8.gdb/a00000003.gdbtable b/autotest/gdrivers/data/filegdb/int8.gdb/a00000003.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..8a5cdad5df4a84535641e3b5084fa3afc0e0a41a GIT binary patch literal 1039 zcmbtSzi-n(6n;(GPyrI+U$}|ESh1b>#{#tyC%D3KWINC%ima=9O%1`3E(X>P9l9{^ zA21=o&cZ?~B>n&fB>n(K1|}*LA)cK?O#_92lYH;|z3;xe``#-8Kmos>D*$U4=i}Py zbai6}oMOx&%<9gN?q4|0jN>eGu4LK)jPMQ&INl|J2v_+Tm%A5coQpDFG7l!tSDKdFtoc2H zQ+U7WhmxUJh)_3!j?*Lc1;}sTu{_tV_sAJdRWw~vG_fqmhAzrgO_r6as`UFp+p`@D z6`Gu}2dK*ii06=`RjP_?$W_TODhh7RYjd!7JdOAAcyK71`Tv8{ zDSq^RWBLEt*EcV|e>lE1dG+n1v(vskk69DI}DQjUTaKi2=VWA|o zh_L8GYsAz2(0s&r9ML3aFIe)&?3p{YA>|KIR996ZWCqD)Rji;v717Xi)zIbtvIm`Y zH?3M=yR9AxI8DY+7$39HVLYPgh!gbQ^i0PJEU!lzbci{Nj?*|95TRPmMplR4IQgq` z(sI7Wl9bb7c0#-x(}V~&B?)VOPQ;JskcABzWmmvb8-}5tBiyBFoIc)Vp}QBlJRZcT ov(OO^OBrsIP&V&?A4mR4R^d@~ literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/int8.gdb/a00000003.gdbtablx b/autotest/gdrivers/data/filegdb/int8.gdb/a00000003.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..2f80ed4fe5fed90691cce6424c11c3787cc56315 GIT binary patch literal 5152 zcmeI$u?+wq3zlxYPY=EI9NE@85o%=+qA%waijtYD4>7>3Mim}0tzUgz)u2CieLYi7#jTxv^XIE literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/int8.gdb/a00000004.CatItemsByType.atx b/autotest/gdrivers/data/filegdb/int8.gdb/a00000004.CatItemsByType.atx new file mode 100644 index 0000000000000000000000000000000000000000..22f3bc1dc4cd27d0372b0733f238f0e26e63cd74 GIT binary patch literal 4118 zcmeI#Jr2V#2nArby-PPFV!+0uWu4?Eks@ca-hDPs=P@O_j5H}( ztE9Fmxok#lNO9}6%f6kryosX_fB*y_009U<00Izz00bcLXMy)O?XSfDOZ{tp0Opk3caWS&RkvEtc9rnmoN4hP&=SoH)4+8~(OVoEK6eWDtb^RSWo63ES7toeSo8PJF)92>_q`Xu-zKjB literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/int8.gdb/a00000004.gdbtable b/autotest/gdrivers/data/filegdb/int8.gdb/a00000004.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..a97854051ce813f8c8f1c44a23af972ac4675c7f GIT binary patch literal 12875 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 literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/int8.gdb/a00000004.horizon b/autotest/gdrivers/data/filegdb/int8.gdb/a00000004.horizon new file mode 100644 index 0000000000000000000000000000000000000000..b64b92356a70378da21d5ffdecaaca5124025076 GIT binary patch literal 32 YcmZQ#0D;N_OdzTu3_>$hIzagj07ZNRrvLx| literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/int8.gdb/a00000004.spx b/autotest/gdrivers/data/filegdb/int8.gdb/a00000004.spx new file mode 100644 index 0000000000000000000000000000000000000000..6d236bdee5ca53a730e4092d11e2b31f1f938a7d GIT binary patch literal 4118 zcmeIuu?YY$3sk5#sx(8MC^8tlT8R)KK!5-N0t5&UAV7cs0Rq1Z+&b^#bThjF D7A^ox literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/int8.gdb/a00000005.CatItemTypesByName.atx b/autotest/gdrivers/data/filegdb/int8.gdb/a00000005.CatItemTypesByName.atx new file mode 100644 index 0000000000000000000000000000000000000000..5f5004620ba9c73658f069eeace1557d8df8cebe GIT binary patch literal 12310 zcmeI2S#Q%o6oqft_kCZ@{yR`Y0Er^h26#@=6e`lBvRx?uhM&rJ#tBh|JXAcy zvI1FwtUy*EE09tFt@&@w2;AX*44egzz!mTmJOBl_4W5IW;2d}XZUDW1`8?mDoOTB4KiNe)23tWnWt}0< zCkbcfHTYHVlWqM~2Y<(cxBL>vYCIpO_R0?-Qiu4P;?|pbg)Q^z!gesrG^v$qK7SoX zicihG9%~u#Q+{qTaa`@E*KnDiKmSuURz)?>&y{^87w%$hAC*?#UuKd04~N$4Ixc`S z;0d?}?tzEkG&lk71N927gJ(d$8Mp+lf`c5feY|;i!>`24wc?-P=L=u=;N#*~QG;lG zqgg6_##&~u5tx04*-w}A=LWn~MS7gurR0KN94X5>ry6r+^kb;p^!vLysOOF2 zXY8s@NrjcQL*Q+OTg7ixPc)US4^o5W|H%qu1+oHJfvkWO_*JyHY9+7Td>tD925`t0 An*aa+ literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/int8.gdb/a00000005.CatItemTypesByParentTypeID.atx b/autotest/gdrivers/data/filegdb/int8.gdb/a00000005.CatItemTypesByParentTypeID.atx new file mode 100644 index 0000000000000000000000000000000000000000..269f1f31a465213f69d5cad44ad6d2744b796761 GIT binary patch literal 4118 zcmeI$$%@1v5C-6$ec$(e?>QA1HCi5xS}zsy?(=7uzRamFGtjgJUks!O$&VP!WHOn2 z!dTXLyAdSeEM5PtiF3I?S#Oz2+Q4;Xop+$Yz&`gLY&~(Ou&j=Y6hSHHpQU6W(h) ztTGgg60*L{6pIz=ICv#iiwSnn<^au1d^ab=O^a}a_`WyNU`VRU5dLQ}*`W1Qsy$fBr{(?S+K7u}neuCbD zUP9kOA3{GuKSQ5E-$S23UqN3(??JDjcc5ROKcP3}xiw!gwhubT3(3+&KAMv3-DcIQ zX6t@ytIV_eBGp7xXC?0}G)MMgRwK6DZ``MrdJF-%N#Y!eHI2+lTkJe$ZHO|pHdn)k z50iLSoH#pq3Qs(`y4`Owq(`Zpmexihz9_agYLa{U=*43rYA=cIo3zzKQiN&rjTU-2 zGo+uKdB62JRJ$6T=_qckO@n>Xl*uNII}h}TMwtib|T&0Ij$Fn7%N5V%`8(hd(y+c5W&hW9R(a*)*<5-Mm` z+aoGhM7hl!jKafl;<(aGaq6XDDpmUI;N?2PQAvP z=wJLIhdEKr>CJs|DkCac9ZsXD4K7T>w3VH5q{`N@hoAc`xZr`S3I>AeHE67ZR~pCL z2wn$XMQa5>2f;~jA@b0SU8wRtC(BsNa3Wlaczg&B1 zXV9>Y3H4M&H6~rFVo!@rfpgYyX?0Ip9lI)qghL!u~O;Sw1ds&t%tN< z?0Xe*#zmEz2kMH&6S5LL}D5F!FlknsCrsfDqUmDbI7PK|7OI ztyu7j>N%^xNls@QJh2fviY2ZM-yVG@Qr_Q`zgUkx9|Rr*9t0i)9t0i){%-_cKYug7 MzMcQ~Ux4fNzfc=rO#lD@ literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/int8.gdb/a00000005.gdbindexes b/autotest/gdrivers/data/filegdb/int8.gdb/a00000005.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..bc887093f340449a4e4f40224ff3a487814c09a8 GIT binary patch literal 296 zcmZQ!U|`?@VmAgC27iWlAWmY)Vn}63W+-9s1d1^*2mtZ_|BOJA1Bfx@g@B^Y42fX% zB|x3I3?U4a3dhbTnfm;XF>qb^dg{nc|bd0W}}-3 X@&j&lgxu%{v>_L00|Nu98xi6F*S08% literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/int8.gdb/a00000005.gdbtable b/autotest/gdrivers/data/filegdb/int8.gdb/a00000005.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..bf93ec49a465f6bf1205fb164e92bee5b3303828 GIT binary patch literal 2071 zcmZXV4@?tR9LGja+h|ws-Oi@JHbdkjWI+UoZW*Rpq%G@ARR|)Jr+GE+X$+g#e-_P&;-tXVJ z5(F_1UZ22gGQ5P(40p#}kn;gr7oqz}=+`}!&=KniKYXQqTPhL8bUsT)Dms%dEx6XL7ZwaoII8Q9t zM=rG(`qvz6+OH@JzLPZ+DeBVAuD|IQPA6Df=Rfa0OGSBWNR9`rfXE=S?6lhzt7TR4 zA$zN#enB zzO_s17Vq1b-0=Q|UN!Y(JDzl3IgjEKG3*ax8aQ6 zgjZ6fg$FbTQ;JFq$U=V0i?u6y!qootdHW{eoOgNwTL_AUt%4!ar^zqO9SoFj=HtBL z4QertxN8|R1DmTj8j7`-(=T64J|S=1lVkh%!nbGe_|8gZ^p5({fLy==T2IjvZHdYz zwe#ZfZPhjVlm{{?zMD@1U`&9A$q{A-Dx1%#w}0+jwm$Bg{q*D3-u6D65^EX8 zsADWB+^T$zKW@v6s}^;!>d>|jTq}tOBwxV7T6PQ=R5o~9;fzY4`! z+&Z)DP4bE+x+&nx^b(x#)d1soAh>mu+0krh!v5m|Zm-_mtF+EF-DsXxl7M5L>BaQK z=nH^Af9bu~fk`J~8fQNH@y3jRHvm^HMWeXliNFo}Oq7XmZsd*uG-PdleLrPK?XmCp zx#?D%a=7E{GZZKf3uj(f>6)~6&cbH{S$phw;Jk$3j*l0VI^1MX)Acd)XrTJ54ISHR z)|?*}JJW!w_vNI{h^xx6q$4MaT>3Wc@x`qR1JXI}QT5{HZXKCi@oMY5xb25Oym((6 zR^_e%98&-%J$l39qYd}X&GBYK2fY?E@R>pOP8qbxrC&7TT(-h5u0Hq1Rwwb2tWV=5P$##AOHaf{8?bWum11l-|G|cPzhTA literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/int8.gdb/a00000006.FDO_UUID.atx b/autotest/gdrivers/data/filegdb/int8.gdb/a00000006.FDO_UUID.atx new file mode 100644 index 0000000000000000000000000000000000000000..8a80ea06050f04142e3eaaac737cd886ba9bb011 GIT binary patch literal 4118 zcmeI#F%Ez*2nA5Qj2lCNwyf6HOBwI3)tGpL#^g7lzyx_4L`2gS{k{3=@Q)DKSMd}| zHO?Ujn~Ji>BpkQmORJVu+c9D@%!B|0AOHafKmY;|fB*y_0D(UX%=gv*z5IK90%GL| A=Kufz literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/int8.gdb/a00000006.gdbindexes b/autotest/gdrivers/data/filegdb/int8.gdb/a00000006.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..c608a88be082bd48fb5821f6bacf48df11c2495d GIT binary patch literal 318 zcmZvXu?oUK6a+_6v526JAEZG@C5Wj-MI<6B#>TIYbHordSM0&Zv3dAtL4iW?c4G0C6X92N+;_M6@{tQVBSq!NR$qXe7o(wJw3~Ve+ zETIgc5DvE*6HrAFLncEy5a&Szxzt$LT!31NVOoF!EFlb)3bd^TFzhfWny&2}TxH23Mei{$7!8J0w)7?A)3Zzhm8%Vmq!?`+k%Z zwff9SJHA44@v_EqY_~+qj_~`gP{{H9b|&Y->W>w7o|vq0-sLXixB9~K;~<{`07k+% AApigX literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/int8.gdb/a00000006.gdbtablx b/autotest/gdrivers/data/filegdb/int8.gdb/a00000006.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..431307d13c60381f56be9a7c0c765046b36cb27f GIT binary patch literal 5152 zcmeI$!3h8$3-MA9039Z2oNAZfB*pk1PBlyK!5-N L0{;rUe_$^>!R-Lc literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/int8.gdb/a00000007.CatRelTypesByBackwardLabel.atx b/autotest/gdrivers/data/filegdb/int8.gdb/a00000007.CatRelTypesByBackwardLabel.atx new file mode 100644 index 0000000000000000000000000000000000000000..8797338e7a9c750c8dff7448fb1f9ba3da067822 GIT binary patch literal 12310 zcmeI1=}y8x6h<%Z`@a9`yFf4|Mvcn@Ac7K+62KVW#z*zs)_I{>NWyKzz7%tBVYuKfDtePM!*Od0V9wn0bTQ-{20*hJ#>ur(E(aT+vpUnqXIfY zJLnK?pk1_vHqkO#L}zFVC3%Gfj*Ifb+P*1ItmMnA>h-9`+CGqLse51DyR!#HJhjL; zRB+kCnfi<~6J<)8t$4?6O-j*mh0KNKC*1X>b;T%ue`%)mf0NcT%%74BawFD%2h;9v zuwTVdaYrt!MaC?Dii7^bC~9wsf;O?NS-m);r*SiQZGTJnDV1>2B_g%Ysgp(&&(kux z1mennp5s51w`f%9L_D+2fx7%%;x2CEgsirG9qFj3eN@Rmdu#n!_cxf&&N@b1{HEPs z?7vE1YkKQrqedndzuEFvW{i9!a&_Dub=T>gn~dM|`RjkurN?F5nq2&TXA1c^b@{uG zo)jJWT|6rs_rBA*&h0N`CZjXykf)fwfy{Py`%`v0{$)EaNGQy@KYPE-B7DfEYjoX~ z&`NaV=fl;1@@}7a)YQ4GuIx1v5a$5;SN{Qdj3#l|Wltg_n{Pj@Vzn9pBVYuKfDteP dM!*Od0V7}pjKF^&@D&ueP0ax48++Zf{0+VJ$xQ$N literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/int8.gdb/a00000007.CatRelTypesByDestItemTypeID.atx b/autotest/gdrivers/data/filegdb/int8.gdb/a00000007.CatRelTypesByDestItemTypeID.atx new file mode 100644 index 0000000000000000000000000000000000000000..47d2132ee8b7ee9a518ea5306182b61d0b93f04a GIT binary patch literal 4118 zcmeI$xsKg1429vFWU@{6WhTo5q$8k(qNtJ*rI#}N?m0I=$|=$W2_OLjY?Bb*?3Gtk%M~PCapa1Ms4K-H{jkKgeY#~#dDN!18Oe?+hW#_S{{;Y&@ zDCS;BeJOEDm2}ylyoUKi@~mDd0c7a`B7uW^*0!N_*mv1pEVm2FJ@jCOJ#lYKm8GZL$riEF0g>s(Kgyg2k032 zeT!%rZK4c$dvj<7t)exwfwoY?N__nx{(OhrJ^Iti*LVNE;CyWVep36t(Z13i$2=#! zUHtlw{Lbms0t@3mdzvSF7F)W)&VChh^07D?r5>sB5j#!W-*L_RSlBf^dqe!o<6tRl zvhQoXAbx+FUz7QxLnPb3-EwQ%eG;GA!2FW=#G~pyyLqI&WNx|Rc#w#-qdB+>zuRhE zP+(n3YXsRB#!{V9>c9WUzB;`c?h(JhqE1Qt>QD>!q|Of)ILYKbzNZs3UzOtQQtzJ@ z|48Vu_DE^X5k_|&r&H9b2#A0Ph=2%)fCz|y2#A0Ph`_%f@S115r$+$X`}gF>Z!;8~ Ax&QzG literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/int8.gdb/a00000007.CatRelTypesByName.atx b/autotest/gdrivers/data/filegdb/int8.gdb/a00000007.CatRelTypesByName.atx new file mode 100644 index 0000000000000000000000000000000000000000..70ed36c3fea8bbfec79d541e8f5931e81151e214 GIT binary patch literal 12310 zcmeI1`%c0z6vhwU@Avy(dlw0Y#Hi8v0E&P_WM<45-o{7u`#KCOfd&({F7b?fvTo9S z`?cL^&qPEj&;qmw<++9OB+t^7rqrb;cPPcuK&dM=b0(G!%7M2}p7*YGD*+{-1eAah zPy$Lo2`B+2pahhF67WfYYyPvLfdhOWLc7p9bPgRsn-FsZd(alN0bM{l5P!b}v5r${ z6@6!X;$Zu` zm6qJY*#{glZ}L@<&eWA?vrG?uqQc)I*u!w1Jm0=f~{ za^$oiK6ltd$-JF2ahE@vmYeV`N}4{{Dr2k#lz7(ZG`1} z-0d$yBw@6RFb)QVjMwqIb^9YbzAdmv%6J`lmRNt4;6D)f4l1}!uKf8%pBu|R D1zNXT literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/int8.gdb/a00000007.CatRelTypesByOriginItemTypeID.atx b/autotest/gdrivers/data/filegdb/int8.gdb/a00000007.CatRelTypesByOriginItemTypeID.atx new file mode 100644 index 0000000000000000000000000000000000000000..139b478cc0a4b689389507d63d6ff6ec57496bfa GIT binary patch literal 4118 zcmeI0$*LPM5Jg|+d7kqD*%e5tNm^-NxLZfXasWanRL#a;Tfn`hmdbuqnv7~Da zvXVDR5~iksa+>z&qI-^cz36CWYEFApNBb4jxDFaJ*rl*?LwifnCCyF65ETtHTzivm z!(Nr^j(Tg#le5>U-HiGkjbzkHT{Y9(yQdzxSV>69 zk&{Mi!jcqq_(}qOUL?45a zX$iJ1k>K9l^Paw_AC_bzUkjoJPuZjO%=y+7E|E~F5oS?HnlX(Yi89CDGqtsxub10W zb1DPWowK9;aB95`GFemGY^@E<@wU{erm5^k&9!3M)2OY&WNYP~a`GWCv09aqW6;uy z_MS0EsVKmlWTl$Zw(BKE;69kRJG$dU4;;XLuP?%vVHC4sLbs(h&JBlcGClUFS*UVW zn!&B=>Wc^5|HIVZ@A~tb)4*xqG;kU?4V(r}1E+!0!2dDu>;8%TcxwOi7U1~&8=s}> AV*mgE literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/int8.gdb/a00000007.CatRelTypesByUUID.atx b/autotest/gdrivers/data/filegdb/int8.gdb/a00000007.CatRelTypesByUUID.atx new file mode 100644 index 0000000000000000000000000000000000000000..dea48d3ebdbbb51845e4bdaaec08af989846aba8 GIT binary patch literal 4118 zcmeH~Nv`EK3`Kt>skD{8sb&G05fCLxqK0gwO+CE5*YyW7tZ7CzZ~@uACaFVe;Fp(| zmru}jeSrRg-ayy0AEEcq&(J^6N9Y~&1N1xe9rQQ!HS`Vi2lN~C7Wx+Y75WAG3HlTI z9{LKpuP+mLl;q;gCe<^9r0+pKEpQuk`l;MnJRdxFQA?-ljY%?+^kh<=Ue{JVD((5G z2zEvv#NtLG;k0ZN>Y6o0&NPLq_pApYD4ZwBZk0>}tJxQCtT;DZ+N`@7wce4DZIhZQ zF>9Z^PE%cQWtLz&h}DwhY$FZ$aqFfzXQab*R?)r-O;k$Kx{&P_)FhB)ZksC4$JjeF zW7CkcKtdKFf6^)4+K5{E&gWxRRF&rVxL1@Zp~0~s%>#)Vphh?f|Pu}5$)8M6Q*gQ~_Ltq9Fc(9U-D;0c#R%E7x<<_52VJ*qb9 zc&~AI*;crE)M_V@rwzC`$r&Vg&SkZa7+#+b4zpKv5~6CFAf&P=!kmzfR7^NozP{ZZe5OHdS6!@ literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/int8.gdb/a00000007.gdbindexes b/autotest/gdrivers/data/filegdb/int8.gdb/a00000007.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..2a98c93adab6374c865fccc1045125683eb4a05b GIT binary patch literal 602 zcmaixVGF@f7=<5Fd_a6e{>-eEl9l)@8wnelmHhfSvslCKT4%fW-MP=X_q|P^Ejie@ ztR;^lJA7iMszFamlA7Kv>GywM)d?H<7g`sv6;HpM-C2SERT9zjtKJvR}JS&t08k_L_S#SGPiCL9r)!ePG?#u zD|Q4ysahx?6s@(Qww0my02RfzfQlWpSlXhFMbxo-$p(^zHa0Uicf0%l`~8pa|98_L z05A$Z58z`5AJcD=lkv+NO)%@W%(o2y_P|~YV!;YP02!cx0Pp}9VB60&8blihgD2QJ ziGdc7KnW*kC>IYTAQ>dUFM~8Az=H#wLA`GQTM>{#Jp$tHGk`nrff{bQ8cu709E8Jn zEL>JWfwxe=4mbwGDH&M#Um^mC$%Xq+5LpThqzn+u2!MWe;2ZerT=e2Hr;1g_%U!3&$sD1Sk}3%u2dQ!lx|2VWYH3nNLMgZ; zpg5+jIA(is&}IO70*%$LaC^1qXV0L$MRmGBY9jAaVB2!#gw~K#Z$FLO5w-pCoRb4C zv{D%%BIwm>?Mg?JHHNj(xD^Ib4w3~x&%oA-FYH`5 zbqKe3&97R7Uu^mA2<;V>|FR!(bIF&rA^BeMm-o4>4IL4cOvzAo1r#%gBob7lOzOaV zoAT~~gBuo+qz&XgL_T-_di|^&R|C`L|8o1yT%Q&^8aOG2BT`s~!IBp5=yb=ZBU@AM z`tnO$0%{gIkgRP7uZqUTaszYP)19kAUY~s8nRaW#HP_IcY22wodzTk%WO=vWXgmzP zX+m!DoQ-?l?eu2G=?A>LM}D2d7G@XD6xB4>%)?W@6@dM14lBg@UHpm-xpSX-Ky@vl zBPiNXu408bB~1J<7ACAebJ3CALui~u1*4)otEo@Ebu1_-oAtf_Jg*fe@JweG-1c7o zHeQ%HLDX6)Ri?6#_hN+^1^S8rlH-UK9CJ>fqAZD-y(D5rc~DmI&~(k-S(&8Y`u)|* zWP+-Du7AEB)U3lJf)ynUuZ&RfrLkI4W~~Hz6{S&`W7Gy`XcG8P_;xYRZH{sazg&lvLz2&hm(9Z%5En0G8oPn;j!8}tIAh)txUESgAsTPOo{-cFlP9*jB7X*5+0oKQ;hq{ zoVAU3kHE`?-CZuI1E6sq6*C$wanuT?h?#C`)=>a393HZCpCh}5_zHK_*vq}jcgLo_ z)~w#LzfrtlyeyynTj4Z345sFQ4tzvUgk&ukz4|CpH+4Ax5}BBgYbK@MEG=44W?vw@ zv&p*v=P1qy7HZ)}Mj%@(DPfh0NeuAP*|Neaei(1_fSaYQhrj(mpwZDsn-&LW+8)=6 zd=F0jw`2$?L=J@Q!d1i0N>VzLWA11I_Dp!Su@ts}S22iP+L6@s>+~{iRj7xkwBgYi z^}M8K=LuHG#^Dz~OuyY&iDNq>EQqaE$q8*QOjZvjNtq0>0dWl2oveH8X+9T(+neu3 z7G!jC@y**i{5RR^6=4S!c>LhKB|zrPQ^!Mp1QY^w?s3qt&?go!9>@v&tn8sfYr{5> zuHxqT57{`w@NAk6WJ_vUrqeo+4CKDp+)lle3qq<6{q^z8YP)v)Hj6`hA|jdYo@Q6i zK3VlYFRigm=qpY)d@{GLO{|Zon^Sxvc8=T_mAmnvo<tL4H9cf zB_yd>;lv|!G)Wn5C2$D9XN)&Z&#y$Y>wHDUXF`{b(Q8`#6KAZF`&EP;_%SIU#rtR- Z-lT?Oy_(Q!A$zTLr(Sm~iBS)Le*nHMfzbc} literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/int8.gdb/a00000007.gdbtablx b/autotest/gdrivers/data/filegdb/int8.gdb/a00000007.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..bf096e13d28fc61c7dc794d7b965ba6083f1f807 GIT binary patch literal 5152 zcmeI$tqlS}00rTN;~y?~+Q3u685C$bpaX)#(*j-KNC*~%q6ZYoIo=e3n@!%AY_e+P zR;83qw#fR~oXZuK-Ef0V6`s)a!X4H;e!zARK5!g{77n9O#@QL_NjSk5cGK{N{Vcp- nRfh|BEMNf(Sik}nuz&?DU;ztQzycPqfCVgIfqxd@_m6RY0`v~Q literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/int8.gdb/a00000009.gdbindexes b/autotest/gdrivers/data/filegdb/int8.gdb/a00000009.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..8211a233625ef9fe771fc3784e2a0b85f3984089 GIT binary patch literal 112 zcmZvTISRla00buo1dBi(B|@4gVxRxNLMMe?idlwbcLfefL^7}38eG!*Vs0|qQ=iLZ Rn`soPpGSjT;Clu6TMVar3+Vs= literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/int8.gdb/a00000009.gdbtable b/autotest/gdrivers/data/filegdb/int8.gdb/a00000009.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..679dc7e5cb49e03086cb153296f02f6676cd74a3 GIT binary patch literal 2221 zcmeHIJ!n%=6#in8HbvCBI26H>$)QS;Hfb}NN0QcR(if6+QA+4fY@;!SHtJfzq2MG) zr{a)7E7C=$s?Y=n2L-L5prE66RNA465WjO?(i9Ei=#Y2GJ?Fi9&Ue0Z?mahl05<-P zx&S9-{aNL^JjX4e>kjG;yV%)H3?l-xIrg7j9KJy z1(#7k+Mb}1i8K6~!g;tcLgxrF@FEBw`l*c)Do%Nheg$I4nwNHN^k9fVOwM(0OUrO| zma&SMp|!zC5;=!S@+hdkg)ImXuBRCzuF)m(zx$?;z-dj>%3k<~ncFy{U8*r1K!8Ic z1<=cU2AGwH`bqThn~z!cQ4i`$fKt}SIC_YkWKHA5x3~=vHOo=JHO*y4Q9bnbsQoCJ z4>K2G5ux35&0b<#R$fNwgP%Mku8*2jSs3(kG@{CWM43sNcqUN=F-6vxB`ax%#-$I3`njr|jxy}K;cx4KGfyfwCCXqOiKv6!lee0O-Va(80=M)Lh* zL*8+5r>t`ESxDuc_n-H_y@^jGPW>)z9fPD~@(@^ua)cVAw71%~)xNFv{qNhin|&Vo z+-1n$b#XanbV}cU@6zkw<(-(J|M&7up3Xm8J%gCunbW*&W&pd(j)Tpt4BlE<-e_t; zfv+}BXPr*l#=Vu*+Z$_+(xiMtSC(JA{dlOX^Q~8}Kdh9tT&1U5n_rd|j$mPJ d>A{m@*L4QUDl4_O&1$u}{xDR2PPyYZegUMhk(&Sj literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/int8.gdb/a00000009.gdbtablx b/autotest/gdrivers/data/filegdb/int8.gdb/a00000009.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..b116630f70d19f103a70ea3c02e9e6288bd8b0c8 GIT binary patch literal 5152 zcmeI$!3h8$3sk5#sx(8MC^8tlT8R)KK!5-N0t5&UAV7cs0Rq1Z+&b^#bThjF D7A^ox literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/int8.gdb/a0000000a.gdbindexes b/autotest/gdrivers/data/filegdb/int8.gdb/a0000000a.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..240144ef31ae76a6e98f8311d7c20618a5efc563 GIT binary patch literal 70 zcmZQ%U|`?{VmAgC27iWlh9ZVUhGK>ihEyOco*|PV1t=!~#Q*;@0!dCF#-;)QV_FK? literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/int8.gdb/a0000000a.gdbtable b/autotest/gdrivers/data/filegdb/int8.gdb/a0000000a.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..2ffa16e397a21e0366e8257bebcc21c912097f2d GIT binary patch literal 820 zcmZuvL5tH+5FWejvZ4nIo&;feCy`j1v`w0m8`^BQ>!zt`deBhfYx>&FT2pz6iZ>4m z1^o@)6uo-%vaTNWAbSw>t~U<~f~ZjEWfiv7fyung_susmytf1ZN6_zQ0CE`rT6yW< zbmmXuHpZ+tBRLC4IZ%ip0R|j=2w?!QoXs4cPY+>?v=I`qDhI~~NRJ`Fk`S(AaR?KL zP|iSEgoWM&K~cg`RnUh3D<^VdxS!Kp7VaQZ_yu%fGc++h7_T3}2j^}6$yd1Y;NItt z890gA6vDXn>6GXJZys(LFzTP(Km9DfdvOI;$+vhJULvjS*qgPEM_NYRmvu$+yRPM5 zoVpjqxy`QOYJ#-Eg~>N9zAaJM9hAv72>|)W(!wMbWCN z5=kv-Ri&sF%95g&3%XWS^{UeANo}WTnW)y_j77J?V4FzALa`@xTTK^xuo33dl&qC2 zB}G>%vaXj)rL@%EG;40tZh6GzG>UIB9y8x!JfO*h6BIWb!!ljd@yI$IBWBV#38N8_ zDn((U(LbDY=ajUF*I1NrIu;$mK}aJaos(s4L8KGVG4t1HAV$DlbX`~Hx@^%TOl}OA zZx4N&hoca64y|mlgkhm9WR0%7VLMItl1I#Tr$Hn|)nvKX6Zbo32bce2+SwE7clluN oaew!&^Zt4I6kzB3i literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/int8.gdb/a0000000a.gdbtablx b/autotest/gdrivers/data/filegdb/int8.gdb/a0000000a.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..b48fa99a8c383a6940493d0467ea03bf4adbb29f GIT binary patch literal 5152 zcmeI$!3h8$3-MA9039Z2oNAZfB*pk1PBlyK!5-N L0{;rUe_$^>%s&9K literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/int8.gdb/a0000000b.freelist b/autotest/gdrivers/data/filegdb/int8.gdb/a0000000b.freelist new file mode 100644 index 0000000000000000000000000000000000000000..e8d168993dd6b1bc9ca98c1c407945338b3ca845 GIT binary patch literal 4440 zcmeI$u?+wq38>+*ZTnU I`9gjj3YHG5RsaA1 literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/int8.gdb/a0000000b.gdbindexes b/autotest/gdrivers/data/filegdb/int8.gdb/a0000000b.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..0449ced6cb124413cd552d9da2bd6506f217b832 GIT binary patch literal 66 wcmZQ%U|`?@VmAgC27iWlAa-K#VsK?}W(Z;M1d1^*2mtZ_|BOJA1Bfx@0s18e4iBJ^!(3qheT1g`)D!A&< zf56c}6gO9eKqtXL!9T*mL2z;Ob8h>fXicoI;F9w=_uPBF=bZb!=iT=blKRofKuTdF zdAomec6!UPh)vqO&umauUYAwW1=UniK^jQ*4>fgDYig;XrfxA`(QSoVVk9f2WJ~vT z2h^_yR*6|=RVPEiaOyjif1uijeo35Se4q(U@f5K+jq#+}E2DGlp7!g4_vJt*;gSZ+ zU^6+BOO8WtPBsSRn|4;HM|KsyAGk3 zz^kA&Y+iFd@4zqE0u0KUr?O<&F*L`z$QXJgR0V5Hta{*?$7%^IHwC;9d1?Zj!r1)EelJp1zxXpZ$8Ww7#+Y`OWzF22RdnCmOlF zzVPhhr;%3=)h<6jf7pC|oc8x#S?{9W{J9f$olc-tc-)0e9S#w@lD`xU-2=BBHZPuk z?UweM(*RA6V60Y>NRR literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/int8.gdb/a0000000c.band_index.atx b/autotest/gdrivers/data/filegdb/int8.gdb/a0000000c.band_index.atx new file mode 100644 index 0000000000000000000000000000000000000000..870a5e390e919d355d982cab06773ec631f06d16 GIT binary patch literal 4118 zcmeI!(Fp(`2n9fk25bMR(!eF^gqPyy{a8fA%v6m`&v)S=K!5-N0tB8FsJmZL1PBly QK!Cs>0&Dm6?;k+*19m(BPyhe` literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/int8.gdb/a0000000c.blk_key_index.atx b/autotest/gdrivers/data/filegdb/int8.gdb/a0000000c.blk_key_index.atx new file mode 100644 index 0000000000000000000000000000000000000000..3aef81009529d0415cdd237c8d3020a447ada574 GIT binary patch literal 4118 zcmeI#xedS|5Jb_jE1>`fcK^-6fJOp2B;9U00c)te4yYr`2xLo@h%mer&A@Y_e)E}b!iADd{@UI-FWsSnKrU2m=gx!NSKQCcrfpvF?EPUJHA?yV fOQlrY{!(3|qr#R%rjROJ^X{d?s?e-Rqc(g1!*D1E literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/int8.gdb/a0000000c.gdbtable b/autotest/gdrivers/data/filegdb/int8.gdb/a0000000c.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..e012cc3df9b7d19604e87139ddbc2c60edd06b73 GIT binary patch literal 779 zcmZQ(U|?VZ;ygwM238;q1Ki9ImIhQ{E0AUZv4QH?894kIoEW?qTp64hLKr+5To@SG zSeST=7!nzZ8A=#Z8HyN^fb2Ym6oz<)Odtu=#mc}{1QZ8}qygoUf$H*se6S3A5s+OD zl*t3?gNY>r#d1)^xRQV(`9QtdK=BlyDJ4M6z#+iOi7b%~bU-E0wPHZmvVuK!0O)8G zaDu5~&fBYseX52$EEg>A%Pm})c(BQpTZ*mCj3?*E!wZ(DH?`JJ*?Gw8;<}LjEmBh- z-QY{Pl`GxGTiDm%oRRS%%~|Vo+1brMb2nbxk}z4p?-{@M7T3TB472TKzTc@oe@R=O zFFrCx}<*lerjnM{J#bp!D0n_|?Cct$!5STJ-SEpR>!a z-?RC3G|2z{-BP3azm@fpYajlW+xwlrZ(sd+6+L$|Imbs65k9A{-6HZRI@QK Rtl$5eu_f8b4B>9L%KihEyOc3CPZ4NCApw0!ao20U-YWpAks%0x>?7 E06fPI3jhEB literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/int8.gdb/a0000000d.gdbtable b/autotest/gdrivers/data/filegdb/int8.gdb/a0000000d.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..e1cc3a70f7fa330bb47d2d1317199321911b6c66 GIT binary patch literal 598 zcmaKqJx;?w5QSfoH4+eLpyC9GTTp_iX^mq7wn!X^jUXKo4dM)lbI{Oo62uuODEMY= z<0VL}G&4JX^X6yA14%vP4HaSAbKI|QyUho~o!zlp+L$X*sY+wbHR4|ARIzfjR$PBr z0$k}DT_{Dz*b$+yBdvzyhGgGeL82+qa{CmDwAN)l(**FGnm$E<-1w@MvKm?MI2oyO zI2nB|vnnlg3Et#`HPMV#FKBfs<1objyZ`_I literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000001.TablesByName.atx b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000001.TablesByName.atx new file mode 100644 index 0000000000000000000000000000000000000000..d5b33644e4ab3274066f00e33ed50bd8943c2519 GIT binary patch literal 4118 zcmeH~ZEk`<6h*HewQ6hE;1Zf{h*U*ON-0q^Wj8L>^CX05L+GD6V=_bT%rF6Ra_2q* zlJtVCJ)vhbLsQg8BlL)d=mCw<0QJxW)%P;(Y-?@xuAL(Ky?z)|#z^^jeWh>aZ+g|2 z=1z`=Zvok-*L;~)9`n`v?AQKo@N9u=))yo%Q|u&XZRxK066j*8U`wA;D}@qjBcpOY znB|OZPx#;Uzw#9-p^R_NdClj_r?y?V=5ys!7oX)WCwYmMq%S3V8%K$|B(441L046U z(HZUf=2^QWtIis}5}vAt&B4MG7yWu0|90?j_R6=ff`+s611DS%90(2s2Z95^fje>F OIPXDfvOjxkHa`J|2+n{2 literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000001.gdbindexes b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000001.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..b02aa7510589a8e036faa03406cf6d841029f368 GIT binary patch literal 110 zcmZQ#U|?VaVmAgC27iWl22UW(z#ss`|Nk=rNhTnMi17efAq>*2U}h5L0`_fuC?BXN(Q#94 z;6U=L-l0#>7CQsAyD!Hz!THh%}iJM;g3DrcFkqCP7ImHvV{o z?KWwh#Dz$f9Q*G3zB`}KEdam~89o_pGK#OWyPTb@7U=#Co!TX$U4{6>AOIn_1`aVw$t)&wf=(#gU`UYu?2c3ox(0GO zuI?fA3LT*zzBKa#yqM?G4Cgoq=e{&e;vl?Uq&N?gxKA~#Jr9)&XhQ|5wx?P41fm@m zY3IkB&B0i;CMvSOu1xlnB>I{9S?14Pa)yVcp@S?Nj@7$*Y=p7@oU`i6h9!Hv#WT)g ze*&*OO*d4}(Z8v!0g@$dzh^^-D&{dhQJX!Q29Lxr7#2x+MU%o-q};#Br65TooL90! z4|mhKmX|g|xS(eDIeFgMST3keDHZvbB774@i)eiYS@^qp5G=`ctV-|%&7hXcT4c>w62nN@a;TA-8V{K>>}pstJ{f{uzx zwLPMCxx@M@yVvWi+c+c2B|**yRJ90~?_BEwV8tnL66iN6&m&&HZqj>EQP1vYlw>%Z zvWArTxfI6is_^+f6(ZK!A$ulRq>T!y*LmZ~=!;3p`sW+_TcHP+nbl)MpW^1U@a>I0 KE8>8gpP0Wjd{iF* literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000002.gdbtablx b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000002.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..7c12c568195050346285f43f1164067d9ce86e7c GIT binary patch literal 5152 zcmeI$uMNUL97pkkmOm2^Jhm2##9$eqEP*Rw1rkOeL9hS=;0Ue>8dF=-gapO!jZptC z`F_laOP;(er8I~wVx!n8mY&eUoVyj2aD)qdU^)!8P{9j+u+D-5Jm3qX*gyq0c!S3R7O;Q?EMNf(Sik}nuz&?DU;ztQzycQNS%9xS#`yy^ CN)wa- literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000003.gdbindexes b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000003.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..58df68d525b47a895d5876a8bf5f437a90afc3f0 GIT binary patch literal 42 mcmZQ%U|?VaVmAgC27iWl22UW(z#ss`|Nk=rNhTnMhyegseFSR& literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000003.gdbtable b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000003.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..d2447c43769369f0756c9b16ec58af579f7b08fd GIT binary patch literal 1025 zcmbu7F>ljA6vtnZHbl^gFMxCtgNYnFPT~a`B~EaK{PowaVNOD;oOM{;2VO}~xJ(Vi;s-`NsqE&Rgs^ZeLHpd62i+Dec$Ir^m^#9TM zLVx~YJNy6g+sT`sA5U-3-~RYyJ?!6EMezt={<_e2>>Y7Yqm6geWPjjU{xD|LSLGg& z)-f1IJbp|AmipFMWb_LlCQB%1K@!C*nBpo02?{i7qmiOPK>vjVY1%tR%QNlXhUCeFr|Jc2*m-gxVo;_e%s?70!fbcsc#?nHjgF|W?6d!7DZ@8st7is cmeLFNOvKXl@a)~mmm6E3-~Y4bs~TtHF9|IH5dZ)H literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000003.gdbtablx b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000003.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..2f80ed4fe5fed90691cce6424c11c3787cc56315 GIT binary patch literal 5152 zcmeI$u?+wq3Wu4?Eks@ca-hDPs=P@O_j5H}( ztE9Fmxok#lNO9}6%f6kryosX_fB*y_009U<00Izz00bcLXMy)O?XSfDOZ{tp0OWW^u-7&jC7*||Fq0|FCI&=X0c+^cwBzoM)N!20)V`Z#gNl`a wTp5~+fLGJfY%|ev-tuM~4S^5{fe;9R5D0+~2!Rj?fe`q!!26r_e-rrnmoN4hP&=SoH)4+8~(OVoEK6eWDtb^RSWo63ES7toeSo8PJF)92>_q`Xu-zKjB literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000004.gdbtable b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000004.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..5f431921bd0c0ba94e61c40153f9f3044c3af467 GIT binary patch literal 15189 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 literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000004.gdbtablx b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000004.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..93fec31b61e3d8dce2c753b4624c1f43c4d16239 GIT binary patch literal 5152 zcmeI$!3_W*3vQKmY&$ literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000004.horizon b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000004.horizon new file mode 100644 index 0000000000000000000000000000000000000000..b64b92356a70378da21d5ffdecaaca5124025076 GIT binary patch literal 32 YcmZQ#0D;N_OdzTu3_>$hIzagj07ZNRrvLx| literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000004.spx b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000004.spx new file mode 100644 index 0000000000000000000000000000000000000000..920fd545043e3bce8728eb2cd8917022725b7293 GIT binary patch literal 12310 zcmeIu!3_W)2m?Trk7K$2RKgl~O`7!Eix2_?2oNAZfB*pk1PBlyKw!E+PCw`$0RjXF r5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U_(0&?RWG}pUG4ncy zvI1FwtUy*EE09tFt@&@w2;AX*44egzz!mTmJOBl_4W5IW;2d}XZUDW1`8?mDoOTB4KiNe)23tWnWt}0< zCkbcfHTYHVlWqM~2Y<(cxBL>vYCIpO_R0?-Qiu4P;?|pbg)Q^z!gesrG^v$qK7SoX zicihG9%~u#Q+{qTaa`@E*KnDiKmSuURz)?>&y{^87w%$hAC*?#UuKd04~N$4Ixc`S z;0d?}?tzEkG&lk71N927gJ(d$8Mp+lf`c5feY|;i!>`24wc?-P=L=u=;N#*~QG;lG zqgg6_##&~u5tx04*-w}A=LWn~MS7gurR0KN94X5>ry6r+^kb;p^!vLysOOF2 zXY8s@NrjcQL*Q+OTg7ixPc)US4^o5W|H%qu1+oHJfvkWO_*JyHY9+7Td>tD925`t0 An*aa+ literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000005.CatItemTypesByParentTypeID.atx b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000005.CatItemTypesByParentTypeID.atx new file mode 100644 index 0000000000000000000000000000000000000000..269f1f31a465213f69d5cad44ad6d2744b796761 GIT binary patch literal 4118 zcmeI$$%@1v5C-6$ec$(e?>QA1HCi5xS}zsy?(=7uzRamFGtjgJUks!O$&VP!WHOn2 z!dTXLyAdSeEM5PtiF3I?S#Oz2+Q4;Xop+$Yz&`gLY&~(Ou&j=Y6hSHHpQU6W(h) ztTGgg60*L{6pIz=ICv#iiwSnn<^au1d^ab=O^a}a_`WyNU`VRU5dLQ}*`W1Qsy$fBr{(?S+K7u}neuCbD zUP9kOA3{GuKSQ5E-$S23UqN3(??JDjcc5ROKcP3}xiw!gwhubT3(3+&KAMv3-DcIQ zX6t@ytIV_eBGp7xXC?0}G)MMgRwK6DZ``MrdJF-%N#Y!eHI2+lTkJe$ZHO|pHdn)k z50iLSoH#pq3Qs(`y4`Owq(`Zpmexihz9_agYLa{U=*43rYA=cIo3zzKQiN&rjTU-2 zGo+uKdB62JRJ$6T=_qckO@n>Xl*uNII}h}TMwtib|T&0Ij$Fn7%N5V%`8(hd(y+c5W&hW9R(a*)*<5-Mm` z+aoGhM7hl!jKafl;<(aGaq6XDDpmUI;N?2PQAvP z=wJLIhdEKr>CJs|DkCac9ZsXD4K7T>w3VH5q{`N@hoAc`xZr`S3I>AeHE67ZR~pCL z2wn$XMQa5>2f;~jA@b0SU8wRtC(BsNa3Wlaczg&B1 zXV9>Y3H4M&H6~rFVo!@rfpgYyX?0Ip9lI)qghL!u~O;Sw1ds&t%tN< z?0Xe*#zmEz2kMH&6S5LL}D5F!FlknsCrsfDqUmDbI7PK|7OI ztyu7j>N%^xNls@QJh2fviY2ZM-yVG@Qr_Q`zgUkx9|Rr*9t0i)9t0i){%-_cKYug7 MzMcQ~Ux4fNzfc=rO#lD@ literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000005.gdbindexes b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000005.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..bc887093f340449a4e4f40224ff3a487814c09a8 GIT binary patch literal 296 zcmZQ!U|`?@VmAgC27iWlAWmY)Vn}63W+-9s1d1^*2mtZ_|BOJA1Bfx@g@B^Y42fX% zB|x3I3?U4a3dhbTnfm;XF>qb^dg{nc|bd0W}}-3 X@&j&lgxu%{v>_L00|Nu98xi6F*S08% literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000005.gdbtable b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000005.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..bf93ec49a465f6bf1205fb164e92bee5b3303828 GIT binary patch literal 2071 zcmZXV4@?tR9LGja+h|ws-Oi@JHbdkjWI+UoZW*Rpq%G@ARR|)Jr+GE+X$+g#e-_P&;-tXVJ z5(F_1UZ22gGQ5P(40p#}kn;gr7oqz}=+`}!&=KniKYXQqTPhL8bUsT)Dms%dEx6XL7ZwaoII8Q9t zM=rG(`qvz6+OH@JzLPZ+DeBVAuD|IQPA6Df=Rfa0OGSBWNR9`rfXE=S?6lhzt7TR4 zA$zN#enB zzO_s17Vq1b-0=Q|UN!Y(JDzl3IgjEKG3*ax8aQ6 zgjZ6fg$FbTQ;JFq$U=V0i?u6y!qootdHW{eoOgNwTL_AUt%4!ar^zqO9SoFj=HtBL z4QertxN8|R1DmTj8j7`-(=T64J|S=1lVkh%!nbGe_|8gZ^p5({fLy==T2IjvZHdYz zwe#ZfZPhjVlm{{?zMD@1U`&9A$q{A-Dx1%#w}0+jwm$Bg{q*D3-u6D65^EX8 zsADWB+^T$zKW@v6s}^;!>d>|jTq}tOBwxV7T6PQ=R5o~9;fzY4`! z+&Z)DP4bE+x+&nx^b(x#)d1soAh>mu+0krh!v5m|Zm-_mtF+EF-DsXxl7M5L>BaQK z=nH^Af9bu~fk`J~8fQNH@y3jRHvm^HMWeXliNFo}Oq7XmZsd*uG-PdleLrPK?XmCp zx#?D%a=7E{GZZKf3uj(f>6)~6&cbH{S$phw;Jk$3j*l0VI^1MX)Acd)XrTJ54ISHR z)|?*}JJW!w_vNI{h^xx6q$4MaT>3Wc@x`qR1JXI}QT5{HZXKCi@oMY5xb25Oym((6 zR^_e%98&-%J$l39qYd}X&GBYK2fY?E@R>pOP A4*&oF literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000006.CatRelsByOriginID.atx b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000006.CatRelsByOriginID.atx new file mode 100644 index 0000000000000000000000000000000000000000..80df1d23b0c397a9bcadf5c0ffb78f4277fdcfd5 GIT binary patch literal 4118 zcmeI#Q3`+{41i&~OmBlM)A_ihE*0IqEP`$z!7t2hPaEIcoO78qbxrC&7TT(-h5u0Hq1Rwwb2tWV=5P$##AOHaf{8?bWum11l-|G|cPzhTA literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000006.FDO_UUID.atx b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000006.FDO_UUID.atx new file mode 100644 index 0000000000000000000000000000000000000000..b86804c03ad62edc163be6c3b448e228e92b2513 GIT binary patch literal 4118 zcmeI#F%Ezr3 zc~;~Kg$2_Tv8XF)4Jfht&5j6YskT ACIA2c literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000006.gdbindexes b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000006.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..c608a88be082bd48fb5821f6bacf48df11c2495d GIT binary patch literal 318 zcmZvXu?oUK6a+_6v526JAEZG@C5Wj-MI<6B#>TIYbHordSM0&Zv3dAtL4iW?c4G0C6X92N+;_M6@{tQVBSq!NR$qXe7o(wJw3~Ve+ zETIgc5DvE*6HrAFLncEy5a&Szxzt$LT!31NVOoF!EFlb)3bd^TFzhfWny&2}TxH23Mei{vHxF33=j^@4v#`c4f+qr~A29?fX$u z)ao-Q?f44G#mgF3grufs{WNr0sWW5Kn?v5Zt3OuUd1A80d6&D4-|7p`kAr*)0B`^} A-2eap literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000006.gdbtablx b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000006.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..431307d13c60381f56be9a7c0c765046b36cb27f GIT binary patch literal 5152 zcmeI$!3h8$3-MA9039Z2oNAZfB*pk1PBlyK!5-N L0{;rUe_$^>!R-Lc literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000007.CatRelTypesByBackwardLabel.atx b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000007.CatRelTypesByBackwardLabel.atx new file mode 100644 index 0000000000000000000000000000000000000000..8797338e7a9c750c8dff7448fb1f9ba3da067822 GIT binary patch literal 12310 zcmeI1=}y8x6h<%Z`@a9`yFf4|Mvcn@Ac7K+62KVW#z*zs)_I{>NWyKzz7%tBVYuKfDtePM!*Od0V9wn0bTQ-{20*hJ#>ur(E(aT+vpUnqXIfY zJLnK?pk1_vHqkO#L}zFVC3%Gfj*Ifb+P*1ItmMnA>h-9`+CGqLse51DyR!#HJhjL; zRB+kCnfi<~6J<)8t$4?6O-j*mh0KNKC*1X>b;T%ue`%)mf0NcT%%74BawFD%2h;9v zuwTVdaYrt!MaC?Dii7^bC~9wsf;O?NS-m);r*SiQZGTJnDV1>2B_g%Ysgp(&&(kux z1mennp5s51w`f%9L_D+2fx7%%;x2CEgsirG9qFj3eN@Rmdu#n!_cxf&&N@b1{HEPs z?7vE1YkKQrqedndzuEFvW{i9!a&_Dub=T>gn~dM|`RjkurN?F5nq2&TXA1c^b@{uG zo)jJWT|6rs_rBA*&h0N`CZjXykf)fwfy{Py`%`v0{$)EaNGQy@KYPE-B7DfEYjoX~ z&`NaV=fl;1@@}7a)YQ4GuIx1v5a$5;SN{Qdj3#l|Wltg_n{Pj@Vzn9pBVYuKfDteP dM!*Od0V7}pjKF^&@D&ueP0ax48++Zf{0+VJ$xQ$N literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000007.CatRelTypesByDestItemTypeID.atx b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000007.CatRelTypesByDestItemTypeID.atx new file mode 100644 index 0000000000000000000000000000000000000000..47d2132ee8b7ee9a518ea5306182b61d0b93f04a GIT binary patch literal 4118 zcmeI$xsKg1429vFWU@{6WhTo5q$8k(qNtJ*rI#}N?m0I=$|=$W2_OLjY?Bb*?3Gtk%M~PCapa1Ms4K-H{jkKgeY#~#dDN!18Oe?+hW#_S{{;Y&@ zDCS;BeJOEDm2}ylyoUKi@~mDd0c7a`B7uW^*0!N_*mv1pEVm2FJ@jCOJ#lYKm8GZL$riEF0g>s(Kgyg2k032 zeT!%rZK4c$dvj<7t)exwfwoY?N__nx{(OhrJ^Iti*LVNE;CyWVep36t(Z13i$2=#! zUHtlw{Lbms0t@3mdzvSF7F)W)&VChh^07D?r5>sB5j#!W-*L_RSlBf^dqe!o<6tRl zvhQoXAbx+FUz7QxLnPb3-EwQ%eG;GA!2FW=#G~pyyLqI&WNx|Rc#w#-qdB+>zuRhE zP+(n3YXsRB#!{V9>c9WUzB;`c?h(JhqE1Qt>QD>!q|Of)ILYKbzNZs3UzOtQQtzJ@ z|48Vu_DE^X5k_|&r&H9b2#A0Ph=2%)fCz|y2#A0Ph`_%f@S115r$+$X`}gF>Z!;8~ Ax&QzG literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000007.CatRelTypesByName.atx b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000007.CatRelTypesByName.atx new file mode 100644 index 0000000000000000000000000000000000000000..70ed36c3fea8bbfec79d541e8f5931e81151e214 GIT binary patch literal 12310 zcmeI1`%c0z6vhwU@Avy(dlw0Y#Hi8v0E&P_WM<45-o{7u`#KCOfd&({F7b?fvTo9S z`?cL^&qPEj&;qmw<++9OB+t^7rqrb;cPPcuK&dM=b0(G!%7M2}p7*YGD*+{-1eAah zPy$Lo2`B+2pahhF67WfYYyPvLfdhOWLc7p9bPgRsn-FsZd(alN0bM{l5P!b}v5r${ z6@6!X;$Zu` zm6qJY*#{glZ}L@<&eWA?vrG?uqQc)I*u!w1Jm0=f~{ za^$oiK6ltd$-JF2ahE@vmYeV`N}4{{Dr2k#lz7(ZG`1} z-0d$yBw@6RFb)QVjMwqIb^9YbzAdmv%6J`lmRNt4;6D)f4l1}!uKf8%pBu|R D1zNXT literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000007.CatRelTypesByOriginItemTypeID.atx b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000007.CatRelTypesByOriginItemTypeID.atx new file mode 100644 index 0000000000000000000000000000000000000000..139b478cc0a4b689389507d63d6ff6ec57496bfa GIT binary patch literal 4118 zcmeI0$*LPM5Jg|+d7kqD*%e5tNm^-NxLZfXasWanRL#a;Tfn`hmdbuqnv7~Da zvXVDR5~iksa+>z&qI-^cz36CWYEFApNBb4jxDFaJ*rl*?LwifnCCyF65ETtHTzivm z!(Nr^j(Tg#le5>U-HiGkjbzkHT{Y9(yQdzxSV>69 zk&{Mi!jcqq_(}qOUL?45a zX$iJ1k>K9l^Paw_AC_bzUkjoJPuZjO%=y+7E|E~F5oS?HnlX(Yi89CDGqtsxub10W zb1DPWowK9;aB95`GFemGY^@E<@wU{erm5^k&9!3M)2OY&WNYP~a`GWCv09aqW6;uy z_MS0EsVKmlWTl$Zw(BKE;69kRJG$dU4;;XLuP?%vVHC4sLbs(h&JBlcGClUFS*UVW zn!&B=>Wc^5|HIVZ@A~tb)4*xqG;kU?4V(r}1E+!0!2dDu>;8%TcxwOi7U1~&8=s}> AV*mgE literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000007.CatRelTypesByUUID.atx b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000007.CatRelTypesByUUID.atx new file mode 100644 index 0000000000000000000000000000000000000000..dea48d3ebdbbb51845e4bdaaec08af989846aba8 GIT binary patch literal 4118 zcmeH~Nv`EK3`Kt>skD{8sb&G05fCLxqK0gwO+CE5*YyW7tZ7CzZ~@uACaFVe;Fp(| zmru}jeSrRg-ayy0AEEcq&(J^6N9Y~&1N1xe9rQQ!HS`Vi2lN~C7Wx+Y75WAG3HlTI z9{LKpuP+mLl;q;gCe<^9r0+pKEpQuk`l;MnJRdxFQA?-ljY%?+^kh<=Ue{JVD((5G z2zEvv#NtLG;k0ZN>Y6o0&NPLq_pApYD4ZwBZk0>}tJxQCtT;DZ+N`@7wce4DZIhZQ zF>9Z^PE%cQWtLz&h}DwhY$FZ$aqFfzXQab*R?)r-O;k$Kx{&P_)FhB)ZksC4$JjeF zW7CkcKtdKFf6^)4+K5{E&gWxRRF&rVxL1@Zp~0~s%>#)Vphh?f|Pu}5$)8M6Q*gQ~_Ltq9Fc(9U-D;0c#R%E7x<<_52VJ*qb9 zc&~AI*;crE)M_V@rwzC`$r&Vg&SkZa7+#+b4zpKv5~6CFAf&P=!kmzfR7^NozP{ZZe5OHdS6!@ literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000007.gdbindexes b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000007.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..2a98c93adab6374c865fccc1045125683eb4a05b GIT binary patch literal 602 zcmaixVGF@f7=<5Fd_a6e{>-eEl9l)@8wnelmHhfSvslCKT4%fW-MP=X_q|P^Ejie@ ztR;^lJA7iMszFamlA7Kv>GywM)d?H<7g`sv6;HpM-C2SERT9zjtKJvR}JS&t08k_L_S#SGPiCL9r)!ePG?#u zD|Q4ysahx?6s@(Qww0my02RfzfQlWpSlXhFMbxo-$p(^zHa0Uicf0%l`~8pa|98_L z05A$Z58z`5AJcD=lkv+NO)%@W%(o2y_P|~YV!;YP02!cx0Pp}9VB60&8blihgD2QJ ziGdc7KnW*kC>IYTAQ>dUFM~8Az=H#wLA`GQTM>{#Jp$tHGk`nrff{bQ8cu709E8Jn zEL>JWfwxe=4mbwGDH&M#Um^mC$%Xq+5LpThqzn+u2!MWe;2ZerT=e2Hr;1g_%U!3&$sD1Sk}3%u2dQ!lx|2VWYH3nNLMgZ; zpg5+jIA(is&}IO70*%$LaC^1qXV0L$MRmGBY9jAaVB2!#gw~K#Z$FLO5w-pCoRb4C zv{D%%BIwm>?Mg?JHHNj(xD^Ib4w3~x&%oA-FYH`5 zbqKe3&97R7Uu^mA2<;V>|FR!(bIF&rA^BeMm-o4>4IL4cOvzAo1r#%gBob7lOzOaV zoAT~~gBuo+qz&XgL_T-_di|^&R|C`L|8o1yT%Q&^8aOG2BT`s~!IBp5=yb=ZBU@AM z`tnO$0%{gIkgRP7uZqUTaszYP)19kAUY~s8nRaW#HP_IcY22wodzTk%WO=vWXgmzP zX+m!DoQ-?l?eu2G=?A>LM}D2d7G@XD6xB4>%)?W@6@dM14lBg@UHpm-xpSX-Ky@vl zBPiNXu408bB~1J<7ACAebJ3CALui~u1*4)otEo@Ebu1_-oAtf_Jg*fe@JweG-1c7o zHeQ%HLDX6)Ri?6#_hN+^1^S8rlH-UK9CJ>fqAZD-y(D5rc~DmI&~(k-S(&8Y`u)|* zWP+-Du7AEB)U3lJf)ynUuZ&RfrLkI4W~~Hz6{S&`W7Gy`XcG8P_;xYRZH{sazg&lvLz2&hm(9Z%5En0G8oPn;j!8}tIAh)txUESgAsTPOo{-cFlP9*jB7X*5+0oKQ;hq{ zoVAU3kHE`?-CZuI1E6sq6*C$wanuT?h?#C`)=>a393HZCpCh}5_zHK_*vq}jcgLo_ z)~w#LzfrtlyeyynTj4Z345sFQ4tzvUgk&ukz4|CpH+4Ax5}BBgYbK@MEG=44W?vw@ zv&p*v=P1qy7HZ)}Mj%@(DPfh0NeuAP*|Neaei(1_fSaYQhrj(mpwZDsn-&LW+8)=6 zd=F0jw`2$?L=J@Q!d1i0N>VzLWA11I_Dp!Su@ts}S22iP+L6@s>+~{iRj7xkwBgYi z^}M8K=LuHG#^Dz~OuyY&iDNq>EQqaE$q8*QOjZvjNtq0>0dWl2oveH8X+9T(+neu3 z7G!jC@y**i{5RR^6=4S!c>LhKB|zrPQ^!Mp1QY^w?s3qt&?go!9>@v&tn8sfYr{5> zuHxqT57{`w@NAk6WJ_vUrqeo+4CKDp+)lle3qq<6{q^z8YP)v)Hj6`hA|jdYo@Q6i zK3VlYFRigm=qpY)d@{GLO{|Zon^Sxvc8=T_mAmnvo<tL4H9cf zB_yd>;lv|!G)Wn5C2$D9XN)&Z&#y$Y>wHDUXF`{b(Q8`#6KAZF`&EP;_%SIU#rtR- Z-lT?Oy_(Q!A$zTLr(Sm~iBS)Le*nHMfzbc} literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000007.gdbtablx b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000007.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..bf096e13d28fc61c7dc794d7b965ba6083f1f807 GIT binary patch literal 5152 zcmeI$tqlS}00rTN;~y?~+Q3u685C$bpaX)#(*j-KNC*~%q6ZYoIo=e3n@!%AY_e+P zR;83qw#fR~oXZuK-Ef0V6`s)a!X4H;e!zARK5!g{77n9O#@QL_NjSk5cGK{N{Vcp- nRfh|BEMNf(Sik}nuz&?DU;ztQzycPqfCVgIfqxd@_m6RY0`v~Q literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000009.gdbindexes b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000009.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..8211a233625ef9fe771fc3784e2a0b85f3984089 GIT binary patch literal 112 zcmZvTISRla00buo1dBi(B|@4gVxRxNLMMe?idlwbcLfefL^7}38eG!*Vs0|qQ=iLZ Rn`soPpGSjT;Clu6TMVar3+Vs= literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000009.gdbtable b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000009.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..2f57afe612e0fe285737627ec1ba5d1dde43450d GIT binary patch literal 2175 zcmeHIF>g{)6#iZx6q+b8&L)~plAtM2TbT4&pkfM-09`Z-Qi9xJY;^EtA=>8 zDnWWh;%3x-vfKFl0&=*;9N{T73d=N6bv;e)&_P47E3+=WR|NBl;R4w%BE~t!ah1$N zh_JRr<*#9l&!Rw@Y?2P6Wpb}_G_gzE3hD}J&RG#6^DOg=4*M!WksTiX4`m74sBY|Jfr-Ispqw0}!(KR%%P7J9~ z^twVl##y|Fz>yBW3DtTF@$5FkK+009C72oNAZfB*pk N1PFX9@cx14zzx2_03`qb literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000009.horizon b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000009.horizon new file mode 100644 index 0000000000000000000000000000000000000000..6b4ea069980c9e91a8444d516d526a696e00496b GIT binary patch literal 32 hcmZ2ymYe;%BlzGm2KO^R1(Of11M<5g!yTb~M*s@G4_W{K literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000009.spx b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a00000009.spx new file mode 100644 index 0000000000000000000000000000000000000000..6d236bdee5ca53a730e4092d11e2b31f1f938a7d GIT binary patch literal 4118 zcmeIuu?YY$3sk5#sx(8MC^8tlT8R)KK!5-N0t5&UAV7cs0Rq1Z+&b^#bThjF D7A^ox literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000a.gdbindexes b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000a.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..240144ef31ae76a6e98f8311d7c20618a5efc563 GIT binary patch literal 70 zcmZQ%U|`?{VmAgC27iWlh9ZVUhGK>ihEyOco*|PV1t=!~#Q*;@0!dCF#-;)QV_FK? literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000a.gdbtable b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000a.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..ad6992afd4338fbf4476592725402ea99529edc6 GIT binary patch literal 280 zcmY*Tu?_)26dY$)PAEteYLyST54fupL@hzwoos@WJB?1G^BWSMq1UMON{vFJSo03W zO)`1A^JZqZ44_1ANlpII7Ln+FN4{5brmj#;F-3+ABBU6@AOtGPsTbuK3)<#1GNn-q zY0ofY#9+;^L4pKmiP$Rk7;qapq2aw$*l`Mbq`(sL&);7?Uqrz3gUb=O h;k9{sVsh9&?habi#paTub0?5Fc=hG!0<3lN`v*4cDeeFO literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000a.gdbtablx b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000a.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..b48fa99a8c383a6940493d0467ea03bf4adbb29f GIT binary patch literal 5152 zcmeI$!3h8$3-MA9039Z2oNAZfB*pk1PBlyK!5-N L0{;rUe_$^>%s&9K literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000b.freelist b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000b.freelist new file mode 100644 index 0000000000000000000000000000000000000000..58c2e81df6093e2baf05f54bd2a5ec64d980ad02 GIT binary patch literal 8536 zcmeI$!41G52nA4Fty^`4&eokO|KQOD>?0uUlfB*pk1PBlyK!5-N0xhui|NH?2WLMLdOsqFK@B06K FKLNJQt!w}Q literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000b.gdbindexes b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000b.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..0449ced6cb124413cd552d9da2bd6506f217b832 GIT binary patch literal 66 wcmZQ%U|`?@VmAgC27iWlAa-K#VsK?}W(Z;M1d1^*2mtZ_|BOJA1Bfx@0s18e#7MFy&WP9BDxssuDV(Wch}u)wOrBN*a}+8Jm|rd)u5=rYXzRV zbrCuQAsy<_A)-hx)uq5&e?ifqV|dv+;yT&?O{Wq=3m_MhOinrG90VR#K{~scJ6ivSu}>36*q(`LwR8ph-AhwW^uZ z4b5QnRb7!iQ>@1EP_U);O}SkDZlM@;8ufjH^TiHq$j1Dg(#pw4eQSeHS1#^1Wi=Fd zwXyFWC(N5R_W8@A%f%-q6kF|&x%`xyclo~L(&qo-Gw?k022NY6KMKF8F7+@{$hbNf z?Z6aLFTl0?I_bJN)+jKxV+$ceq<#urgkgSNy3J_;)x#U1A>bZ1z!lUkcv@%KH^4p8 zJ}AM;>;=xsD91dDw%W?3J)hDRBv>Qq?n}f2InzO3~{Q!HWp%Q&D&iW9P*yxoJv_I`ilAuJ z@CZDNXVm*3%sfgb^dLJK5vZ5BWYKMXw)H{Y`yuC*3;O@s&HlC>e5|I!*n?i>2oZ$2 zDFTlWNw0Tm54Z1pvvq=X;^vz>@Yx=TG4JFN?{#}btl#n;2mcbc{;lu%UwjSCtx+;< zl98egmUSDvgE+e#Wy`u7)GhBQvk<(3Us2cSh;jO%(ywWM;U;vQJ@ybu&!L}h*phYQ V(jPuz_HXzXdv|}{Cja{l`vI;M#wh>* literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000b.gdbtablx b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000b.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..f79309ac9d59965ce79740f30268672a877af853 GIT binary patch literal 5152 zcmeI$u?YYm3c2jL!`z?WC1MnuWBY|oyIy`0Rq-Nhw9fB*pk1PBly WK!5-N0t5&UAVA=2f&KlvAHW3>h5)Gm literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000c.band_index.atx b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000c.band_index.atx new file mode 100644 index 0000000000000000000000000000000000000000..2ea17a12cc0021eff3629156a3f453705d812f6a GIT binary patch literal 4118 zcmeI#NeX~45Czdz<2=tE$NQhk>P5f{2rho$L3T-M6WYw|g0BQAG6du(P@+PO1}!@D z7%*bOj0Gz;>^N{Dp21d21yn!&Y_ literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000c.blk_key_index.atx b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000c.blk_key_index.atx new file mode 100644 index 0000000000000000000000000000000000000000..63dfd80b2d642ffb749cbe8c0d0dcfbb1345e15c GIT binary patch literal 4118 zcmeH~$qs@r6h$A-^E@s40WJXj|8Mg)c&#F~kCh7^gBc}QAFed{E>kk=z{?m zf)N;l37CQzn1cmaf)!YU4cLMm*n=ZDfde=L{st~Pb>#AXmLGR~;-orxUyV&}@ibj+ zo+h_cxW#LpbOySb40JUaLiTh9x|$4hH5qO#dZ4SxKv$FD-Xa5CO$NHL3|z0U1AnhY z-Hm0S%Q27aNjhOnXW$xZ=A|3UOGncKUFMBt;6C`Cw^JWOds%D18n6be0c*e-um-Gw Qzc+Ao88UeI58Yos04P6SAOHXW literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000c.col_index.atx b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000c.col_index.atx new file mode 100644 index 0000000000000000000000000000000000000000..71f5e80927bedd73e36dbd2c2301f8ee8d6abcbe GIT binary patch literal 4118 zcmeI$ISzmz6h+am;ylkT$NjI$OJQOx>@knzbQEwKelRmT;8z5P92Hs&n6O~Q4!=J} ziUKt{jF_<@L530ydT6PD3aEezsDKKDS-{T-U;JF~7UoTLY86lc6;J^c_-_Gs-mm%d G7vKWA8UeNd literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000c.gdbindexes b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000c.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..031560094ed7aa017e5d9ded12d9f35a4f074c60 GIT binary patch literal 308 zcmaKm%L>9U00c)te4yYr`2xLo@h%mer&A@Y_e)E}b!iADd{@UI-FWsSnKrU2m=gx!NSKQCcrfpvF?EPUJHA?yV fOQlrY{!(3|qr#R%rjROJ^X{d?s?e-Rqc(g1!*D1E literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000c.gdbtable b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000c.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..397f10b528fd5becaf86a709f7737b75b6dcd917 GIT binary patch literal 16203 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 LUpvAUMd<$n$#SCd literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000c.gdbtablx b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000c.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..b1a7e93b93199139c7c36df9e9afce95cd84645c GIT binary patch literal 5152 zcmeI$y9ok87)9X`ABZ5!g7^SIR%Br@5Csv%60E=`Obl$m8VoF9I}i*E3@yUQ+zLF? zgwgroe!+w%oN5T6!uqVv-Yi_=%b^DM24pSxw&9b&F@>T7r!Fi9a2rBCf_Vn7F`Or` zD_}o`#|(N4c&^~OhH?YVEqE5NfCVgI0Sj2b0v51<1uS3z3s}Gc7O=p73dG;PxOhLS CP!7TX literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000c.row_index.atx b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000c.row_index.atx new file mode 100644 index 0000000000000000000000000000000000000000..709fc8c55c36486364ecfb4721995f89ea36c416 GIT binary patch literal 4118 zcmeI$NeX~45Czewah_+79QlkE+G?F#`%jS8rM3aEezsKAE` L_%poj_g{buOLGCq literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000d.freelist b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000d.freelist new file mode 100644 index 0000000000000000000000000000000000000000..e8d168993dd6b1bc9ca98c1c407945338b3ca845 GIT binary patch literal 4440 zcmeI$u?+wq38>+*ZTnU I`9gjj3YHG5RsaA1 literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000d.gdbindexes b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000d.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..142048fb144f5d25724c60c5755bed6d000a6f30 GIT binary patch literal 86 zcmZQ%U|ihEyOc3CPZ4NCApw0!ao20U-YWpAks%0x>?7 E06fPI3jhEB literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000d.gdbtable b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000d.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..3875a6ef80d128ec047e76fd7352a97a36619484 GIT binary patch literal 598 zcmaKpJ5Iw;5JfNXGvX6y*Z`uUV-2Y&D4?QsoRDCP#0jwxM53Ukp8sKNTP^1*Cb=T?U z0N1)fXBwg-?0{6*p*DSTO|t(kqtKLWxgL!|ZMBuhngCwXvn=5uw`JEtNrh~;oP<&- zoP;@7S%sFGgV*(7O*CWFD@I+Z*!8hLHFte<#){T4W!*@3Qot7fWGt(UaKzfisTn`9 zkH?@sZgGPTdH1-yM!9D={T;i!oQvDoGxzO^`r?j+rXB-#k9TYrcl&z4m~0^P*Mpwf YlaJHVHu2MY6~BD8_|e&O-^9v%10Yja_W%F@ literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000d.gdbtablx b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000d.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..ac6a3def3cc485cece3960cc04e09c1f8323d3e3 GIT binary patch literal 5152 zcmeI$!3h8$3&GA_|X9Y literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000e.gdbindexes b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000e.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..0449ced6cb124413cd552d9da2bd6506f217b832 GIT binary patch literal 66 wcmZQ%U|`?@VmAgC27iWlAa-K#VsK?}W(Z;M1d1^*2mtZ_|BOJA1Bfx@0s18e4qX5F9mWb18c9PzvQ8is-2z=v~ta7Hd$e?X7IgLjy4>oA^8Z75yL1({^EC z=YwIl0pN!CB7EY1I<@Q8{S%z;xt+R)Ai@}Lctwa0O!2}FukLR!!VGK5s4?q@h{)!Q zTzD{}KWF%x>dK|O{-w2btwnDD+(x?HizZI16YCST(5jWJd?arWp8?RGs-`=sY+^(u z&aBBKPnvYym3IqXG%3`U)jg?uY;yow?@|@2l9_I~*JIp!qT#;(9Rd$yQEQ&fGW`)v NCFeSd*;(W^IRl&+Ed2lg literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000e.gdbtablx b/autotest/gdrivers/data/filegdb/lu_4bit.gdb/a0000000e.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..e446ce106ea3bbf6a30e77c427bc9a3a57350997 GIT binary patch literal 5152 zcmeI$Q4N4V3`D__3#S|rCju>az{rKJ43cT`R=|9ARMpYV?(D9vR_4w;nK!dDjsO7y b1PBlyK!5-N0t5&UAV7csfxipnADD6WsoVR>^`E>78Zu$E1sg2Kamy^6i-=r@kdvQ;RYmz$u3h1h;Fgl}Mcb>H-S+%P9 zPViJUYz~&5xail{_^*S9t5?3=3Tn>Q3r=_;I1n5N4g?2+1OLQ<^K<~I$^PuE+57@K CV8VI; literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a00000001.gdbindexes b/autotest/gdrivers/data/filegdb/rat.gdb/a00000001.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..b02aa7510589a8e036faa03406cf6d841029f368 GIT binary patch literal 110 zcmZQ#U|?VaVmAgC27iWl22UW(z#ss`|Nk=rNhTnMi17efAqA;G1Z$`i#6=8l%TuRyaGHc>3ifYY_@Ul6nruwq zlHuGpFX;goGdIjW(>&jMzo)A|(B9~o-a|4+3LKckJVLOBW%(5+hBG*L!VD!gtOS9V zjKLZEqx*Eac-qy$uJ0s>FIPkyGDB_BX}&GE3z#U!;YxxNpV?)tuD?1^pL0c&W6G$J zd{^117u3^6GwZpeEb4bx#rBfzc~{%sKjFk!Co)@k_bLzNDj^LRttX Y|0>(h4t?<-U0S@gI^ypB^KIV34?4b4BLDyZ literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a00000001.gdbtablx b/autotest/gdrivers/data/filegdb/rat.gdb/a00000001.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..0c92e11f01a18bd4bf0be8ab6727ae0605d74eff GIT binary patch literal 5152 zcmeI$F%5t~5CzdCgq9W;7(m6TAi)D24k(au8c=ac=-DaoKrxs6sjhnE_7TzL#@vwG za&eH0RC1F>9y0NNCJQNKB|ABZPXPrKP(T3%6i`3`1r$&~0RKryW+jc ChX*PE literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a00000002.gdbtable b/autotest/gdrivers/data/filegdb/rat.gdb/a00000002.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..a0af90eaae1fb1738ddead12a36441ef8292c88d GIT binary patch literal 2055 zcma)7-*3|}5H{*c$JBM>=L-l0#>7CQsAyD!Hz!THh%}iJM;g3DrcFkqCP7ImHvV{o z?KWwh#Dz$f9Q*G3zB`}KEdam~89o_pGK#OWyPTb@7U=#Co!TX$U4{6>AOIn_1`aVw$t)&wf=(#gU`UYu?2c3ox(0GO zuI?fA3LT*zzBKa#yqM?G4Cgoq=e{&e;vl?Uq&N?gxKA~#Jr9)&XhQ|5wx?P41fm@m zY3IkB&B0i;CMvSOu1xlnB>I{9S?14Pa)yVcp@S?Nj@7$*Y=p7@oU`i6h9!Hv#WT)g ze*&*OO*d4}(Z8v!0g@$dzh^^-D&{dhQJX!Q29Lxr7#2x+MU%o-q};#Br65TooL90! z4|mhKmX|g|xS(eDIeFgMST3keDHZvbB774@i)eiYS@^qp5G=`ctV-|%&7hXcT4c>w62nN@a;TA-8V{K>>}pstJ{f{uzx zwLPMCxx@M@yVvWi+c+c2B|**yRJ90~?_BEwV8tnL66iN6&m&&HZqj>EQP1vYlw>%Z zvWArTxfI6is_^+f6(ZK!A$ulRq>T!y*LmZ~=!;3p`sW+_TcHP+nbl)MpW^1U@a>I0 KE8>8gpP0Wjd{iF* literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a00000002.gdbtablx b/autotest/gdrivers/data/filegdb/rat.gdb/a00000002.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..7c12c568195050346285f43f1164067d9ce86e7c GIT binary patch literal 5152 zcmeI$uMNUL97pkkmOm2^Jhm2##9$eqEP*Rw1rkOeL9hS=;0Ue>8dF=-gapO!jZptC z`F_laOP;(er8I~wVx!n8mY&eUoVyj2aD)qdU^)!8P{9j+u+D-5Jm3qX*gyq0c!S3R7O;Q?EMNf(Sik}nuz&?DU;ztQzycQNS%9xS#`yy^ CN)wa- literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a00000003.gdbindexes b/autotest/gdrivers/data/filegdb/rat.gdb/a00000003.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..58df68d525b47a895d5876a8bf5f437a90afc3f0 GIT binary patch literal 42 mcmZQ%U|?VaVmAgC27iWl22UW(z#ss`|Nk=rNhTnMhyegseFSR& literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a00000003.gdbtable b/autotest/gdrivers/data/filegdb/rat.gdb/a00000003.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..8a5cdad5df4a84535641e3b5084fa3afc0e0a41a GIT binary patch literal 1039 zcmbtSzi-n(6n;(GPyrI+U$}|ESh1b>#{#tyC%D3KWINC%ima=9O%1`3E(X>P9l9{^ zA21=o&cZ?~B>n&fB>n(K1|}*LA)cK?O#_92lYH;|z3;xe``#-8Kmos>D*$U4=i}Py zbai6}oMOx&%<9gN?q4|0jN>eGu4LK)jPMQ&INl|J2v_+Tm%A5coQpDFG7l!tSDKdFtoc2H zQ+U7WhmxUJh)_3!j?*Lc1;}sTu{_tV_sAJdRWw~vG_fqmhAzrgO_r6as`UFp+p`@D z6`Gu}2dK*ii06=`RjP_?$W_TODhh7RYjd!7JdOAAcyK71`Tv8{ zDSq^RWBLEt*EcV|e>lE1dG+n1v(vskk69DI}DQjUTaKi2=VWA|o zh_L8GYsAz2(0s&r9ML3aFIe)&?3p{YA>|KIR996ZWCqD)Rji;v717Xi)zIbtvIm`Y zH?3M=yR9AxI8DY+7$39HVLYPgh!gbQ^i0PJEU!lzbci{Nj?*|95TRPmMplR4IQgq` z(sI7Wl9bb7c0#-x(}V~&B?)VOPQ;JskcABzWmmvb8-}5tBiyBFoIc)Vp}QBlJRZcT ov(OO^OBrsIP&V&?A4mR4R^d@~ literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a00000003.gdbtablx b/autotest/gdrivers/data/filegdb/rat.gdb/a00000003.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..2f80ed4fe5fed90691cce6424c11c3787cc56315 GIT binary patch literal 5152 zcmeI$u?+wq3zlxYPY=EI9NE@85o%=+qA%waijtYD4>7>3Mim}0tzUgz)u2CieLYi7#jTxv^XIE literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a00000004.CatItemsByType.atx b/autotest/gdrivers/data/filegdb/rat.gdb/a00000004.CatItemsByType.atx new file mode 100644 index 0000000000000000000000000000000000000000..22f3bc1dc4cd27d0372b0733f238f0e26e63cd74 GIT binary patch literal 4118 zcmeI#Jr2V#2nArby-PPFV!+0uWu4?Eks@ca-hDPs=P@O_j5H}( ztE9Fmxok#lNO9}6%f6kryosX_fB*y_009U<00Izz00bcLXMy)O?XSfDOZ{tp0Opk3caWS&RkvEtc9rnmoN4hP&=SoH)4+8~(OVoEK6eWDtb^RSWo63ES7toeSo8PJF)92>_q`Xu-zKjB literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a00000004.gdbtable b/autotest/gdrivers/data/filegdb/rat.gdb/a00000004.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..0f8328f90c960506e26019eb9149806b2c3d8f28 GIT binary patch literal 13164 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 literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a00000004.gdbtablx b/autotest/gdrivers/data/filegdb/rat.gdb/a00000004.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..93fec31b61e3d8dce2c753b4624c1f43c4d16239 GIT binary patch literal 5152 zcmeI$!3_W*3vQKmY&$ literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a00000004.horizon b/autotest/gdrivers/data/filegdb/rat.gdb/a00000004.horizon new file mode 100644 index 0000000000000000000000000000000000000000..b64b92356a70378da21d5ffdecaaca5124025076 GIT binary patch literal 32 YcmZQ#0D;N_OdzTu3_>$hIzagj07ZNRrvLx| literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a00000004.spx b/autotest/gdrivers/data/filegdb/rat.gdb/a00000004.spx new file mode 100644 index 0000000000000000000000000000000000000000..6d236bdee5ca53a730e4092d11e2b31f1f938a7d GIT binary patch literal 4118 zcmeIuu?YY$3sk5#sx(8MC^8tlT8R)KK!5-N0t5&UAV7cs0Rq1Z+&b^#bThjF D7A^ox literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a00000005.CatItemTypesByName.atx b/autotest/gdrivers/data/filegdb/rat.gdb/a00000005.CatItemTypesByName.atx new file mode 100644 index 0000000000000000000000000000000000000000..5f5004620ba9c73658f069eeace1557d8df8cebe GIT binary patch literal 12310 zcmeI2S#Q%o6oqft_kCZ@{yR`Y0Er^h26#@=6e`lBvRx?uhM&rJ#tBh|JXAcy zvI1FwtUy*EE09tFt@&@w2;AX*44egzz!mTmJOBl_4W5IW;2d}XZUDW1`8?mDoOTB4KiNe)23tWnWt}0< zCkbcfHTYHVlWqM~2Y<(cxBL>vYCIpO_R0?-Qiu4P;?|pbg)Q^z!gesrG^v$qK7SoX zicihG9%~u#Q+{qTaa`@E*KnDiKmSuURz)?>&y{^87w%$hAC*?#UuKd04~N$4Ixc`S z;0d?}?tzEkG&lk71N927gJ(d$8Mp+lf`c5feY|;i!>`24wc?-P=L=u=;N#*~QG;lG zqgg6_##&~u5tx04*-w}A=LWn~MS7gurR0KN94X5>ry6r+^kb;p^!vLysOOF2 zXY8s@NrjcQL*Q+OTg7ixPc)US4^o5W|H%qu1+oHJfvkWO_*JyHY9+7Td>tD925`t0 An*aa+ literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a00000005.CatItemTypesByParentTypeID.atx b/autotest/gdrivers/data/filegdb/rat.gdb/a00000005.CatItemTypesByParentTypeID.atx new file mode 100644 index 0000000000000000000000000000000000000000..269f1f31a465213f69d5cad44ad6d2744b796761 GIT binary patch literal 4118 zcmeI$$%@1v5C-6$ec$(e?>QA1HCi5xS}zsy?(=7uzRamFGtjgJUks!O$&VP!WHOn2 z!dTXLyAdSeEM5PtiF3I?S#Oz2+Q4;Xop+$Yz&`gLY&~(Ou&j=Y6hSHHpQU6W(h) ztTGgg60*L{6pIz=ICv#iiwSnn<^au1d^ab=O^a}a_`WyNU`VRU5dLQ}*`W1Qsy$fBr{(?S+K7u}neuCbD zUP9kOA3{GuKSQ5E-$S23UqN3(??JDjcc5ROKcP3}xiw!gwhubT3(3+&KAMv3-DcIQ zX6t@ytIV_eBGp7xXC?0}G)MMgRwK6DZ``MrdJF-%N#Y!eHI2+lTkJe$ZHO|pHdn)k z50iLSoH#pq3Qs(`y4`Owq(`Zpmexihz9_agYLa{U=*43rYA=cIo3zzKQiN&rjTU-2 zGo+uKdB62JRJ$6T=_qckO@n>Xl*uNII}h}TMwtib|T&0Ij$Fn7%N5V%`8(hd(y+c5W&hW9R(a*)*<5-Mm` z+aoGhM7hl!jKafl;<(aGaq6XDDpmUI;N?2PQAvP z=wJLIhdEKr>CJs|DkCac9ZsXD4K7T>w3VH5q{`N@hoAc`xZr`S3I>AeHE67ZR~pCL z2wn$XMQa5>2f;~jA@b0SU8wRtC(BsNa3Wlaczg&B1 zXV9>Y3H4M&H6~rFVo!@rfpgYyX?0Ip9lI)qghL!u~O;Sw1ds&t%tN< z?0Xe*#zmEz2kMH&6S5LL}D5F!FlknsCrsfDqUmDbI7PK|7OI ztyu7j>N%^xNls@QJh2fviY2ZM-yVG@Qr_Q`zgUkx9|Rr*9t0i)9t0i){%-_cKYug7 MzMcQ~Ux4fNzfc=rO#lD@ literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a00000005.gdbindexes b/autotest/gdrivers/data/filegdb/rat.gdb/a00000005.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..bc887093f340449a4e4f40224ff3a487814c09a8 GIT binary patch literal 296 zcmZQ!U|`?@VmAgC27iWlAWmY)Vn}63W+-9s1d1^*2mtZ_|BOJA1Bfx@g@B^Y42fX% zB|x3I3?U4a3dhbTnfm;XF>qb^dg{nc|bd0W}}-3 X@&j&lgxu%{v>_L00|Nu98xi6F*S08% literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a00000005.gdbtable b/autotest/gdrivers/data/filegdb/rat.gdb/a00000005.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..bf93ec49a465f6bf1205fb164e92bee5b3303828 GIT binary patch literal 2071 zcmZXV4@?tR9LGja+h|ws-Oi@JHbdkjWI+UoZW*Rpq%G@ARR|)Jr+GE+X$+g#e-_P&;-tXVJ z5(F_1UZ22gGQ5P(40p#}kn;gr7oqz}=+`}!&=KniKYXQqTPhL8bUsT)Dms%dEx6XL7ZwaoII8Q9t zM=rG(`qvz6+OH@JzLPZ+DeBVAuD|IQPA6Df=Rfa0OGSBWNR9`rfXE=S?6lhzt7TR4 zA$zN#enB zzO_s17Vq1b-0=Q|UN!Y(JDzl3IgjEKG3*ax8aQ6 zgjZ6fg$FbTQ;JFq$U=V0i?u6y!qootdHW{eoOgNwTL_AUt%4!ar^zqO9SoFj=HtBL z4QertxN8|R1DmTj8j7`-(=T64J|S=1lVkh%!nbGe_|8gZ^p5({fLy==T2IjvZHdYz zwe#ZfZPhjVlm{{?zMD@1U`&9A$q{A-Dx1%#w}0+jwm$Bg{q*D3-u6D65^EX8 zsADWB+^T$zKW@v6s}^;!>d>|jTq}tOBwxV7T6PQ=R5o~9;fzY4`! z+&Z)DP4bE+x+&nx^b(x#)d1soAh>mu+0krh!v5m|Zm-_mtF+EF-DsXxl7M5L>BaQK z=nH^Af9bu~fk`J~8fQNH@y3jRHvm^HMWeXliNFo}Oq7XmZsd*uG-PdleLrPK?XmCp zx#?D%a=7E{GZZKf3uj(f>6)~6&cbH{S$phw;Jk$3j*l0VI^1MX)Acd)XrTJ54ISHR z)|?*}JJW!w_vNI{h^xx6q$4MaT>3Wc@x`qR1JXI}QT5{HZXKCi@oMY5xb25Oym((6 zR^_e%98&-%J$l39qYd}X&GBYK2fY?E@R>pOP8qbxrC&7TT(-h5u0Hq1Rwwb2tWV=5P$##AOHaf{8?bWum11l-|G|cPzhTA literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a00000006.FDO_UUID.atx b/autotest/gdrivers/data/filegdb/rat.gdb/a00000006.FDO_UUID.atx new file mode 100644 index 0000000000000000000000000000000000000000..8a80ea06050f04142e3eaaac737cd886ba9bb011 GIT binary patch literal 4118 zcmeI#F%Ez*2nA5Qj2lCNwyf6HOBwI3)tGpL#^g7lzyx_4L`2gS{k{3=@Q)DKSMd}| zHO?Ujn~Ji>BpkQmORJVu+c9D@%!B|0AOHafKmY;|fB*y_0D(UX%=gv*z5IK90%GL| A=Kufz literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a00000006.gdbindexes b/autotest/gdrivers/data/filegdb/rat.gdb/a00000006.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..c608a88be082bd48fb5821f6bacf48df11c2495d GIT binary patch literal 318 zcmZvXu?oUK6a+_6v526JAEZG@C5Wj-MI<6B#>TIYbHordSM0&Zv3dAtL4iW?c4G0C6X92N+;_M6@{tQVBSq!NR$qXe7o(wJw3~Ve+ zETIgc5DvE*6HrAFLncEy5a&Szxzt$LT!31NVOoF!EFlb)3bd^TFzhfWny&2}TxH23Mei{$7!8J0w)7?A)3Zzhm8%Vmq!?`+k%Z zwff9SJHA44@v_EqY_~+qj_~`gP{{H9b|&Y->W>w7o|vq0-sLXixB9~K;~<{`07k+% AApigX literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a00000006.gdbtablx b/autotest/gdrivers/data/filegdb/rat.gdb/a00000006.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..431307d13c60381f56be9a7c0c765046b36cb27f GIT binary patch literal 5152 zcmeI$!3h8$3-MA9039Z2oNAZfB*pk1PBlyK!5-N L0{;rUe_$^>!R-Lc literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a00000007.CatRelTypesByBackwardLabel.atx b/autotest/gdrivers/data/filegdb/rat.gdb/a00000007.CatRelTypesByBackwardLabel.atx new file mode 100644 index 0000000000000000000000000000000000000000..8797338e7a9c750c8dff7448fb1f9ba3da067822 GIT binary patch literal 12310 zcmeI1=}y8x6h<%Z`@a9`yFf4|Mvcn@Ac7K+62KVW#z*zs)_I{>NWyKzz7%tBVYuKfDtePM!*Od0V9wn0bTQ-{20*hJ#>ur(E(aT+vpUnqXIfY zJLnK?pk1_vHqkO#L}zFVC3%Gfj*Ifb+P*1ItmMnA>h-9`+CGqLse51DyR!#HJhjL; zRB+kCnfi<~6J<)8t$4?6O-j*mh0KNKC*1X>b;T%ue`%)mf0NcT%%74BawFD%2h;9v zuwTVdaYrt!MaC?Dii7^bC~9wsf;O?NS-m);r*SiQZGTJnDV1>2B_g%Ysgp(&&(kux z1mennp5s51w`f%9L_D+2fx7%%;x2CEgsirG9qFj3eN@Rmdu#n!_cxf&&N@b1{HEPs z?7vE1YkKQrqedndzuEFvW{i9!a&_Dub=T>gn~dM|`RjkurN?F5nq2&TXA1c^b@{uG zo)jJWT|6rs_rBA*&h0N`CZjXykf)fwfy{Py`%`v0{$)EaNGQy@KYPE-B7DfEYjoX~ z&`NaV=fl;1@@}7a)YQ4GuIx1v5a$5;SN{Qdj3#l|Wltg_n{Pj@Vzn9pBVYuKfDteP dM!*Od0V7}pjKF^&@D&ueP0ax48++Zf{0+VJ$xQ$N literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a00000007.CatRelTypesByDestItemTypeID.atx b/autotest/gdrivers/data/filegdb/rat.gdb/a00000007.CatRelTypesByDestItemTypeID.atx new file mode 100644 index 0000000000000000000000000000000000000000..47d2132ee8b7ee9a518ea5306182b61d0b93f04a GIT binary patch literal 4118 zcmeI$xsKg1429vFWU@{6WhTo5q$8k(qNtJ*rI#}N?m0I=$|=$W2_OLjY?Bb*?3Gtk%M~PCapa1Ms4K-H{jkKgeY#~#dDN!18Oe?+hW#_S{{;Y&@ zDCS;BeJOEDm2}ylyoUKi@~mDd0c7a`B7uW^*0!N_*mv1pEVm2FJ@jCOJ#lYKm8GZL$riEF0g>s(Kgyg2k032 zeT!%rZK4c$dvj<7t)exwfwoY?N__nx{(OhrJ^Iti*LVNE;CyWVep36t(Z13i$2=#! zUHtlw{Lbms0t@3mdzvSF7F)W)&VChh^07D?r5>sB5j#!W-*L_RSlBf^dqe!o<6tRl zvhQoXAbx+FUz7QxLnPb3-EwQ%eG;GA!2FW=#G~pyyLqI&WNx|Rc#w#-qdB+>zuRhE zP+(n3YXsRB#!{V9>c9WUzB;`c?h(JhqE1Qt>QD>!q|Of)ILYKbzNZs3UzOtQQtzJ@ z|48Vu_DE^X5k_|&r&H9b2#A0Ph=2%)fCz|y2#A0Ph`_%f@S115r$+$X`}gF>Z!;8~ Ax&QzG literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a00000007.CatRelTypesByName.atx b/autotest/gdrivers/data/filegdb/rat.gdb/a00000007.CatRelTypesByName.atx new file mode 100644 index 0000000000000000000000000000000000000000..70ed36c3fea8bbfec79d541e8f5931e81151e214 GIT binary patch literal 12310 zcmeI1`%c0z6vhwU@Avy(dlw0Y#Hi8v0E&P_WM<45-o{7u`#KCOfd&({F7b?fvTo9S z`?cL^&qPEj&;qmw<++9OB+t^7rqrb;cPPcuK&dM=b0(G!%7M2}p7*YGD*+{-1eAah zPy$Lo2`B+2pahhF67WfYYyPvLfdhOWLc7p9bPgRsn-FsZd(alN0bM{l5P!b}v5r${ z6@6!X;$Zu` zm6qJY*#{glZ}L@<&eWA?vrG?uqQc)I*u!w1Jm0=f~{ za^$oiK6ltd$-JF2ahE@vmYeV`N}4{{Dr2k#lz7(ZG`1} z-0d$yBw@6RFb)QVjMwqIb^9YbzAdmv%6J`lmRNt4;6D)f4l1}!uKf8%pBu|R D1zNXT literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a00000007.CatRelTypesByOriginItemTypeID.atx b/autotest/gdrivers/data/filegdb/rat.gdb/a00000007.CatRelTypesByOriginItemTypeID.atx new file mode 100644 index 0000000000000000000000000000000000000000..139b478cc0a4b689389507d63d6ff6ec57496bfa GIT binary patch literal 4118 zcmeI0$*LPM5Jg|+d7kqD*%e5tNm^-NxLZfXasWanRL#a;Tfn`hmdbuqnv7~Da zvXVDR5~iksa+>z&qI-^cz36CWYEFApNBb4jxDFaJ*rl*?LwifnCCyF65ETtHTzivm z!(Nr^j(Tg#le5>U-HiGkjbzkHT{Y9(yQdzxSV>69 zk&{Mi!jcqq_(}qOUL?45a zX$iJ1k>K9l^Paw_AC_bzUkjoJPuZjO%=y+7E|E~F5oS?HnlX(Yi89CDGqtsxub10W zb1DPWowK9;aB95`GFemGY^@E<@wU{erm5^k&9!3M)2OY&WNYP~a`GWCv09aqW6;uy z_MS0EsVKmlWTl$Zw(BKE;69kRJG$dU4;;XLuP?%vVHC4sLbs(h&JBlcGClUFS*UVW zn!&B=>Wc^5|HIVZ@A~tb)4*xqG;kU?4V(r}1E+!0!2dDu>;8%TcxwOi7U1~&8=s}> AV*mgE literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a00000007.CatRelTypesByUUID.atx b/autotest/gdrivers/data/filegdb/rat.gdb/a00000007.CatRelTypesByUUID.atx new file mode 100644 index 0000000000000000000000000000000000000000..dea48d3ebdbbb51845e4bdaaec08af989846aba8 GIT binary patch literal 4118 zcmeH~Nv`EK3`Kt>skD{8sb&G05fCLxqK0gwO+CE5*YyW7tZ7CzZ~@uACaFVe;Fp(| zmru}jeSrRg-ayy0AEEcq&(J^6N9Y~&1N1xe9rQQ!HS`Vi2lN~C7Wx+Y75WAG3HlTI z9{LKpuP+mLl;q;gCe<^9r0+pKEpQuk`l;MnJRdxFQA?-ljY%?+^kh<=Ue{JVD((5G z2zEvv#NtLG;k0ZN>Y6o0&NPLq_pApYD4ZwBZk0>}tJxQCtT;DZ+N`@7wce4DZIhZQ zF>9Z^PE%cQWtLz&h}DwhY$FZ$aqFfzXQab*R?)r-O;k$Kx{&P_)FhB)ZksC4$JjeF zW7CkcKtdKFf6^)4+K5{E&gWxRRF&rVxL1@Zp~0~s%>#)Vphh?f|Pu}5$)8M6Q*gQ~_Ltq9Fc(9U-D;0c#R%E7x<<_52VJ*qb9 zc&~AI*;crE)M_V@rwzC`$r&Vg&SkZa7+#+b4zpKv5~6CFAf&P=!kmzfR7^NozP{ZZe5OHdS6!@ literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a00000007.gdbindexes b/autotest/gdrivers/data/filegdb/rat.gdb/a00000007.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..2a98c93adab6374c865fccc1045125683eb4a05b GIT binary patch literal 602 zcmaixVGF@f7=<5Fd_a6e{>-eEl9l)@8wnelmHhfSvslCKT4%fW-MP=X_q|P^Ejie@ ztR;^lJA7iMszFamlA7Kv>GywM)d?H<7g`sv6;HpM-C2SERT9zjtKJvR}JS&t08k_L_S#SGPiCL9r)!ePG?#u zD|Q4ysahx?6s@(Qww0my02RfzfQlWpSlXhFMbxo-$p(^zHa0Uicf0%l`~8pa|98_L z05A$Z58z`5AJcD=lkv+NO)%@W%(o2y_P|~YV!;YP02!cx0Pp}9VB60&8blihgD2QJ ziGdc7KnW*kC>IYTAQ>dUFM~8Az=H#wLA`GQTM>{#Jp$tHGk`nrff{bQ8cu709E8Jn zEL>JWfwxe=4mbwGDH&M#Um^mC$%Xq+5LpThqzn+u2!MWe;2ZerT=e2Hr;1g_%U!3&$sD1Sk}3%u2dQ!lx|2VWYH3nNLMgZ; zpg5+jIA(is&}IO70*%$LaC^1qXV0L$MRmGBY9jAaVB2!#gw~K#Z$FLO5w-pCoRb4C zv{D%%BIwm>?Mg?JHHNj(xD^Ib4w3~x&%oA-FYH`5 zbqKe3&97R7Uu^mA2<;V>|FR!(bIF&rA^BeMm-o4>4IL4cOvzAo1r#%gBob7lOzOaV zoAT~~gBuo+qz&XgL_T-_di|^&R|C`L|8o1yT%Q&^8aOG2BT`s~!IBp5=yb=ZBU@AM z`tnO$0%{gIkgRP7uZqUTaszYP)19kAUY~s8nRaW#HP_IcY22wodzTk%WO=vWXgmzP zX+m!DoQ-?l?eu2G=?A>LM}D2d7G@XD6xB4>%)?W@6@dM14lBg@UHpm-xpSX-Ky@vl zBPiNXu408bB~1J<7ACAebJ3CALui~u1*4)otEo@Ebu1_-oAtf_Jg*fe@JweG-1c7o zHeQ%HLDX6)Ri?6#_hN+^1^S8rlH-UK9CJ>fqAZD-y(D5rc~DmI&~(k-S(&8Y`u)|* zWP+-Du7AEB)U3lJf)ynUuZ&RfrLkI4W~~Hz6{S&`W7Gy`XcG8P_;xYRZH{sazg&lvLz2&hm(9Z%5En0G8oPn;j!8}tIAh)txUESgAsTPOo{-cFlP9*jB7X*5+0oKQ;hq{ zoVAU3kHE`?-CZuI1E6sq6*C$wanuT?h?#C`)=>a393HZCpCh}5_zHK_*vq}jcgLo_ z)~w#LzfrtlyeyynTj4Z345sFQ4tzvUgk&ukz4|CpH+4Ax5}BBgYbK@MEG=44W?vw@ zv&p*v=P1qy7HZ)}Mj%@(DPfh0NeuAP*|Neaei(1_fSaYQhrj(mpwZDsn-&LW+8)=6 zd=F0jw`2$?L=J@Q!d1i0N>VzLWA11I_Dp!Su@ts}S22iP+L6@s>+~{iRj7xkwBgYi z^}M8K=LuHG#^Dz~OuyY&iDNq>EQqaE$q8*QOjZvjNtq0>0dWl2oveH8X+9T(+neu3 z7G!jC@y**i{5RR^6=4S!c>LhKB|zrPQ^!Mp1QY^w?s3qt&?go!9>@v&tn8sfYr{5> zuHxqT57{`w@NAk6WJ_vUrqeo+4CKDp+)lle3qq<6{q^z8YP)v)Hj6`hA|jdYo@Q6i zK3VlYFRigm=qpY)d@{GLO{|Zon^Sxvc8=T_mAmnvo<tL4H9cf zB_yd>;lv|!G)Wn5C2$D9XN)&Z&#y$Y>wHDUXF`{b(Q8`#6KAZF`&EP;_%SIU#rtR- Z-lT?Oy_(Q!A$zTLr(Sm~iBS)Le*nHMfzbc} literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a00000007.gdbtablx b/autotest/gdrivers/data/filegdb/rat.gdb/a00000007.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..bf096e13d28fc61c7dc794d7b965ba6083f1f807 GIT binary patch literal 5152 zcmeI$tqlS}00rTN;~y?~+Q3u685C$bpaX)#(*j-KNC*~%q6ZYoIo=e3n@!%AY_e+P zR;83qw#fR~oXZuK-Ef0V6`s)a!X4H;e!zARK5!g{77n9O#@QL_NjSk5cGK{N{Vcp- nRfh|BEMNf(Sik}nuz&?DU;ztQzycPqfCVgIfqxd@_m6RY0`v~Q literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a00000009.gdbindexes b/autotest/gdrivers/data/filegdb/rat.gdb/a00000009.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..8211a233625ef9fe771fc3784e2a0b85f3984089 GIT binary patch literal 112 zcmZvTISRla00buo1dBi(B|@4gVxRxNLMMe?idlwbcLfefL^7}38eG!*Vs0|qQ=iLZ Rn`soPpGSjT;Clu6TMVar3+Vs= literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a00000009.gdbtable b/autotest/gdrivers/data/filegdb/rat.gdb/a00000009.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..37624b1fc924b959d9aefda80181b029b6d58cf3 GIT binary patch literal 2221 zcmeHIJ#11@6#no*OJn?79IA;8lS4H?ftE>LfYvJX5ul5vAuUBfktQwbiitxLCynXU zI5239>7o;AQiy{?2d#-Fn&_wz{O7;&HvwtaC-V*w>(FpmKQF^2-K z;4+FxYB3raIK!_AoQDGwbPgc}7yNKznA#+vqLk<8S0sk4xoGFWAjTNP;N0{!wG>z9 z7^{RFt#w9{$a$p6qp18%Y(WTdJ;@kR6x#R13C@sG5(Iz-m5lJyCR+a zgXCOfY{{q4${~+gvXKm>UMJKU8*bIMGg3mGsDi45WS4GL!K}E{*3Z2*ce7J25qe1# zO6-SOg=63XIT>V^XJsU-_WlXZ?p>DZn_VR~t_IsF^h%3y;sVTYmJfP&R_a6_oUPotQr+$}~zEM&#cnHixIYEt4db{o0ZQpMD{`c)Wz&;Or z>euD(y0je8k4WEt>(_tsS-%_6)&ISGL+y6p;GeCYLPXt}S>84|K(lMu-^ohnt(D=8 zrYtD%#lq>V&1TuSzp{E~qiU^utbTobv%I&yy#D6Hfts3cy?ph4rLt|WJlo#ihEyOco*|PV1t=!~#Q*;@0!dCF#-;)QV_FK? literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a0000000a.gdbtable b/autotest/gdrivers/data/filegdb/rat.gdb/a0000000a.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..2ffa16e397a21e0366e8257bebcc21c912097f2d GIT binary patch literal 820 zcmZuvL5tH+5FWejvZ4nIo&;feCy`j1v`w0m8`^BQ>!zt`deBhfYx>&FT2pz6iZ>4m z1^o@)6uo-%vaTNWAbSw>t~U<~f~ZjEWfiv7fyung_susmytf1ZN6_zQ0CE`rT6yW< zbmmXuHpZ+tBRLC4IZ%ip0R|j=2w?!QoXs4cPY+>?v=I`qDhI~~NRJ`Fk`S(AaR?KL zP|iSEgoWM&K~cg`RnUh3D<^VdxS!Kp7VaQZ_yu%fGc++h7_T3}2j^}6$yd1Y;NItt z890gA6vDXn>6GXJZys(LFzTP(Km9DfdvOI;$+vhJULvjS*qgPEM_NYRmvu$+yRPM5 zoVpjqxy`QOYJ#-Eg~>N9zAaJM9hAv72>|)W(!wMbWCN z5=kv-Ri&sF%95g&3%XWS^{UeANo}WTnW)y_j77J?V4FzALa`@xTTK^xuo33dl&qC2 zB}G>%vaXj)rL@%EG;40tZh6GzG>UIB9y8x!JfO*h6BIWb!!ljd@yI$IBWBV#38N8_ zDn((U(LbDY=ajUF*I1NrIu;$mK}aJaos(s4L8KGVG4t1HAV$DlbX`~Hx@^%TOl}OA zZx4N&hoca64y|mlgkhm9WR0%7VLMItl1I#Tr$Hn|)nvKX6Zbo32bce2+SwE7clluN oaew!&^Zt4I6kzB3i literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a0000000a.gdbtablx b/autotest/gdrivers/data/filegdb/rat.gdb/a0000000a.gdbtablx new file mode 100644 index 0000000000000000000000000000000000000000..b48fa99a8c383a6940493d0467ea03bf4adbb29f GIT binary patch literal 5152 zcmeI$!3h8$3-MA9039Z2oNAZfB*pk1PBlyK!5-N L0{;rUe_$^>%s&9K literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a0000000b.freelist b/autotest/gdrivers/data/filegdb/rat.gdb/a0000000b.freelist new file mode 100644 index 0000000000000000000000000000000000000000..e8d168993dd6b1bc9ca98c1c407945338b3ca845 GIT binary patch literal 4440 zcmeI$u?+wq38>+*ZTnU I`9gjj3YHG5RsaA1 literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a0000000b.gdbindexes b/autotest/gdrivers/data/filegdb/rat.gdb/a0000000b.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..0449ced6cb124413cd552d9da2bd6506f217b832 GIT binary patch literal 66 wcmZQ%U|`?@VmAgC27iWlAa-K#VsK?}W(Z;M1d1^*2mtZ_|BOJA1Bfx@0s18e4iBJ^!(3qheT1g`)D!A&< zf56c}6gO9eKqtXL!9T*mL2z;Ob8h>fXicoI;F9w=_uPBF=bZb!=iT=blKRofKuTdF zdAomec6!UPh)vqO&umauUYAwW1=UniK^jQ*4>fgDYig;XrfxA`(QSoVVk9f2WJ~vT z2h^_yR*6|=RVPEiaOyjif1uijeo35Se4q(U@f5K+jq#+}E2DGlp7!g4_vJt*;gSZ+ zU^6+BOO8WtPBsSRn|4;HM|KsyAGk3 zz^kA&Y+iFd@4zqE0u0KUr?O<&F*L`z$QXJgR0V5Hta{*?$7%^IHwC;9d1?Zj!r1)EelJp1zxXpZ$8Ww7#+Y`OWzF22RdnCmOlF zzVPhhr;%3=)h<6jf7pC|oc8x#S?{9W{J9f$olc-tc-)0e9S#w@lD`xU-2=BBHZPuk z?UweM(*RA6V60Y>NRR literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a0000000c.band_index.atx b/autotest/gdrivers/data/filegdb/rat.gdb/a0000000c.band_index.atx new file mode 100644 index 0000000000000000000000000000000000000000..870a5e390e919d355d982cab06773ec631f06d16 GIT binary patch literal 4118 zcmeI!(Fp(`2n9fk25bMR(!eF^gqPyy{a8fA%v6m`&v)S=K!5-N0tB8FsJmZL1PBly QK!Cs>0&Dm6?;k+*19m(BPyhe` literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a0000000c.blk_key_index.atx b/autotest/gdrivers/data/filegdb/rat.gdb/a0000000c.blk_key_index.atx new file mode 100644 index 0000000000000000000000000000000000000000..3aef81009529d0415cdd237c8d3020a447ada574 GIT binary patch literal 4118 zcmeI#xedS|5Jb_jE1>`fcK^-6fJOp2B;9U00c)te4yYr`2xLo@h%mer&A@Y_e)E}b!iADd{@UI-FWsSnKrU2m=gx!NSKQCcrfpvF?EPUJHA?yV fOQlrY{!(3|qr#R%rjROJ^X{d?s?e-Rqc(g1!*D1E literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a0000000c.gdbtable b/autotest/gdrivers/data/filegdb/rat.gdb/a0000000c.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..e012cc3df9b7d19604e87139ddbc2c60edd06b73 GIT binary patch literal 779 zcmZQ(U|?VZ;ygwM238;q1Ki9ImIhQ{E0AUZv4QH?894kIoEW?qTp64hLKr+5To@SG zSeST=7!nzZ8A=#Z8HyN^fb2Ym6oz<)Odtu=#mc}{1QZ8}qygoUf$H*se6S3A5s+OD zl*t3?gNY>r#d1)^xRQV(`9QtdK=BlyDJ4M6z#+iOi7b%~bU-E0wPHZmvVuK!0O)8G zaDu5~&fBYseX52$EEg>A%Pm})c(BQpTZ*mCj3?*E!wZ(DH?`JJ*?Gw8;<}LjEmBh- z-QY{Pl`GxGTiDm%oRRS%%~|Vo+1brMb2nbxk}z4p?-{@M7T3TB472TKzTc@oe@R=O zFFrCx}<*lerjnM{J#bp!D0n_|?Cct$!5STJ-SEpR>!a z-?RC3G|2z{-BP3azm@fpYajlW+xwlrZ(sd+6+L$|Imbs65k9A{-6HZRI@QK Rtl$5eu_f8b4B>9L%KihEyOc3CPZ4NCApw0!ao20U-YWpAks%0x>?7 E06fPI3jhEB literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a0000000d.gdbtable b/autotest/gdrivers/data/filegdb/rat.gdb/a0000000d.gdbtable new file mode 100644 index 0000000000000000000000000000000000000000..e1cc3a70f7fa330bb47d2d1317199321911b6c66 GIT binary patch literal 598 zcmaKqJx;?w5QSfoH4+eLpyC9GTTp_iX^mq7wn!X^jUXKo4dM)lbI{Oo62uuODEMY= z<0VL}G&4JX^X6yA14%vP4HaSAbKI|QyUho~o!zlp+L$X*sY+wbHR4|ARIzfjR$PBr z0$k}DT_{Dz*b$+yBdvzyhGgGeL82+qa{CmDwAN)l(**FGnm$E<-1w@MvKm?MI2oyO zI2nB|vnnlg3Et#`HPMV#FKBfs<1objn0RjXF5FkK+009C72>hqO^gMgq0Ax;% LS^eEcymhz%KVGfW literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/a0000000e.gdbindexes b/autotest/gdrivers/data/filegdb/rat.gdb/a0000000e.gdbindexes new file mode 100644 index 0000000000000000000000000000000000000000..0449ced6cb124413cd552d9da2bd6506f217b832 GIT binary patch literal 66 wcmZQ%U|`?@VmAgC27iWlAa-K#VsK?}W(Z;M1d1^*2mtZ_|BOJA1Bfx@0s18e^%|3xd^BGDR@)$}O7??R&89oC={vaCx7C_d`3pDP}6u5B~4q$;fZ~+a7z*4w? z3`AfpTmY(KD_lSXqGB&xfWrZ7?NPYE2YawB=imYi5G~)~0#Fq|KGgS60WU~c079afqVya)L6g*7O(&ouz&?DU;!hrQ{aJOUUH{<%_+Bxh$2_# zs@y*pJz2>{c5;xDT;%4{k2Itu9T~_-CNh(S_!Lk;0R#w`e9 literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/gdb b/autotest/gdrivers/data/filegdb/rat.gdb/gdb new file mode 100644 index 0000000000000000000000000000000000000000..a786e127004dd9e94e88fda7742d248237ad8885 GIT binary patch literal 4 LcmZQ&U|;|M02lxU literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/data/filegdb/rat.gdb/timestamps b/autotest/gdrivers/data/filegdb/rat.gdb/timestamps new file mode 100644 index 0000000000000000000000000000000000000000..333cbccd94ccd526e391721ae93bb417e322cad0 GIT binary patch literal 400 gcmezW|Nnns1_lNo^&dzv2mmn?5(bHn0{Vpj0LEl?!2kdN literal 0 HcmV?d00001 diff --git a/autotest/gdrivers/openfilegdb.py b/autotest/gdrivers/openfilegdb.py new file mode 100755 index 000000000000..2448300bd510 --- /dev/null +++ b/autotest/gdrivers/openfilegdb.py @@ -0,0 +1,373 @@ +#!/usr/bin/env pytest +# -*- coding: utf-8 -*- +############################################################################### +# Project: GDAL/OGR Test Suite +# Purpose: OpenFileGDB raster driver testing. +# Author: Even Rouault +# +############################################################################### +# Copyright (c) 2023, Even Rouault +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. +############################################################################### + +import struct + +import gdaltest +import pytest + +from osgeo import gdal + +pytestmark = pytest.mark.require_driver("OpenFileGDB") + + +############################################################################### +# Open dataset with subdatasets + + +def test_openfilegb_raster_subdatasets(): + + ds = gdal.Open("data/filegdb/gdal_test_data.gdb.zip") + assert ds + assert len(ds.GetSubDatasets()) == 44 + ds = gdal.Open(ds.GetSubDatasets()[0][0]) + assert ds + assert ds.RasterXSize == 20 + assert ds.RasterYSize == 20 + + ds = gdal.OpenEx( + "data/filegdb/gdal_test_data.gdb.zip", gdal.OF_RASTER | gdal.OF_VECTOR + ) + assert ds + + ds = gdal.OpenEx("data/filegdb/gdal_test_data.gdb.zip", gdal.OF_VECTOR) + assert ds is None + + +############################################################################### +# Test various band types + + +@pytest.mark.parametrize( + "name,datatype,checksum", + [ + ("byte_lz77", gdal.GDT_Byte, 4672), + ("byte_lzw", gdal.GDT_Byte, 4672), # no compression actually + ("uint16_lz77", gdal.GDT_UInt16, 4672), + ("uint16_lzw", gdal.GDT_UInt16, 4672), # no compression actually + ("int16_lz77", gdal.GDT_Int16, 4672), + ("int16_lzw", gdal.GDT_Int16, 4672), # no compression actually + ("uint32_lz77", gdal.GDT_UInt32, 4672), + ("uint32_lzw", gdal.GDT_UInt32, 4672), # no compression actually + ("int32_lz77", gdal.GDT_Int32, 4672), + ("int32_lzw", gdal.GDT_Int32, 4672), # no compression actually + ("float32_lz77", gdal.GDT_Float32, 4672), + ("float32_lzw", gdal.GDT_Float32, 4672), # no compression actually + ("float64_lz77", gdal.GDT_Float64, 4672), + ], +) +def test_openfilegb_raster_band_types(name, datatype, checksum): + + ds = gdal.Open("OpenFileGDB:data/filegdb/gdal_test_data.gdb.zip:" + name) + assert ds + assert ds.GetRasterBand(1).DataType == datatype + assert ds.GetRasterBand(1).Checksum() == checksum + + +############################################################################### +# Test mask band + + +def test_openfilegb_raster_mask_band(): + + ds = gdal.Open("OpenFileGDB:data/filegdb/gdal_test_data.gdb.zip:byte_lz77") + assert ds.GetRasterBand(1).GetMaskBand().Checksum() == 4873 + assert ds.GetRasterBand(1).Checksum() == 4672 + + ds = gdal.Open("OpenFileGDB:data/filegdb/gdal_test_data.gdb.zip:byte_lz77") + assert ds.GetRasterBand(1).Checksum() == 4672 + assert ds.GetRasterBand(1).GetMaskBand().Checksum() == 4873 + + +############################################################################### +# Test multi band + + +def test_openfilegb_raster_multi_band(): + + ds = gdal.Open("OpenFileGDB:data/filegdb/gdal_test_data.gdb.zip:small_world_lz77") + assert ds.RasterXSize == 400 + assert ds.RasterYSize == 200 + assert ds.RasterCount == 3 + assert ds.GetMetadata("IMAGE_STRUCTURE") == { + "COMPRESSION": "DEFLATE", + "INTERLEAVE": "BAND", + } + assert [ds.GetRasterBand(i + 1).Checksum() for i in range(3)] == [ + 30111, + 32302, + 40026, + ] + assert ds.GetRasterBand(1).GetMaskBand().Checksum() == 64269 + assert ds.GetRasterBand(2).GetMaskBand().Checksum() == 64269 + assert ds.GetRasterBand(3).GetMaskBand().Checksum() == 64269 + band = ds.GetRasterBand(1) + assert band.GetOverviewCount() == 3 + assert band.GetOverview(-1) is None + assert band.GetOverview(3) is None + assert band.GetOverview(0).Checksum() == 7309 + assert band.GetOverview(0).GetMaskFlags() == gdal.GMF_PER_DATASET + assert band.GetOverview(0).GetMaskBand().Checksum() == 48827 + band = ds.GetRasterBand(2) + assert band.GetOverviewCount() == 3 + assert band.GetOverview(-1) is None + assert band.GetOverview(3) is None + assert band.GetOverview(0).Checksum() == 7850 + assert band.GetOverview(0).GetMaskFlags() == gdal.GMF_PER_DATASET + assert band.GetOverview(0).GetMaskBand().Checksum() == 48827 + + +############################################################################### +# Test 1-bit depth + + +def test_openfilegb_raster_one_bit(): + + ds = gdal.Open("data/filegdb/dem_1bit_ScalePixelValue.gdb") + assert ds.GetRasterBand(1).GetMetadataItem("NBITS", "IMAGE_STRUCTURE") == "1" + assert ds.GetRasterBand(1).Checksum() == 17197 + assert ds.GetRasterBand(1).GetMaskBand().Checksum() == 29321 + + +############################################################################### +# Test 4-bit depth and a rasterband_id == 2 + + +def test_openfilegb_raster_four_bit(): + + ds = gdal.Open("data/filegdb/lu_4bit.gdb") + assert ds.GetRasterBand(1).GetMetadataItem("NBITS", "IMAGE_STRUCTURE") == "4" + assert ds.GetRasterBand(1).Checksum() == 40216 + assert ds.GetRasterBand(1).GetMaskBand().Checksum() == 42040 + + +############################################################################### +# Test JPEG compression + + +def test_openfilegb_raster_jpeg(): + + ds = gdal.Open("OpenFileGDB:data/filegdb/gdal_test_data.gdb.zip:small_world_jpeg") + assert ds.RasterXSize == 400 + assert ds.RasterYSize == 200 + assert ds.RasterCount == 3 + if gdal.GetDriverByName("JPEG") is not None: + assert ds.GetMetadata("IMAGE_STRUCTURE") == { + "COMPRESSION": "JPEG", + "INTERLEAVE": "BAND", + "JPEG_QUALITY": "75", + } + + if gdal.GetDriverByName("JPEG") is None: + with gdaltest.error_handler(): + assert ds.GetRasterBand(1).Checksum() == -1 + else: + assert [ds.GetRasterBand(i + 1).Checksum() for i in range(3)] == [ + 23495, + 18034, + 36999, + ] + assert ds.GetRasterBand(1).GetMaskBand().Checksum() == 64269 + + +############################################################################### +# Test JPEG2000 compression + + +def test_openfilegb_raster_jpeg2000(): + + ds = gdal.Open( + "OpenFileGDB:data/filegdb/gdal_test_data.gdb.zip:small_world_jpeg2000" + ) + assert ds.RasterXSize == 400 + assert ds.RasterYSize == 200 + assert ds.RasterCount == 3 + assert ds.GetMetadata("IMAGE_STRUCTURE") == { + "COMPRESSION": "JPEG2000", + "INTERLEAVE": "BAND", + } + + if gdal.GetDriverByName("JP2OpenJPEG") is None: + pytest.skip("JP2OpenJPEG driver not available") + + assert [ds.GetRasterBand(i + 1).Checksum() for i in range(3)] != [-1, -1, -1] + assert ds.GetRasterBand(1).GetMaskBand().Checksum() == 64269 + + +############################################################################### +# Open dataset with Int8 data type + + +def test_openfilegb_raster_int8(): + + ds = gdal.Open("data/filegdb/int8.gdb") + assert ds + assert ds.RasterXSize == 20 + assert ds.RasterYSize == 20 + assert ds.RasterCount == 1 + assert ds.GetGeoTransform() == (440720, 60, 0, 3751320, 0, -60) + assert ds.GetSpatialRef().GetAuthorityCode(None) == "26711" + assert ds.GetMetadata("IMAGE_STRUCTURE") == {"COMPRESSION": "DEFLATE"} + assert ds.GetMetadata("xml:definition")[0].startswith("` documentation page + + +Credits +------- + +Thanks to Richard Barnes and his ArcRescue tool for the deciphering of +the band_types field which indicates the compression method and the data type. diff --git a/ogr/ogrsf_frmts/openfilegdb/gdalopenfilegdbrasterband.cpp b/ogr/ogrsf_frmts/openfilegdb/gdalopenfilegdbrasterband.cpp new file mode 100644 index 000000000000..39b6944b89b7 --- /dev/null +++ b/ogr/ogrsf_frmts/openfilegdb/gdalopenfilegdbrasterband.cpp @@ -0,0 +1,1840 @@ +/****************************************************************************** + * + * Project: OpenGIS Simple Features Reference Implementation + * Purpose: Implements Open FileGDB raster driver. + * Author: Even Rouault, + * + ****************************************************************************** + * Copyright (c) 2023, Even Rouault + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ****************************************************************************/ + +#include "cpl_port.h" +#include "cpl_conv.h" +#include "cpl_minixml.h" + +#include "ogr_openfilegdb.h" + +#include "gdal_rat.h" +#include "filegdbtable_priv.h" + +#include +#include +#include +#include + +using namespace OpenFileGDB; + +/***********************************************************************/ +/* OpenRaster() */ +/***********************************************************************/ + +bool OGROpenFileGDBDataSource::OpenRaster(const GDALOpenInfo *poOpenInfo, + const std::string &osLayerName, + const std::string &osDefinition, + const std::string &osDocumentation) +{ + m_osRasterLayerName = osLayerName; + + const std::string osBndTableName( + std::string("fras_bnd_").append(osLayerName).c_str()); + const auto oIter = m_osMapNameToIdx.find(osBndTableName); + if (oIter == m_osMapNameToIdx.end()) + { + CPLError(CE_Failure, CPLE_AppDefined, "Cannot find table %s", + osBndTableName.c_str()); + return false; + } + const int nBndIdx = oIter->second; + + FileGDBTable oTable; + + const CPLString osBndFilename(CPLFormFilename( + m_osDirName, CPLSPrintf("a%08x.gdbtable", nBndIdx), nullptr)); + if (!oTable.Open(osBndFilename, false)) + { + CPLError(CE_Failure, CPLE_AppDefined, "Cannot open table %s", + osBndTableName.c_str()); + return false; + } + + const int i_rasterband_id = oTable.GetFieldIdx("rasterband_id"); + const int i_sequence_nbr = oTable.GetFieldIdx("sequence_nbr"); + const int i_raster_id = oTable.GetFieldIdx("raster_id"); + const int i_band_width = oTable.GetFieldIdx("band_width"); + const int i_band_height = oTable.GetFieldIdx("band_height"); + const int i_band_types = oTable.GetFieldIdx("band_types"); + const int i_block_width = oTable.GetFieldIdx("block_width"); + const int i_block_height = oTable.GetFieldIdx("block_height"); + const int i_block_origin_x = oTable.GetFieldIdx("block_origin_x"); + const int i_block_origin_y = oTable.GetFieldIdx("block_origin_y"); + const int i_eminx = oTable.GetFieldIdx("eminx"); + const int i_eminy = oTable.GetFieldIdx("eminy"); + const int i_emaxx = oTable.GetFieldIdx("emaxx"); + const int i_emaxy = oTable.GetFieldIdx("emaxy"); + const int i_srid = oTable.GetFieldIdx("srid"); + if (i_rasterband_id < 0 || i_sequence_nbr < 0 || i_raster_id < 0 || + i_band_width < 0 || i_band_height < 0 || i_band_types < 0 || + i_block_width < 0 || i_block_height < 0 || i_block_origin_x < 0 || + i_block_origin_y < 0 || i_eminx < 0 || i_eminy < 0 || i_emaxx < 0 || + i_emaxy < 0 || i_srid < 0 || + oTable.GetField(i_rasterband_id)->GetType() != FGFT_OBJECTID || + oTable.GetField(i_sequence_nbr)->GetType() != FGFT_INT32 || + oTable.GetField(i_raster_id)->GetType() != FGFT_INT32 || + oTable.GetField(i_band_width)->GetType() != FGFT_INT32 || + oTable.GetField(i_band_height)->GetType() != FGFT_INT32 || + oTable.GetField(i_band_types)->GetType() != FGFT_INT32 || + oTable.GetField(i_block_width)->GetType() != FGFT_INT32 || + oTable.GetField(i_block_height)->GetType() != FGFT_INT32 || + oTable.GetField(i_block_origin_x)->GetType() != FGFT_FLOAT64 || + oTable.GetField(i_block_origin_y)->GetType() != FGFT_FLOAT64 || + oTable.GetField(i_eminx)->GetType() != FGFT_FLOAT64 || + oTable.GetField(i_eminy)->GetType() != FGFT_FLOAT64 || + oTable.GetField(i_emaxx)->GetType() != FGFT_FLOAT64 || + oTable.GetField(i_emaxy)->GetType() != FGFT_FLOAT64 || + oTable.GetField(i_srid)->GetType() != FGFT_INT32) + { + CPLError(CE_Failure, CPLE_AppDefined, "Wrong structure for %s table", + osBndTableName.c_str()); + return false; + } + + int iRow = 0; + while (iRow < oTable.GetTotalRecordCount() && + (iRow = oTable.GetAndSelectNextNonEmptyRow(iRow)) >= 0) + { + auto psField = oTable.GetFieldValue(i_raster_id); + if (!psField) + { + CPLError(CE_Failure, CPLE_AppDefined, + "Cannot read field %s in %s table", "raster_id", + osBndTableName.c_str()); + return false; + } + if (psField->Integer != 1) + { + CPLError(CE_Warning, CPLE_AppDefined, + "Raster with raster_id = %d (!= 1) ignored", + psField->Integer); + continue; + } + + const int nGDBRasterBandId = iRow + 1; + + psField = oTable.GetFieldValue(i_sequence_nbr); + if (!psField) + { + CPLError(CE_Failure, CPLE_AppDefined, + "Cannot read field %s in %s table", "sequence_nbr", + osBndTableName.c_str()); + return false; + } + const int nSequenceNr = psField->Integer; + + m_oMapGDALBandToGDBBandId[nSequenceNr] = nGDBRasterBandId; + + ++iRow; + } + + if (m_oMapGDALBandToGDBBandId.empty()) + { + CPLError(CE_Failure, CPLE_AppDefined, "Cannot read record in %s table", + osBndTableName.c_str()); + return false; + } + + auto psField = oTable.GetFieldValue(i_band_width); + if (!psField) + { + CPLError(CE_Failure, CPLE_AppDefined, + "Cannot read field %s in %s table", "band_width", + osBndTableName.c_str()); + return false; + } + int nWidth = psField->Integer; + + psField = oTable.GetFieldValue(i_band_height); + if (!psField) + { + CPLError(CE_Failure, CPLE_AppDefined, + "Cannot read field %s in %s table", "band_height", + osBndTableName.c_str()); + return false; + } + int nHeight = psField->Integer; + + const int l_nBands = static_cast(m_oMapGDALBandToGDBBandId.size()); + if (!GDALCheckDatasetDimensions(nWidth, nHeight) || + !GDALCheckBandCount(l_nBands, /*bIsZeroAllowed=*/false)) + { + return false; + } + + psField = oTable.GetFieldValue(i_block_width); + if (!psField) + { + CPLError(CE_Failure, CPLE_AppDefined, + "Cannot read field %s in %s table", "block_width", + osBndTableName.c_str()); + return false; + } + const int nBlockWidth = psField->Integer; + + // 32768 somewhat arbitrary + if (nBlockWidth <= 0 || nBlockWidth > 32768) + { + CPLError(CE_Failure, CPLE_AppDefined, "Invalid %s in %s table", + "block_width", osBndTableName.c_str()); + return false; + } + + psField = oTable.GetFieldValue(i_block_height); + if (!psField) + { + CPLError(CE_Failure, CPLE_AppDefined, + "Cannot read field %s in %s table", "block_height", + osBndTableName.c_str()); + return false; + } + const int nBlockHeight = psField->Integer; + + // 32768 somewhat arbitrary + if (nBlockHeight <= 0 || nBlockHeight > 32768) + { + CPLError(CE_Failure, CPLE_AppDefined, "Invalid %s in %s table", + "block_height", osBndTableName.c_str()); + return false; + } + + psField = oTable.GetFieldValue(i_band_types); + if (!psField) + { + CPLError(CE_Failure, CPLE_AppDefined, + "Cannot read field %s in %s table", "band_types", + osBndTableName.c_str()); + return false; + } + const int nBandTypes = psField->Integer; + + psField = oTable.GetFieldValue(i_eminx); + if (!psField) + { + CPLError(CE_Failure, CPLE_AppDefined, + "Cannot read field %s in %s table", "eminx", + osBndTableName.c_str()); + return false; + } + const double dfMinX = psField->Real; + + psField = oTable.GetFieldValue(i_eminy); + if (!psField) + { + CPLError(CE_Failure, CPLE_AppDefined, + "Cannot read field %s in %s table", "eminy", + osBndTableName.c_str()); + return false; + } + const double dfMinY = psField->Real; + + psField = oTable.GetFieldValue(i_emaxx); + if (!psField) + { + CPLError(CE_Failure, CPLE_AppDefined, + "Cannot read field %s in %s table", "emaxx", + osBndTableName.c_str()); + return false; + } + const double dfMaxX = psField->Real; + + psField = oTable.GetFieldValue(i_emaxy); + if (!psField) + { + CPLError(CE_Failure, CPLE_AppDefined, + "Cannot read field %s in %s table", "emaxy", + osBndTableName.c_str()); + return false; + } + const double dfMaxY = psField->Real; + + psField = oTable.GetFieldValue(i_block_origin_x); + if (!psField) + { + CPLError(CE_Failure, CPLE_AppDefined, + "Cannot read field %s in %s table", "block_origin_x", + osBndTableName.c_str()); + return false; + } + const double dfBlockOriginX = psField->Real; + + psField = oTable.GetFieldValue(i_block_origin_y); + if (!psField) + { + CPLError(CE_Failure, CPLE_AppDefined, + "Cannot read field %s in %s table", "block_origin_y", + osBndTableName.c_str()); + return false; + } + const double dfBlockOriginY = psField->Real; + + // Figure out data type + GDALDataType eDT = GDT_Byte; + const int nBitWidth = (nBandTypes >> 19) & ((1 << 7) - 1); + const int nBitType = (nBandTypes >> 16) & ((1 << 2) - 1); + constexpr int IS_UNSIGNED = 0; + constexpr int IS_SIGNED = 1; + constexpr int IS_FLOATING_POINT = 2; + if ((nBitWidth >= 1 && nBitWidth < 8) && nBitType == IS_UNSIGNED) + { + eDT = GDT_Byte; + } + else if (nBitWidth == 8 && nBitType <= IS_SIGNED) + { + eDT = nBitType == IS_SIGNED ? GDT_Int8 : GDT_Byte; + } + else if (nBitWidth == 16 && nBitType <= IS_SIGNED) + { + eDT = nBitType == IS_SIGNED ? GDT_Int16 : GDT_UInt16; + } + else if (nBitWidth == 32 && nBitType <= IS_FLOATING_POINT) + { + eDT = nBitType == IS_FLOATING_POINT ? GDT_Float32 + : nBitType == IS_SIGNED ? GDT_Int32 + : GDT_UInt32; + } + else if (nBitWidth == 64 && nBitType == 0) + { + eDT = GDT_Float64; + } + else + { + CPLError(CE_Failure, CPLE_AppDefined, + "Unhandled nBitWidth=%d, nBitType=%d in %s table", nBitWidth, + nBitType, osBndTableName.c_str()); + return false; + } + + // To avoid potential integer overflows in IReadBlock() + if (nBlockWidth * nBlockHeight > + std::numeric_limits::max() / nBitWidth) + { + CPLError(CE_Failure, CPLE_AppDefined, + "Too large block %dx%d in %s table", nBlockWidth, nBlockHeight, + osBndTableName.c_str()); + return false; + } + + // Figure out compression + const int nCompression = (nBandTypes >> 8) & 0xff; + switch (nCompression) + { + case 0: + m_eRasterCompression = Compression::NONE; + break; + case 4: + m_eRasterCompression = Compression::LZ77; + SetMetadataItem("COMPRESSION", "DEFLATE", "IMAGE_STRUCTURE"); + break; + case 8: + m_eRasterCompression = Compression::JPEG; + SetMetadataItem("COMPRESSION", "JPEG", "IMAGE_STRUCTURE"); + break; + case 12: + m_eRasterCompression = Compression::JPEG2000; + SetMetadataItem("COMPRESSION", "JPEG2000", "IMAGE_STRUCTURE"); + break; + default: + { + CPLError(CE_Failure, CPLE_AppDefined, + "Unhandled compression %d in %s table", nCompression, + osBndTableName.c_str()); + return false; + } + } + + // Figure out geotransform + + if (!(dfMaxX > dfMinX && dfMaxY > dfMinY)) + { + CPLError(CE_Warning, CPLE_AppDefined, + "!(dfMaxX > dfMinX && dfMaxY > dfMinY)"); + } + else if (nWidth == 1 || nHeight == 1) + { + CPLError(CE_Warning, CPLE_AppDefined, + "nWidth == 1 || nHeight == 1: cannot determine geotransform"); + } + else + { + // FileGDB uses a center-of-pixel convention for georeferencing + // Transform to GDAL's corner-of-pixel convention. + const double dfResX = (dfMaxX - dfMinX) / (nWidth - 1); + const double dfResY = (dfMaxY - dfMinY) / (nHeight - 1); + m_bHasGeoTransform = true; + m_adfGeoTransform[0] = dfBlockOriginX - dfResX / 2; + m_adfGeoTransform[1] = dfResX; + m_adfGeoTransform[2] = 0.0; + m_adfGeoTransform[3] = dfBlockOriginY + dfResY / 2; + m_adfGeoTransform[4] = 0.0; + m_adfGeoTransform[5] = -dfResY; + + // If the block origin is within the full raster extent, reduce the + // advertized raster width/height + if (dfBlockOriginX > dfMinX && dfBlockOriginX < dfMaxX) + { + const int nWidthDiff = static_cast( + std::round((dfMinX - dfBlockOriginX) / dfResX)); + if (nWidthDiff < nWidth) + nWidth -= nWidthDiff; + } + if (dfBlockOriginY < dfMaxY && dfBlockOriginY > dfMinY) + { + const int nHeightDiff = static_cast( + std::round((dfMaxY - dfBlockOriginY) / dfResY)); + if (nHeightDiff < nHeight) + nHeight -= nHeightDiff; + } + } + + // Get SRID, and fetch WKT from GDBSpatialRefs table + psField = oTable.GetFieldValue(i_srid); + if (!psField) + { + CPLError(CE_Warning, CPLE_AppDefined, + "Cannot read field %s in %s table", "srid", + osBndTableName.c_str()); + } + else if (m_osGDBSpatialRefsFilename.empty()) + { + CPLError(CE_Warning, CPLE_AppDefined, "No GDBSpatialRefs table"); + } + else + { + const int nSRID = psField->Integer; + FileGDBTable oTableSRS; + if (oTableSRS.Open(m_osGDBSpatialRefsFilename.c_str(), false)) + { + const int iSRTEXT = oTableSRS.GetFieldIdx("SRTEXT"); + if (iSRTEXT < 0 || + oTableSRS.GetField(iSRTEXT)->GetType() != FGFT_STRING) + { + CPLError(CE_Warning, CPLE_AppDefined, + "Could not find field %s in table %s", "SRTEXT", + oTableSRS.GetFilename().c_str()); + } + else if (nSRID == 0) + { + // BldgHeights.gdb is such. We must fetch the SRS from the + // Definition column of the GDB_Items table + CPLXMLTreeCloser psTree( + CPLParseXMLString(osDefinition.c_str())); + if (psTree == nullptr) + { + CPLError( + CE_Warning, CPLE_AppDefined, + "Cannot parse XML definition. SRS will be missing"); + } + else + { + CPLStripXMLNamespace(psTree.get(), nullptr, TRUE); + const CPLXMLNode *psInfo = + CPLSearchXMLNode(psTree.get(), "=DERasterDataset"); + if (psInfo) + { + auto poSRS = BuildSRS(psInfo); + if (poSRS) + m_oRasterSRS = *poSRS; + } + if (m_oRasterSRS.IsEmpty()) + { + CPLError(CE_Warning, CPLE_AppDefined, + "Cannot get SRS from XML definition"); + } + } + } + else if (nSRID < 0 || !oTableSRS.SelectRow(nSRID - 1) || + oTableSRS.HasGotError()) + { + CPLError(CE_Warning, CPLE_AppDefined, + "Cannot find record corresponding to SRID = %d", + nSRID); + } + else + { + const auto psSRTEXT = oTableSRS.GetFieldValue(iSRTEXT); + if (psSRTEXT && psSRTEXT->String) + { + auto poSRS = BuildSRS(psSRTEXT->String); + if (poSRS) + m_oRasterSRS = *poSRS; + } + else + { + CPLError(CE_Warning, CPLE_AppDefined, + "Cannot get SRTEXT corresponding to SRID = %d", + nSRID); + } + } + } + } + + // Open the fras_blk_XXX table, which contains pixel data, as a OGR layer + const std::string osBlkTableName( + std::string("fras_blk_").append(osLayerName).c_str()); + m_poBlkLayer = BuildLayerFromName(osBlkTableName.c_str()); + if (!m_poBlkLayer) + { + CPLError(CE_Failure, CPLE_AppDefined, "Cannot find table %s", + osBlkTableName.c_str()); + return false; + } + auto poFDefn = m_poBlkLayer->GetLayerDefn(); + if (poFDefn->GetFieldIndex("rasterband_id") < 0 || + poFDefn->GetFieldIndex("rrd_factor") < 0 || + poFDefn->GetFieldIndex("row_nbr") < 0 || + poFDefn->GetFieldIndex("col_nbr") < 0 || + poFDefn->GetFieldIndex("block_data") < 0 || + poFDefn->GetFieldIndex("block_key") < 0) + { + CPLError(CE_Failure, CPLE_AppDefined, "Wrong structure for %s table", + osBlkTableName.c_str()); + return false; + } + + nRasterXSize = nWidth; + nRasterYSize = nHeight; + + if (m_oMapGDALBandToGDBBandId.size() > 1) + { + SetMetadataItem("INTERLEAVE", "BAND", "IMAGE_STRUCTURE"); + } + + // Figure out number of overviews by looking at the biggest block_key + // (should only involve looking in the corresponding index). + int nOverviewCount = 0; + CPLString osSQL; + osSQL.Printf("SELECT MAX(block_key) FROM \"%s\"", osBlkTableName.c_str()); + auto poSQLLyr = ExecuteSQL(osSQL.c_str(), nullptr, nullptr); + if (poSQLLyr) + { + auto poFeat = std::unique_ptr(poSQLLyr->GetNextFeature()); + if (poFeat) + { + const char *pszMaxKey = poFeat->GetFieldAsString(0); + if (strlen(pszMaxKey) == strlen("0000BANDOVYYYYXXXX ")) + { + char szHex[3] = {0}; + memcpy(szHex, pszMaxKey + 8, 2); + unsigned nMaxRRD = 0; + sscanf(szHex, "%02X", &nMaxRRD); + nOverviewCount = + static_cast(std::min(31, nMaxRRD)); + } + } + ReleaseResultSet(poSQLLyr); + } + + if (m_eRasterCompression == Compression::JPEG) + { + GuessJPEGQuality(nOverviewCount); + } + + // It seems that the top left corner of overviews is registered against + // (eminx, emaxy), contrary to the full resolution layer which is registered + // against (block_origin_x, block_origin_y). + // At least, that's what was observed on the dataset + // ftp://ftp.gisdata.mn.gov/pub/gdrs/data/pub/us_mn_state_dnr/water_lake_bathymetry/fgdb_water_lake_bathymetry.zip + if ((dfBlockOriginX != dfMinX || dfBlockOriginY != dfMaxY) && + nOverviewCount > 0) + { + CPLDebug("OpenFileGDB", + "Ignoring overviews as block origin != (minx, maxy)"); + nOverviewCount = 0; + } + + // Create raster bands + + // Create mask band of full resolution, if we don't assign a nodata value + std::unique_ptr poMaskBand; + + // Default "nodata" padding in areas whose validity mask is 0 ? + // Not reliable on integer data types. + // Byte -> 0 + // Int8 -> -128 ? + // Int16 -> 32767 + // UInt16 -> 0 + // (u)int10 -> 65535 + // (u)int12 -> 65535 + // Int32 -> 2147483647 + // UInt32 -> 2147483647 + // Float32 -> 3.4e+38 + // Float64 -> 1.79e+308 + + bool bHasNoData = false; + double dfNoData = 0.0; + const char *pszNoDataOrMask = CSLFetchNameValueDef( + poOpenInfo->papszOpenOptions, "NODATA_OR_MASK", "AUTO"); + if (EQUAL(pszNoDataOrMask, "AUTO")) + { + // In AUTO mode, we only set nodata for Float32/Float64 + // For other data types, report a mask band. + if (eDT == GDT_Float32) + { + bHasNoData = true; + dfNoData = static_cast(static_cast(3.4e+38)); + } + else if (eDT == GDT_Float64) + { + bHasNoData = true; + dfNoData = 1.79e+308; + } + else + { + poMaskBand = cpl::make_unique( + this, 1, GDT_Byte, 8, nBlockWidth, nBlockHeight, 0, true); + } + } + else if (EQUAL(pszNoDataOrMask, "MASK")) + { + poMaskBand = cpl::make_unique( + this, 1, GDT_Byte, 8, nBlockWidth, nBlockHeight, 0, true); + } + else if (!EQUAL(pszNoDataOrMask, "NONE")) + { + dfNoData = CPLAtof(pszNoDataOrMask); + if (eDT == GDT_Float64) + { + bHasNoData = true; + } + else if (eDT == GDT_Float32) + { + if (std::fabs(dfNoData) > std::numeric_limits::max()) + { + CPLError(CE_Failure, CPLE_AppDefined, + "Invalid nodata value %.18g for Float32", dfNoData); + return false; + } + bHasNoData = true; + } + else if (GDALDataTypeIsInteger(eDT)) + { + double dfMin = 0, dfMax = 0; + switch (eDT) + { + case GDT_Int8: + dfMin = std::numeric_limits::min(); + dfMax = std::numeric_limits::max(); + break; + case GDT_Byte: + dfMin = std::numeric_limits::min(); + dfMax = std::numeric_limits::max(); + break; + case GDT_Int16: + dfMin = std::numeric_limits::min(); + dfMax = std::numeric_limits::max(); + break; + case GDT_UInt16: + dfMin = std::numeric_limits::min(); + dfMax = std::numeric_limits::max(); + break; + case GDT_Int32: + dfMin = std::numeric_limits::min(); + dfMax = std::numeric_limits::max(); + break; + case GDT_UInt32: + dfMin = std::numeric_limits::min(); + dfMax = std::numeric_limits::max(); + break; + default: + CPLAssert(false); + return false; + } + if (!std::isfinite(dfNoData) || dfNoData < dfMin || + dfNoData > dfMax || + dfNoData != static_cast(static_cast(dfNoData))) + { + CPLError(CE_Failure, CPLE_AppDefined, + "Invalid nodata value %.18g for %s", dfNoData, + GDALGetDataTypeName(eDT)); + return false; + } + bHasNoData = true; + } + } + + GDALOpenFileGDBRasterBand *poMaskBandRef = poMaskBand.get(); + + for (int iBand = 1; iBand <= l_nBands; ++iBand) + { + auto poBand = new GDALOpenFileGDBRasterBand( + this, iBand, eDT, nBitWidth, nBlockWidth, nBlockHeight, 0, false); + if (poMaskBandRef) + { + if (iBand == 1) + { + // Make the mask band owned by the first raster band + poBand->m_poMaskBandOwned = std::move(poMaskBand); + poMaskBandRef = poBand->m_poMaskBandOwned.get(); + poMaskBandRef->m_poMainBand = poBand; + } + poBand->m_poMaskBand = poMaskBandRef; + } + else if (bHasNoData) + { + poBand->m_dfNoData = dfNoData; + poBand->m_bHasNoData = true; + } + + // Create overview bands + for (int iOvr = 0; iOvr < nOverviewCount; ++iOvr) + { + auto poOvrBand = cpl::make_unique( + this, iBand, eDT, nBitWidth, nBlockWidth, nBlockHeight, + iOvr + 1, false); + if (poBand->m_bHasNoData) + { + poOvrBand->m_dfNoData = dfNoData; + poOvrBand->m_bHasNoData = true; + } + poBand->m_apoOverviewBands.emplace_back(std::move(poOvrBand)); + } + + SetBand(iBand, poBand); + } + + // Create mask band of overview bands + if (poMaskBandRef) + { + for (int iOvr = 0; iOvr < nOverviewCount; ++iOvr) + { + for (int iBand = 1; iBand <= l_nBands; ++iBand) + { + auto poOvrBand = cpl::down_cast( + GetRasterBand(iBand)) + ->m_apoOverviewBands[iOvr] + .get(); + if (iBand == 1) + { + // Make the mask band owned by the first raster band + poOvrBand->m_poMaskBandOwned = + cpl::make_unique( + this, 1, GDT_Byte, 8, nBlockWidth, nBlockHeight, + iOvr + 1, true); + poMaskBandRef = poOvrBand->m_poMaskBandOwned.get(); + poMaskBandRef->m_poMainBand = poOvrBand; + } + poOvrBand->m_poMaskBand = poMaskBandRef; + } + } + } + + ReadAuxTable(osLayerName); + + if (!osDefinition.empty()) + { + const char *const apszMD[] = {osDefinition.c_str(), nullptr}; + SetMetadata(const_cast(apszMD), "xml:definition"); + } + + if (!osDocumentation.empty()) + { + const char *const apszMD[] = {osDocumentation.c_str(), nullptr}; + SetMetadata(const_cast(apszMD), "xml:documentation"); + } + + // We are all fine after all those preliminary checks and setups ! + return true; +} + +/************************************************************************/ +/* GuessJPEGQuality() */ +/************************************************************************/ + +void OGROpenFileGDBDataSource::GuessJPEGQuality(int nOverviewCount) +{ + // For JPEG, fetch JPEG_QUALITY from the data of the smallest overview level + CPLString osFilter; + osFilter.Printf("block_key = '0000%04X%02X%04X%04X'", + 1, // band + nOverviewCount, + 0, // nBlockYOff + 0 // nBlockXOff + ); + + CPLAssert(m_poBlkLayer); + m_poBlkLayer->SetAttributeFilter(osFilter.c_str()); + auto poFeature = + std::unique_ptr(m_poBlkLayer->GetNextFeature()); + if (poFeature) + { + const int nFieldIdx = poFeature->GetFieldIndex("block_data"); + CPLAssert(nFieldIdx >= 0); + if (poFeature->IsFieldSetAndNotNull(nFieldIdx)) + { + int nInBytes = 0; + const GByte *pabyData = + poFeature->GetFieldAsBinary(nFieldIdx, &nInBytes); + if (nInBytes >= 5) + { + uint32_t nJPEGSize = nInBytes - 1; + uint32_t nJPEGOffset = 1; + if (pabyData[0] == 0xFE) + { + // JPEG followed by binary mask + memcpy(&nJPEGSize, pabyData + 1, sizeof(uint32_t)); + CPL_LSBPTR32(&nJPEGSize); + if (nJPEGSize > static_cast(nInBytes - 5)) + { + nJPEGSize = 0; + } + nJPEGOffset = 5; + } + else if (pabyData[0] != 1) + { + nJPEGSize = 0; + } + if (nJPEGSize) + { + CPLString osTmpFilename; + osTmpFilename.Printf("/vsimem/_openfilegdb/%p.jpg", this); + VSIFCloseL(VSIFileFromMemBuffer( + osTmpFilename.c_str(), + const_cast(pabyData + nJPEGOffset), nJPEGSize, + false)); + const char *const apszDrivers[] = {"JPEG", nullptr}; + auto poJPEGDS = std::unique_ptr( + GDALDataset::Open(osTmpFilename.c_str(), GDAL_OF_RASTER, + apszDrivers)); + if (poJPEGDS) + { + const char *pszQuality = poJPEGDS->GetMetadataItem( + "JPEG_QUALITY", "IMAGE_STRUCTURE"); + if (pszQuality) + { + SetMetadataItem("JPEG_QUALITY", pszQuality, + "IMAGE_STRUCTURE"); + } + } + VSIUnlink(osTmpFilename); + } + } + } + } +} + +/************************************************************************/ +/* ReadAuxTable() */ +/************************************************************************/ + +// Record type=9 of table fras_ras_XXXX contains a PropertySet object, +// which may contain statistics +// For example on +// https://listdata.thelist.tas.gov.au/opendata/data/NCH_ES_WATER_LOGGING_HAZARD_STATEWIDE.zip +void OGROpenFileGDBDataSource::ReadAuxTable(const std::string &osLayerName) +{ + const std::string osAuxTableName( + std::string("fras_aux_").append(osLayerName).c_str()); + auto poLayer = BuildLayerFromName(osAuxTableName.c_str()); + if (!poLayer) + { + CPLDebug("OpenFileGDB", "Cannot find table %s", osAuxTableName.c_str()); + return; + } + auto poFDefn = poLayer->GetLayerDefn(); + const int iFieldObjectIdx = poFDefn->GetFieldIndex("object"); + if (poFDefn->GetFieldIndex("type") < 0 || iFieldObjectIdx < 0) + { + CPLDebug("OpenFileGDB", "Wrong structure for %s table", + osAuxTableName.c_str()); + return; + } + poLayer->SetAttributeFilter("type = 9"); + auto poFeature = std::unique_ptr(poLayer->GetNextFeature()); + if (!poFeature) + return; + if (!poFeature->IsFieldSetAndNotNull(iFieldObjectIdx)) + return; + int nBytes = 0; + const GByte *pabyData = + poFeature->GetFieldAsBinary(iFieldObjectIdx, &nBytes); + if (!pabyData || nBytes == 0) + return; + int iOffset = 0; + + const auto ReadString = [pabyData, &iOffset, nBytes](std::string &osStr) + { + if (iOffset > nBytes - 4) + return false; + int nStrLength; + memcpy(&nStrLength, pabyData + iOffset, 4); + CPL_LSBPTR32(&nStrLength); + iOffset += 4; + if (nStrLength <= 2 || iOffset > nBytes - nStrLength) + return false; + if ((nStrLength % 2) != 0) + return false; + // nStrLength / 2 to get the number of characters + // and - 1 to remove the null terminating one + osStr = ReadUTF16String(pabyData + iOffset, nStrLength / 2 - 1); + iOffset += nStrLength; + return true; + }; + + // pabyData is an ArcObject "PropertySet" object, which is key/value + // dictionary. This is hard to parse given there are variable-length value + // whose size is not explicit. So let's use a heuristics by looking for + // the beginning of a inner PropertySet with band properties that starts + // with a KIND=BAND key value pair. + constexpr GByte abyNeedle[] = { + 'K', 0, 'I', 0, 'N', 0, 'D', 0, 0, 0, 8, 0, // 8 = string + 10, 0, 0, 0, // number of bytes of following value + 'B', 0, 'A', 0, 'N', 0, 'D', 0, 0, 0}; + constexpr int nNeedleSize = static_cast(sizeof(abyNeedle)); + + for (int iBand = 1; iBand <= nBands; ++iBand) + { + int iNewOffset = -1; + for (int i = iOffset; i < nBytes - nNeedleSize; ++i) + { + if (pabyData[i] == 'K' && + memcmp(pabyData + i, abyNeedle, nNeedleSize) == 0) + { + iNewOffset = i + nNeedleSize; + break; + } + } + if (iNewOffset < 0) + return; + iOffset = iNewOffset; + + // Try to read as many key/value pairs as possible + while (true) + { + // Read key + std::string osKey; + if (!ReadString(osKey)) + return; + + // Read value type as a short + uint16_t nValueType; + if (iOffset > nBytes - 2) + return; + memcpy(&nValueType, pabyData + iOffset, 2); + CPL_LSBPTR16(&nValueType); + iOffset += 2; + + // Skip over non-string values + if (nValueType == 0 || nValueType == 1) // null / empty value + { + continue; + } + if (nValueType == 2) // short value + { + if (iOffset > nBytes - 2) + return; + iOffset += 2; + continue; + } + + if (nValueType == 3 || nValueType == 4) // int or long value + { + if (iOffset > nBytes - 4) + return; + iOffset += 4; + continue; + } + + if (nValueType == 5 || nValueType == 7) // double or date value + { + if (iOffset > nBytes - 8) + return; + iOffset += 8; + continue; + } + + if (nValueType != 8) // 8 = string + { + // Give up with this band as the value type is not handled, + // and we can't skip over it. + break; + } + + // Read string value + std::string osValue; + if (!ReadString(osValue)) + return; + + GetRasterBand(iBand)->SetMetadataItem(osKey.c_str(), + osValue.c_str()); + } + } +} + +/************************************************************************/ +/* GetGeoTransform() */ +/************************************************************************/ + +CPLErr OGROpenFileGDBDataSource::GetGeoTransform(double *padfGeoTransform) +{ + memcpy(padfGeoTransform, m_adfGeoTransform.data(), + sizeof(m_adfGeoTransform)); + return m_bHasGeoTransform ? CE_None : CE_Failure; +} + +/************************************************************************/ +/* GetSpatialRef() */ +/************************************************************************/ + +const OGRSpatialReference *OGROpenFileGDBDataSource::GetSpatialRef() const +{ + return m_oRasterSRS.IsEmpty() ? nullptr : &m_oRasterSRS; +} + +/************************************************************************/ +/* GDALOpenFileGDBRasterBand() */ +/************************************************************************/ + +GDALOpenFileGDBRasterBand::GDALOpenFileGDBRasterBand( + OGROpenFileGDBDataSource *poDSIn, int nBandIn, GDALDataType eDT, + int nBitWidth, int nBlockWidth, int nBlockHeight, int nOverviewLevel, + bool bIsMask) + : m_nBitWidth(nBitWidth), m_nOverviewLevel(nOverviewLevel), + m_bIsMask(bIsMask) +{ + poDS = poDSIn; + nBand = nBandIn; + eDataType = eDT; + nRasterXSize = std::max(1, poDSIn->GetRasterXSize() >> nOverviewLevel); + nRasterYSize = std::max(1, poDSIn->GetRasterYSize() >> nOverviewLevel); + nBlockXSize = nBlockWidth; + nBlockYSize = nBlockHeight; + if (nBitWidth < 8) + { + SetMetadataItem("NBITS", CPLSPrintf("%d", nBitWidth), + "IMAGE_STRUCTURE"); + } +} + +/************************************************************************/ +/* SetNoDataFromMask() */ +/************************************************************************/ + +template +static void SetNoDataFromMask(void *pImage, const GByte *pabyMask, + size_t nPixels, double dfNoData) +{ + const T noData = static_cast(dfNoData); + const T noDataReplacement = + noData == std::numeric_limits::max() ? noData - 1 : noData + 1; + bool bHasWarned = false; + for (size_t i = 0; i < nPixels; ++i) + { + if (pabyMask && !(pabyMask[i / 8] & (0x80 >> (i & 7)))) + { + static_cast(pImage)[i] = noData; + } + else if (static_cast(pImage)[i] == noData) + { + static_cast(pImage)[i] = noDataReplacement; + if (!bHasWarned) + { + bHasWarned = true; + CPLError(CE_Warning, CPLE_AppDefined, + "Valid data found with value equal to nodata (%.0f). " + "Got substituted with %.0f", + static_cast(noData), + static_cast(noDataReplacement)); + } + } + } +} + +/************************************************************************/ +/* IReadBlock() */ +/************************************************************************/ + +CPLErr GDALOpenFileGDBRasterBand::IReadBlock(int nBlockXOff, int nBlockYOff, + void *pImage) +{ + auto poGDS = cpl::down_cast(poDS); + auto &poLyr = poGDS->m_poBlkLayer; + + // Return (pointer to image data, owner block). Works when called from main band + // or mask band. owner block must be DropLock() once done (if not null) + const auto GetImageData = [this, nBlockXOff, nBlockYOff, pImage]() + { + void *pImageData = nullptr; + GDALRasterBlock *poBlock = nullptr; + if (m_bIsMask) + { + CPLAssert(m_poMainBand); + poBlock = + m_poMainBand->TryGetLockedBlockRef(nBlockXOff, nBlockYOff); + if (poBlock) + { + // The block is already in cache. Return (null, null) + poBlock->DropLock(); + poBlock = nullptr; + } + else + { + poBlock = m_poMainBand->GetLockedBlockRef(nBlockXOff, + nBlockYOff, true); + if (poBlock) + pImageData = poBlock->GetDataRef(); + } + } + else + { + pImageData = pImage; + } + return std::make_pair(pImageData, poBlock); + }; + + // Return (pointer to mask data, owner block). Works when called from main band + // or mask band. owner block must be DropLock() once done (if not null) + const auto GetMaskData = [this, nBlockXOff, nBlockYOff, pImage]() + { + void *pMaskData = nullptr; + GDALRasterBlock *poBlock = nullptr; + if (m_bIsMask) + { + pMaskData = pImage; + } + else + { + CPLAssert(m_poMaskBand); + poBlock = + m_poMaskBand->TryGetLockedBlockRef(nBlockXOff, nBlockYOff); + if (poBlock) + { + // The block is already in cache. Return (null, null) + poBlock->DropLock(); + poBlock = nullptr; + } + else + { + poBlock = m_poMaskBand->GetLockedBlockRef(nBlockXOff, + nBlockYOff, true); + if (poBlock) + pMaskData = poBlock->GetDataRef(); + } + } + return std::make_pair(pMaskData, poBlock); + }; + + const GDALDataType eImageDT = + m_poMainBand ? m_poMainBand->GetRasterDataType() : eDataType; + const size_t nPixels = static_cast(nBlockXSize) * nBlockYSize; + + const auto FillMissingBlock = + [this, eImageDT, nPixels, &GetImageData, &GetMaskData]() + { + // Set image data to nodata / 0 + { + auto imageDataAndBlock = GetImageData(); + auto pImageData = imageDataAndBlock.first; + auto poBlock = imageDataAndBlock.second; + if (pImageData) + { + const int nDTSize = GDALGetDataTypeSizeBytes(eImageDT); + if (m_bHasNoData) + { + GDALCopyWords64(&m_dfNoData, GDT_Float64, 0, pImageData, + eImageDT, nDTSize, nPixels); + } + else + { + memset(pImageData, 0, nPixels * nDTSize); + } + } + if (poBlock) + poBlock->DropLock(); + } + + // Set mask band to 0 (when it exists) + if (m_poMaskBand || m_bIsMask) + { + auto maskDataAndBlock = GetMaskData(); + auto pMaskData = maskDataAndBlock.first; + auto poBlock = maskDataAndBlock.second; + if (pMaskData) + { + const size_t nSize = + static_cast(nBlockXSize) * nBlockYSize; + memset(pMaskData, 0, nSize); + } + if (poBlock) + poBlock->DropLock(); + } + }; + + // Fetch block data from fras_blk_XXX layer + const int nGDALBandId = m_bIsMask ? 1 : nBand; + auto oIter = poGDS->m_oMapGDALBandToGDBBandId.find(nGDALBandId); + if (oIter == poGDS->m_oMapGDALBandToGDBBandId.end()) + { + CPLError(CE_Failure, CPLE_AppDefined, + "poGDS->m_oMapGDALBandToGDBBandId.find(%d) failed", + nGDALBandId); + } + const int nGDBRasterBandId = oIter->second; + + CPLString osFilter; + /* osFilter.Printf("rasterband_id = %d AND rrd_factor = %d AND row_nbr = %d " + "AND col_nbr = %d", + nGDBRasterBandId, + m_nOverviewLevel, nBlockYOff, nBlockXOff); + */ + osFilter.Printf("block_key = '0000%04X%02X%04X%04X'", nGDBRasterBandId, + m_nOverviewLevel, nBlockYOff, nBlockXOff); + // CPLDebug("OpenFileGDB", "Request %s", osFilter.c_str()); + poLyr->SetAttributeFilter(osFilter.c_str()); + auto poFeature = std::unique_ptr(poLyr->GetNextFeature()); + const int nImageDTSize = GDALGetDataTypeSizeBytes(eImageDT); + if (!poFeature) + { + // Missing blocks are legit + FillMissingBlock(); + return CE_None; + } + const int nFieldIdx = poFeature->GetFieldIndex("block_data"); + CPLAssert(nFieldIdx >= 0); + int nInBytes = 0; + if (!poFeature->IsFieldSetAndNotNull(nFieldIdx)) + { + // block_data unset found on ForestFalls.gdb + FillMissingBlock(); + return CE_None; + } + const GByte *pabyData = poFeature->GetFieldAsBinary(nFieldIdx, &nInBytes); + if (nInBytes == 0) + { + CPLError(CE_Failure, CPLE_AppDefined, "Image block is empty"); + return CE_Failure; + } + + // The input buffer may be concatenated with a 1-bit binary mask + const size_t nImageSize = nPixels * nImageDTSize; + const int nImageBitWidth = + m_poMainBand ? m_poMainBand->m_nBitWidth : m_nBitWidth; + const size_t nImageSizePacked = (nPixels * nImageBitWidth + 7) / 8; + const size_t nBinaryMaskSize = (nPixels + 7) / 8; + const size_t nImageSizeWithBinaryMask = nImageSizePacked + nBinaryMaskSize; + + // Unpack 1-bit, 2-bit, 4-bit data to full byte + const auto ExpandSubByteData = + [nPixels, nImageBitWidth](const GByte *pabyInput, void *pDstBuffer) + { + CPLAssert(nImageBitWidth < 8); + + size_t iBitOffset = 0; + for (size_t i = 0; i < nPixels; ++i) + { + unsigned nOutWord = 0; + + for (int iBit = 0; iBit < nImageBitWidth; ++iBit) + { + if (pabyInput[iBitOffset >> 3] & (0x80 >> (iBitOffset & 7))) + { + nOutWord |= (1 << (nImageBitWidth - 1 - iBit)); + } + ++iBitOffset; + } + + static_cast(pDstBuffer)[i] = static_cast(nOutWord); + } + }; + + const GByte *pabyMask = nullptr; + auto &abyTmpBuffer = + m_poMainBand ? m_poMainBand->m_abyTmpBuffer : m_abyTmpBuffer; + + switch (poGDS->m_eRasterCompression) + { + case OGROpenFileGDBDataSource::Compression::NONE: + { + if (static_cast(nInBytes) != nImageSizePacked && + static_cast(nInBytes) != nImageSizeWithBinaryMask) + { + CPLError(CE_Failure, CPLE_AppDefined, + "Not expected number of input bytes: %d", nInBytes); + return CE_Failure; + } + + auto imageDataAndBlock = GetImageData(); + auto pImageData = imageDataAndBlock.first; + auto poBlock = imageDataAndBlock.second; + + if (pImageData) + { + if (nImageSizePacked == nImageSize) + { + memcpy(pImageData, pabyData, nImageSize); +#ifdef CPL_LSB + if (nImageDTSize > 1) + { + GDALSwapWordsEx(pImageData, nImageDTSize, nPixels, + nImageDTSize); + } +#endif + } + else + { + ExpandSubByteData(pabyData, pImageData); + } + } + if (poBlock) + poBlock->DropLock(); + + if (static_cast(nInBytes) == nImageSizeWithBinaryMask) + pabyMask = pabyData + nImageSizePacked; + break; + } + + case OGROpenFileGDBDataSource::Compression::LZ77: + { + if (abyTmpBuffer.empty()) + { + try + { + abyTmpBuffer.resize(nImageSizeWithBinaryMask); + } + catch (const std::bad_alloc &e) + { + CPLError(CE_Failure, CPLE_OutOfMemory, "%s", e.what()); + return CE_Failure; + } + } + + size_t nOutBytes = 0; + if (!CPLZLibInflate(pabyData, nInBytes, abyTmpBuffer.data(), + abyTmpBuffer.size(), &nOutBytes) || + !(nOutBytes == nImageSizePacked || + nOutBytes == nImageSizeWithBinaryMask)) + { + CPLError( + CE_Failure, CPLE_AppDefined, + "CPLZLibInflate() failed: nInBytes = %u, nOutBytes = %u, " + "nImageSizePacked = %u, " + "nImageSizeWithBinaryMask = %u", + unsigned(nInBytes), unsigned(nOutBytes), + unsigned(nImageSizePacked), + unsigned(nImageSizeWithBinaryMask)); + return CE_Failure; + } + + auto imageDataAndBlock = GetImageData(); + auto pImageData = imageDataAndBlock.first; + auto poBlock = imageDataAndBlock.second; + + if (pImageData) + { + if (nImageSizePacked == nImageSize) + { + memcpy(pImageData, abyTmpBuffer.data(), nImageSize); +#ifdef CPL_LSB + if (nImageDTSize > 1) + { + GDALSwapWordsEx(pImageData, nImageDTSize, nPixels, + nImageDTSize); + } +#endif + } + else + { + ExpandSubByteData(abyTmpBuffer.data(), pImageData); + } + } + if (poBlock) + poBlock->DropLock(); + + if (nOutBytes == nImageSizeWithBinaryMask) + pabyMask = abyTmpBuffer.data() + nImageSizePacked; + break; + } + + case OGROpenFileGDBDataSource::Compression::JPEG: + { + if (GDALGetDriverByName("JPEG") == nullptr) + { + CPLError(CE_Failure, CPLE_AppDefined, "JPEG driver missing"); + return CE_Failure; + } + + if (static_cast(nInBytes) < 5) + { + CPLError(CE_Failure, CPLE_AppDefined, + "Not expected number of input bytes: %d", nInBytes); + return CE_Failure; + } + uint32_t nJPEGSize = nInBytes - 1; + uint32_t nJPEGOffset = 1; + if (pabyData[0] == 0xFE) + { + // JPEG followed by binary mask + memcpy(&nJPEGSize, pabyData + 1, sizeof(uint32_t)); + CPL_LSBPTR32(&nJPEGSize); + if (nJPEGSize > static_cast(nInBytes - 5)) + { + CPLError(CE_Failure, CPLE_AppDefined, + "Invalid nJPEGSize = %u", nJPEGSize); + return CE_Failure; + } + nJPEGOffset = 5; + + if (abyTmpBuffer.empty()) + { + try + { + abyTmpBuffer.resize(nBinaryMaskSize); + } + catch (const std::bad_alloc &e) + { + CPLError(CE_Failure, CPLE_OutOfMemory, "%s", e.what()); + return CE_Failure; + } + } + size_t nOutBytes = 0; + if (CPLZLibInflate( + pabyData + 5 + nJPEGSize, nInBytes - 5 - nJPEGSize, + abyTmpBuffer.data(), nBinaryMaskSize, &nOutBytes) && + nOutBytes == nBinaryMaskSize) + { + pabyMask = abyTmpBuffer.data(); + } + else + { + CPLError(CE_Warning, CPLE_AppDefined, + "Cannot decompress binary mask"); + } + } + else if (pabyData[0] != 1) + { + CPLError(CE_Failure, CPLE_AppDefined, "Invalid JPEG blob"); + return CE_Failure; + } + + VSILFILE *fp = VSIFOpenL("tmp.jpg", "wb"); + VSIFWriteL(pabyData + nJPEGOffset, nJPEGSize, 1, fp); + VSIFCloseL(fp); + + CPLString osTmpFilename; + osTmpFilename.Printf("/vsimem/_openfilegdb/%p.jpg", this); + VSIFCloseL(VSIFileFromMemBuffer( + osTmpFilename.c_str(), + const_cast(pabyData + nJPEGOffset), nJPEGSize, false)); + const char *const apszDrivers[] = {"JPEG", nullptr}; + auto poJPEGDS = std::unique_ptr(GDALDataset::Open( + osTmpFilename.c_str(), GDAL_OF_RASTER, apszDrivers)); + if (!poJPEGDS) + { + VSIUnlink(osTmpFilename.c_str()); + CPLError(CE_Failure, CPLE_AppDefined, "Cannot open JPEG blob"); + return CE_Failure; + } + if (poJPEGDS->GetRasterCount() != 1 || + poJPEGDS->GetRasterXSize() != nBlockXSize || + poJPEGDS->GetRasterYSize() != nBlockYSize) + { + VSIUnlink(osTmpFilename.c_str()); + CPLError(CE_Failure, CPLE_AppDefined, + "Inconsistent characteristics of JPEG blob"); + return CE_Failure; + } + + auto imageDataAndBlock = GetImageData(); + auto pImageData = imageDataAndBlock.first; + auto poBlock = imageDataAndBlock.second; + + const CPLErr eErr = + pImageData + ? poJPEGDS->GetRasterBand(1)->RasterIO( + GF_Read, 0, 0, nBlockXSize, nBlockYSize, pImageData, + nBlockXSize, nBlockYSize, eImageDT, 0, 0, nullptr) + : CE_None; + VSIUnlink(osTmpFilename.c_str()); + if (poBlock) + poBlock->DropLock(); + + if (eErr != CE_None) + { + CPLError(CE_Failure, CPLE_AppDefined, "Cannot read JPEG blob"); + return CE_Failure; + } + + break; + } + + case OGROpenFileGDBDataSource::Compression::JPEG2000: + { + const char *const apszDrivers[] = {"JP2KAK", "JP2ECW", + "JP2OpenJPEG", "JP2MrSID", + "JP2Lura", nullptr}; + bool bFoundJP2Driver = false; + for (const char *pszDriver : apszDrivers) + { + if (pszDriver && GDALGetDriverByName(pszDriver)) + { + bFoundJP2Driver = true; + break; + } + } + if (!bFoundJP2Driver) + { + CPLError(CE_Failure, CPLE_AppDefined, + "Did not find any JPEG2000 capable driver"); + return CE_Failure; + } + + if (static_cast(nInBytes) < 5) + { + CPLError(CE_Failure, CPLE_AppDefined, + "Not expected number of input bytes: %d", nInBytes); + return CE_Failure; + } + uint32_t nJPEGSize = nInBytes - 1; + uint32_t nJPEGOffset = 1; + if (pabyData[0] == 0xFF) + { + // JPEG2000 followed by binary mask + memcpy(&nJPEGSize, pabyData + 1, sizeof(uint32_t)); + CPL_LSBPTR32(&nJPEGSize); + if (nJPEGSize > static_cast(nInBytes - 5)) + { + CPLError(CE_Failure, CPLE_AppDefined, + "Invalid nJPEGSize = %u", nJPEGSize); + return CE_Failure; + } + nJPEGOffset = 5; + + if (abyTmpBuffer.empty()) + { + try + { + abyTmpBuffer.resize(nBinaryMaskSize); + } + catch (const std::bad_alloc &e) + { + CPLError(CE_Failure, CPLE_OutOfMemory, "%s", e.what()); + return CE_Failure; + } + } + size_t nOutBytes = 0; + if (CPLZLibInflate( + pabyData + 5 + nJPEGSize, nInBytes - 5 - nJPEGSize, + abyTmpBuffer.data(), nBinaryMaskSize, &nOutBytes) && + nOutBytes == nBinaryMaskSize) + { + pabyMask = abyTmpBuffer.data(); + } + else + { + CPLError(CE_Warning, CPLE_AppDefined, + "Cannot decompress binary mask"); + } + } + else if (pabyData[0] != 0) + { + CPLError(CE_Failure, CPLE_AppDefined, "Invalid JPEG2000 blob"); + return CE_Failure; + } + + CPLString osTmpFilename; + osTmpFilename.Printf("/vsimem/_openfilegdb/%p.j2k", this); + VSIFCloseL(VSIFileFromMemBuffer( + osTmpFilename.c_str(), + const_cast(pabyData + nJPEGOffset), nJPEGSize, false)); + auto poJP2KDS = std::unique_ptr(GDALDataset::Open( + osTmpFilename.c_str(), GDAL_OF_RASTER, apszDrivers)); + if (!poJP2KDS) + { + VSIUnlink(osTmpFilename.c_str()); + CPLError(CE_Failure, CPLE_AppDefined, + "Cannot open JPEG2000 blob"); + return CE_Failure; + } + if (poJP2KDS->GetRasterCount() != 1 || + poJP2KDS->GetRasterXSize() != nBlockXSize || + poJP2KDS->GetRasterYSize() != nBlockYSize) + { + VSIUnlink(osTmpFilename.c_str()); + CPLError(CE_Failure, CPLE_AppDefined, + "Inconsistent characteristics of JPEG2000 blob"); + return CE_Failure; + } + + auto imageDataAndBlock = GetImageData(); + auto pImageData = imageDataAndBlock.first; + auto poBlock = imageDataAndBlock.second; + + const CPLErr eErr = + pImageData + ? poJP2KDS->GetRasterBand(1)->RasterIO( + GF_Read, 0, 0, nBlockXSize, nBlockYSize, pImageData, + nBlockXSize, nBlockYSize, eImageDT, 0, 0, nullptr) + : CE_None; + VSIUnlink(osTmpFilename.c_str()); + if (poBlock) + poBlock->DropLock(); + + if (eErr != CE_None) + { + CPLError(CE_Failure, CPLE_AppDefined, + "Cannot read JPEG2000 blob"); + return CE_Failure; + } + + break; + } + } + + if (m_bIsMask || m_poMaskBand) + { + auto maskDataAndBlock = GetMaskData(); + auto pMaskData = maskDataAndBlock.first; + auto poBlock = maskDataAndBlock.second; + + if (pMaskData) + { + if (pabyMask) + { + // Unpack 1-bit array + for (size_t i = 0; i < nPixels; ++i) + { + static_cast(pMaskData)[i] = + (pabyMask[i / 8] & (0x80 >> (i & 7))) ? 255 : 0; + } + } + else + { + // No explicit mask in source block --> all valid + memset(pMaskData, 255, nPixels); + } + } + + if (poBlock) + poBlock->DropLock(); + } + else if (m_bHasNoData) + { + if (eImageDT == GDT_Byte) + { + SetNoDataFromMask(pImage, pabyMask, nPixels, m_dfNoData); + } + else if (eImageDT == GDT_Int8) + { + SetNoDataFromMask(pImage, pabyMask, nPixels, m_dfNoData); + } + else if (eImageDT == GDT_UInt16) + { + SetNoDataFromMask(pImage, pabyMask, nPixels, m_dfNoData); + } + else if (eImageDT == GDT_Int16) + { + SetNoDataFromMask(pImage, pabyMask, nPixels, m_dfNoData); + } + else if (eImageDT == GDT_UInt32) + { + SetNoDataFromMask(pImage, pabyMask, nPixels, m_dfNoData); + } + else if (eImageDT == GDT_Int32) + { + SetNoDataFromMask(pImage, pabyMask, nPixels, m_dfNoData); + } + else if (eImageDT == GDT_Float32) + { + if (pabyMask) + { + for (size_t i = 0; i < nPixels; ++i) + { + if (!(pabyMask[i / 8] & (0x80 >> (i & 7)))) + { + static_cast(pImage)[i] = + static_cast(m_dfNoData); + } + } + } + } + else if (eImageDT == GDT_Float64) + { + if (pabyMask) + { + for (size_t i = 0; i < nPixels; ++i) + { + if (!(pabyMask[i / 8] & (0x80 >> (i & 7)))) + { + static_cast(pImage)[i] = m_dfNoData; + } + } + } + } + else + { + CPLAssert(false); + } + } + +#if 0 + printf("Data:\n"); // ok + if (eDataType == GDT_Byte) + { + for (int y = 0; y < nBlockYSize; ++y) + { + for (int x = 0; x < nBlockXSize; ++x) + { + printf("%d ", // ok + static_cast(pImage)[y * nBlockXSize + x]); + } + printf("\n"); // ok + } + } + else if (eDataType == GDT_Int8) + { + for (int y = 0; y < nBlockYSize; ++y) + { + for (int x = 0; x < nBlockXSize; ++x) + { + printf("%d ", // ok + static_cast(pImage)[y * nBlockXSize + x]); + } + printf("\n"); // ok + } + } + else if (eDataType == GDT_UInt16) + { + for (int y = 0; y < nBlockYSize; ++y) + { + for (int x = 0; x < nBlockXSize; ++x) + { + printf("%d ", // ok + static_cast(pImage)[y * nBlockXSize + x]); + } + printf("\n"); // ok + } + } + else if (eDataType == GDT_Int16) + { + for (int y = 0; y < nBlockYSize; ++y) + { + for (int x = 0; x < nBlockXSize; ++x) + { + printf("%d ", // ok + static_cast(pImage)[y * nBlockXSize + x]); + } + printf("\n"); // ok + } + } + else if (eDataType == GDT_UInt32) + { + for (int y = 0; y < nBlockYSize; ++y) + { + for (int x = 0; x < nBlockXSize; ++x) + { + printf("%d ", // ok + static_cast(pImage)[y * nBlockXSize + x]); + } + printf("\n"); // ok + } + } + else if (eDataType == GDT_Int32) + { + for (int y = 0; y < nBlockYSize; ++y) + { + for (int x = 0; x < nBlockXSize; ++x) + { + printf("%d ", // ok + static_cast(pImage)[y * nBlockXSize + x]); + } + printf("\n"); // ok + } + } + else if (eDataType == GDT_Float32) + { + for (int y = 0; y < nBlockYSize; ++y) + { + for (int x = 0; x < nBlockXSize; ++x) + { + printf("%.8g ", // ok + static_cast(pImage)[y * nBlockXSize + x]); + } + printf("\n"); // ok + } + } + else if (eDataType == GDT_Float64) + { + for (int y = 0; y < nBlockYSize; ++y) + { + for (int x = 0; x < nBlockXSize; ++x) + { + printf("%.18g ", // ok + static_cast(pImage)[y * nBlockXSize + x]); + } + printf("\n"); // ok + } + } +#endif + +#if 0 + if (pabyMask) + { + printf("Mask:\n"); // ok + for (int y = 0; y < nBlockYSize; ++y) + { + for (int x = 0; x < nBlockXSize; ++x) + { + printf("%d ", // ok + (pabyMask[(y * nBlockXSize + x) / 8] & + (0x80 >> ((y * nBlockXSize + x) & 7))) + ? 1 + : 0); + } + printf("\n"); // ok + } + } +#endif + + return CE_None; +} + +/************************************************************************/ +/* GetDefaultRAT() */ +/************************************************************************/ + +GDALRasterAttributeTable *GDALOpenFileGDBRasterBand::GetDefaultRAT() +{ + if (m_poRAT) + return m_poRAT.get(); + if (poDS->GetRasterCount() > 1 || m_bIsMask) + return nullptr; + auto poGDS = cpl::down_cast(poDS); + const std::string osVATTableName( + std::string("VAT_").append(poGDS->m_osRasterLayerName)); + // Instanciate a new dataset, os that the RAT is standalone + auto poDSNew = cpl::make_unique(); + GDALOpenInfo oOpenInfo(poGDS->m_osDirName.c_str(), GA_ReadOnly); + if (!poDSNew->Open(&oOpenInfo)) + return nullptr; + auto poVatLayer = poDSNew->BuildLayerFromName(osVATTableName.c_str()); + if (!poVatLayer) + return nullptr; + m_poRAT = cpl::make_unique( + std::move(poDSNew), osVATTableName, std::move(poVatLayer)); + return m_poRAT.get(); +}