-
-
Notifications
You must be signed in to change notification settings - Fork 3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
QGIS cannot load feature classes from a .gdb with a 64bit ObjectID #57471
Comments
This should normally be fixed when you'll have a QGIS build against GDAL 3.9 which adds support for those new data types per OSGeo/gdal#8866 However I'm not totally sure about 64-bit OBJECTIDs. Would you mind attaching to this ticket a zipped .gdb with a 64-bit OBJECTID so I can check? |
In this .gdb the feature from the pictures above is included. With 64bit ObjectID of course. |
@coefficient1900 Thanks for the example. Which shows that 64-bit objectIds will need more work on the GDAL side. The file format version number in that example has changed, and there are other backward incompatible changes in header fields that prevent GDAL from correctly reading those files. I would need more examples to try understanding the exact changes in the file format. Typically (all below created with 64-bit objectIds)
It has been generated with the below GDAL Python script:
I'm also including a version with OBJECTIDs from 1 to 21504 (points from (0,0) to (2.1503,2.1503)). It might be useful to try to convert it to 64bit objectids, and then deleting 2048 or more consecutive OBJECTIDs. no_holes.gdb.zip
|
Thanks a lot @rouault
I hope this helps. |
@coefficient1900 This does help a lot. The with_holes is hard to decypher however. I've prepared a number of variations of input files around it to hopefully manage to make progress. In the attached with_holes_234567.zip, there are with_holes_2.gdb to with_holes_7.gdb. Would you mind converting them to 64 bit and attach back the results? |
Here are the _2 to _7 .gdbs converted to 64bit IDs: For the second case, should the .gdb contain a feature-class that include exclusively features with IDs outside the 32bit range? Did I get it right? |
yes that was my idea. That said both cases could potentially be useful. One with an ID > 32 bit, and another one with one ID < 32 bit and one > 32 bit. |
I'm also attaching with_holes_8.gdb.zip that would be worth converting to 64 bit. It contains several tables, as it might be easier to convert on your side. Tables with_holes_8_e and with_holes_8_f contain an object of id larger than 1 billion. I hope the conversion tool doesn't choke on this! |
This is the coverted "with_holes8.gdb": Do you still need the .gdb with feature IDs > 32bit? It is a little bit challenging to create such a feature class. |
At that point, no I don't think that would help me better understanding the format of sparse tables. I understand it partly, but not sufficiently. Thanks for all the converted datasets! |
(Partial) fix in OSGeo/gdal#9980 |
What is the bug or the crash?
When trying to load a feature class from a .gdb created with ArcGIS Pro > 3.2 it is possbile that this operation fails.
The crucial point seems to be that ESRI introduced new data types like 64bit field types for example for ObjectIDs.
Executing such an operation with a "classic" .gdb there is no problem.
First a knew .gdb and a feature class is created in ArcGISPro:
and then dropped in QGIS, everything is fine:
Steps to reproduce the issue
But when I used the tool "Migrate Object ID To 64 Bit" in ArcGISPro:
the capability of QGIS to read this feature-class is gone:
Versions
<style type="text/css"> p, li { white-space: pre-wrap; } </style>Aktive Python-Erweiterungen
alkisplugin
2.0.54
HCMGIS
22.9.9
processing_saga_nextgen
1.0.0
qfieldsync
v4.2.0
wfsclient
0.9.11
db_manager
0.1.20
grassprovider
2.12.99
MetaSearch
0.3.6
processing
2.12.99
sagaprovider
2.12.99
Supported QGIS version
New profile
Additional context
I know 3.28.15 is outdated, but it does not work with 3.36.x either.
The text was updated successfully, but these errors were encountered: