A performant binary encoding for geographic data based on flatbuffers, designed for fast streaming and spatial filtering.
FlatGeobuf is a binary file format for encoding geographic vector data, built on the FlatBuffers serialization library. It is designed to be significantly faster than legacy formats like Shapefiles and GeoPackage, especially for large volumes of static data, while supporting efficient streaming and random access. The format can optionally include a spatial index for fast bounding box queries.
GIS developers and data engineers working with large, static geographic datasets who need high-performance read/write operations, streaming capabilities, or efficient spatial filtering. It is also suitable for developers integrating with major GIS tools like GDAL, QGIS, GeoServer, PostGIS, and MapServer.
Developers choose FlatGeobuf for its superior performance in read/write speeds and smaller file sizes compared to traditional GIS formats, its support for efficient streaming and random access without requiring random writes, and its optional spatial index that enables rapid spatial filtering while maintaining simplicity.
A performant binary encoding for geographic data based on flatbuffers
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Benchmarks in the README show read speeds up to 2x faster than Shapefiles and write speeds 2.5x faster, with smaller file sizes for large datasets.
Supports sequential reading and direct access via HTTP range requests, enabling web streaming without loading entire files, as demonstrated in the Observable notebook example.
Includes a packed Hilbert R-Tree for rapid bounding box queries, but can be omitted for streaming or appending, balancing performance with flexibility.
Natively supported by major GIS applications like GDAL, QGIS, and GeoServer, making it easy to adopt within existing workflows.
The format deliberately excludes random write capabilities, making it unsuitable for dynamic datasets that require frequent edits or updates.
Spatial index only facilitates bounding box filters; more complex spatial operations like nearest neighbor searches require additional external processing.
Default safety checks in tools like GDAL can hinder speed; users must manually set options like VERIFY_BUFFERS=NO for best results, as noted in the FAQ.