The Plugin
Nearly a year ago, in November 2023, in this article, we introduced the QDuckDB plugin, funded by IFREMER and developed by Oslandia. In that previous article, we presented DuckDB and the functional features of the plugin.
Since then, in addition to the funding from IFREMER, Oslandia has self-invested maintenance time to fix user-reported bugs and stabilize the performance of the data provider embedded in the plugin.
As a reminder, a QGIS provider is an interface or software layer that allows it to access various geospatial data sources. In other words, it is a component that manages the connection between QGIS and geospatial data in different formats.
Use Cases
- Retrieve Overture Maps data directly into a DuckDB database, then load it into QGIS via the plugin to visualize or perform spatial analysis. This provides a real use case for the plugin as Overture Maps data cannot be retrieved in more common GIS formats (such as shapefile or geojson).
- Load INSEE data and cross it with BD TOPO loaded in gpkg. INSEE provides data in parquet format, and with the spatial extension, DuckDB can of course load gpkg files.
- This plugin can be used both in QGIS desktop and with QGIS Server. For instance, IFREMER uses this plugin to publish data stored in a DuckDB database on the web. These can be displayed as images (WMS streams) or geometric data (WFS streams). This solution is easy to set up (no need for a database service, as the data is stored in a file), while benefiting from DuckDB’s speed.
What’s New with Duck?
Over the past year, the two main development focuses have been performance and stability.
By performance, we mean increasing the speed of entity loading in QGIS. For example, we had issues with latency or even crashes when a table from DuckDB contained many entities.
The initial provider had been implemented with the bare minimum to function. Since then, we have added all the necessary components in QGIS to make it more performant.
Finally, the second development focus has been stability. This work was made possible by users who reported bugs, which we fixed. We also strengthened unit testing. Some of the improvements include support for non-geographic tables, support for views, and handling of DATE and TIME column types.
If you want more details on these two points, you can check the project changelog.
We also integrate each new version of DuckDB into the plugin shortly after it is released, as with the release of DuckDB 1.1.0.
Release 1.0.0
After improving performance and stability, we have reached an important milestone for the provider. We have implemented all the components that QGIS offers for building a custom third-party provider.
This article officially announces the release of version 1.0.0 of the QDuckDB plugin and the removal of the experimental
flag.
What’s Next
But the work is not finished yet. As a reminder, the plugin currently only supports read-only mode. The next step would be to develop write mode.
We also want to improve the plugin’s integration into QGIS, for example by adding a new DuckDB entry in QGIS’s native data source explorer.
For all these new features to develop, we are looking for funding. You can find a non-exhaustive list of upcoming developments by looking at the tickets tagged To be funded
in the Gitlab project. It’s also possible to open new tickets for features we might not have considered.
If you are interested, you can comment on the tickets, contact us on LinkedIn, or email us at qgis@oslandia.com. Any contribution is welcome: code, documentation, funding…
Important Links
- Source Code (under GPL2+ license)
- Documentation
- Plugin on the official QGIS repository