Skip to content

Proposal for a H2GIS Spatial Database Driver (via GraalVM native image) #13799

@pierromond

Description

@pierromond

Feature description

Hi,

I am a developer and maintainer of NoiseModelling, an open-source tool for noise mapping that relies on H2GIS (a spatial extension of the H2 Database Engine) -> https://h2gis.org/

Currently, there is no direct way to open H2GIS databases in GDAL/QGIS without exporting data. I have developed a working prototype of a native GDAL/OGR driver for H2GIS, and I would like to submit it for review and potential integration.

I developed this driver with (very) significant assistance from AI tools to bridge the gap between my Java knowledge and the specificities of the GDAL C++ API. While the driver is functional and passes my local tests (loading layers in QGIS, running queries), I am aware that the C++ code quality, memory management, and adherence to GDAL style guidelines might need significant improvement ! I'm sorry, but since this plugin is very useful in my work, I decided to go ahead with it.

Code Repository
You can find the source code here:
[https://github.com/pierromond/H2GIS_gdalplugin](https://github.com/pierromond/H2GIS_gdalplugin)

What works:
Reading/Writing Vector layers.
Spatial filtering.

I am looking for:
Feedback on whether this "GraalVM bridge" architecture is acceptable for the GDAL ecosystem.
Help or guidance to clean up the C++ implementation to meet project standards.
Eventually, integration into the codebase if deemed valuable.

Thank you for your time and for this amazing library :)

Looking forward to your feedback!

Additional context

The Implementation Approach
Since H2GIS is pure Java and GDAL is C++, I used the new GraalVM Native Image to compile the H2GIS library into a shared library -> https://github.com/orbisgis/h2gis . The GDAL driver (C++) acts as a wrapper that talks to this native library via C-API entry points.

This architecture allows
Direct read/write access to H2GIS .mv.db files.
No JVM startup lag (thanks to native compilation).

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions