-
-
Notifications
You must be signed in to change notification settings - Fork 2.6k
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
[FEATURE] OpenFileGDB: add creation/update capabilities #5910
Conversation
4107cb4
to
1ce3b88
Compare
Same functional scope as write side of the FileGDB driver: - Create new database - Update existing database - Add / rename / delete layers - Add fields, including to existing non-empty layers - Alter / delete fields - Add / update / delete features - Spatial index creation / update - Attribute index creation / update - Create / update / delete field domains - 'Emulated' transaction support - Same layer creation options as FileGDB driver - FileGDB v10 format only Funded by Provincie Zuid-Holland, Provincie Gelderland and Gemeente Amsterdam
1ce3b88
to
93d671a
Compare
@rouault this is fantastic news, and well done to Provincie Zuid-Holland, Provincie Gelderland and Gemeente Amsterdam! Is there a docker build to test this? |
I just generated one with: Available with |
…ullable state and field type in a more bulletproof way
pBrokendowntime->tm_hour = psField->Date.Hour; | ||
pBrokendowntime->tm_min = psField->Date.Minute; | ||
pBrokendowntime->tm_sec = static_cast<int>(psField->Date.Second); | ||
if( STARTS_WITH_CI(osExpression.c_str(), "LOWER(") && osExpression.back() == ')' ) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is the intention to expand this in future with other functions? Or is only "lower" supported for the index use?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure what is supported. I've just noticed that this was used for a few system tables, e.g a00000001.gdbindexes has a "LOWER(Name)" expression for index TablesByName (a00000001.TablesByName.atx)
eFieldType == FGFT_DATETIME ) | ||
{ | ||
CreateAttributeIndex(poIndex.get()); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Potentially a warning should be raised here? (Might be hittable if an existing gdb created in esri* is modified and contains a previously unsupported index type)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure we need a warning. Esri software seems robust to the absence of an index
Fantastic effort @rouault -- the importance of this cannot be understated 💯 |
@rouault This is a great feature, thank you very much for your efforts! Is it possible to support arm64(because Filegdb does not support arm64)? |
It passes continuous integration tests on arm64-graviton2: https://app.travis-ci.com/github/OSGeo/gdal/jobs/573298621 |
…K [layer_name]' and 'RECOMPUTE EXTENT ON layer_name'
Last two commits look good too 👍 |
@palmerj did you have a chance to test ? |
Some testing but didn't finish. Will be able to do some more this weekend |
in browser This change means that the dataset management functionality which was previously available only to gpkg/spatialite databases through browser is now available for all appropriate OGR supported datasets, including: - showing the "Fields" item which lets users directly add/remove fields from the dataset without having to first open it in a project - exposing the "New Table" action for creating new layers in a format which OGR supports table creation in (e.g. File Geodatabases, after OSGeo/gdal#5910 lands)
in browser This change means that the dataset management functionality which was previously available only to gpkg/spatialite databases through browser is now available for all appropriate OGR supported datasets, including: - showing the "Fields" item which lets users directly add/remove fields from the dataset without having to first open it in a project - exposing the "New Table" action for creating new layers in a format which OGR supports table creation in (e.g. File Geodatabases, after OSGeo/gdal#5910 lands)
Merging. Potential feedback on this to be done through Issues |
"osgeo/gdal:alpine-normal-latest" docker image has been regenerated with fix for #5952, and outdated "rouault/gdal:alpine-normal-openfilegdb_write" has been removed |
in browser This change means that the dataset management functionality which was previously available only to gpkg/spatialite databases through browser is now available for all appropriate OGR supported datasets, including: - showing the "Fields" item which lets users directly add/remove fields from the dataset without having to first open it in a project - exposing the "New Table" action for creating new layers in a format which OGR supports table creation in (e.g. File Geodatabases, after OSGeo/gdal#5910 lands)
in browser This change means that the dataset management functionality which was previously available only to gpkg/spatialite databases through browser is now available for all appropriate OGR supported datasets, including: - showing the "Fields" item which lets users directly add/remove fields from the dataset without having to first open it in a project - exposing the "New Table" action for creating new layers in a format which OGR supports table creation in (e.g. File Geodatabases, after OSGeo/gdal#5910 lands)
Same functional scope as write side of the FileGDB driver:
Interoperability tested with ArcGIS Pro 2.8.3
Funded by Provincie Zuid-Holland, Provincie Gelderland and Gemeente Amsterdam