Awesome
Awesome Geo Rust
<img src="https://georust.org/logo.png" align="right" width="100">
A curated list of awesome geospatial software, libraries, tools and resources, written in Rust
Rust, a language empowering everyone to build reliable and efficient software.
Contributions welcome. Add links through pull requests or create an issue to start a discussion. Please take a look at the contribution guidelines.
Contents
Geospatial primitives and algorithms
- Geo - Geospatial primitives such as Point & LineString, and algorithms such as distance, convex hull, centroidcalculations.
- GEOS - Bindings for the Geometry Engine - Open Source (GEOS) library.
- Robust - Robust primitives for computational geometry.
- PROJ - Bindings for the PROJ library for coordinate transformation and projections.
- Rust Geodesy - A geodesy library written in Rust.
- geographiclib-rs - A port of geographiclib (geodesic calculations).
- S2 - S2 spherical geometry library in Rust.
- rust-geo-booleanop - Rust implementation of the Martinez-Rueda Polygon Clipping Algorithm.
- intersect2d - Line intersection sweep-line algorithm.
- spatial-join - Perform streaming geospatial-joins on geographic data.
- tile-grid - Library for map tile grid calculations.
- zonebuilder - Build zones for large geographic regions.
- Polylabel-rs - A Rust implementation of the Polylabel algorithm, with FFI.
- cheap-ruler-rs - Collection of very fast approximations to common geodesic measurements.
Spatial index / Partioning
- rstar - R*-tree library for the rust ecosystem.
- kdbush - A Rust port of kdbush, a fast static spatial index for 2D points.
- spade - Delaunay Triangulations for the Rust ecosystem.
- delaunator-rs - A very fast static 2D Delaunay triangulation library for Rust.
- earcutr - Port of MapBox's earcut triangulation code to Rust language.
- boostvoronoi - Segmented Voronoi for Rust.
Handling GIS data formats
- GDAL - Bindings for the Geographic Data Abstraction Library (GDAL) for reading and writing raster and vector GIS files.
- GeoZero - Zero-Copy reading and writing of geospatial data.
- GeoJSON - Work with GeoJSON files.
- GPX - Work with GPS files.
- kml - Rust support for reading and writing KML.
- GeoTIFF - Work with GeoTIFF raster files.
- image-tiff - TIFF decoding and encoding library in pure Rust.
- netCDF - Bindings for Network Common Data Form (netCDF) library. Can read and write HDF5 files.
- hdf5-rust - Thread-safe Rust bindings and high-level wrappers for the HDF5 library API.
- N5 - N5 "Not HDF5" tensor file system format.
- RINEX - RINEX analysis & and processing.
- shapefile-rs - Rust library to read & write shapefiles.
- TileJSON - Work with TileJSON files.
- Transit - Work with GTFS files.
- transit_model - Manage, convert and enrich transit data.
- FastGtfs - GTFS parsing, navigation, time table creation, and real-time network simulation.
- gtfs-structures - Read GTFS files into structs, with smart references.
- WKT - Work with Well-Known Text (WKT) files.
- World file - Work with World-files.
- FlatGeobuf - A performant binary encoding for geographic data based on flatbuffers.
- las-rs - Read and write ASPRS las files.
- stac-rs - Rust implementation of the SpatioTemporal Asset Catalog (STAC) specification.
- pgstac-rs - Rust interface for pgstac.
Raster and image processing
- rasters.rs - Raster processing library and tools written in rust.
- geo-rasterize - A pure-rust 2D rasterizer for geospatial applications.
OSM data handling
- osmpbfreader-rs - Read OpenStreetMap PBF files.
- osmpbf - Library for reading the OpenStreetMap PBF file format.
- osm_boundaries_utils_rs - Read OpenStretMap relations with type=boundary as valid MultiPolygon.
- osm-transit-extractor - Extract OSM public transport data and write to CSV files.
- Pbfextractor - Create graph files out of OSM and SRTM data
- osmflat - OpenStreetMap flatdata format and compiler.
- osmx - Rust port of OSMExpress, a fast database file format for OpenStreetMap.
- osm-lump-ways - Group OSM ways based on topology & shared tags
More crates based on osmpbfreader-rs
3D
- density mesh - Image density/height map to mesh generator.
- startin - A Delaunay triangulator for processing TINs.
- geom3d - Data structures and algorithms for 3D geometric modeling.
Geocoding
- GeoHash - Compute geohash of locations.
- Geocoding - Enrich addresses, cities, countries with geographic coordinates through third-party geocoding web services.
- Mimirsbrunn - Geocoding and reverse-geocoding (with OSM data).
Routing
- Fast Paths - Fast shortest path calculations for Rust.
- osm_ch - OSM-Contraction-Hierarchies.
- routrs - Geograph-based shortest distance calculation for Rust.
Web Services
- t-rex - Vector tile server specialized on publishing MVT tiles from your own data.
- Martin - Blazing fast and lightweight PostGIS vector tiles server.
- Hecate - Fast Geospatial Feature Storage API.
- BBOX services - Composable spatial services.
Map rendering
- osm-renderer - OpenStreetMap raster tile renderer.
Applications
- A/B Street - A traffic simulation game exploring how small changes to roads affect cyclists, transit users, pedestrians, and drivers.
- Geo Engine - Cloud-ready geospatial data processing platform with workflows, raster and vector support and OGC-compliant interfaces.
- rgis - Performant, cross-platform (web, desktop) GIS app written in Rust
- sst - streaming startin.
- WhiteboxTools - Geospatial data analysis platform with more than 465 tools for processing various types of geospatial data.
- Ferrostar - A FOSS navigation SDK built from the ground up for the future.
Watchlist
- Miniproj - Geographic transformations between different coordinate systems defined by the European Petroleum Survey Group.
- coord_transforms - Rust crate for performing coordinate transforms.
- maplibre-rs - Native Maps for Web, Mobile and Desktop.
- RGeometry - Computational Geometry library written in Rust.
- offset-polygon - A Rust crate for offsetting (shrinking/expanding) polygons.
- polygon-offsetting - Offset a polygon (only margin).
- Cavalier Contours - 2D polyline/shape library for offsetting, combining, etc.
- map-engine - A rust library to work with tiled geospatial (raster) data.
- rust_road_router - Rust routing framework and toolkit.
- Sailor - A sailing navigation application.
- OGC API - OGC API building blocks.
- copc-rs - COPC reader.
- zarrs - A rust library for the Zarr V3 storage format for multidimensional arrays and metadata.
- pasture - A Rust library for working with point cloud data.
- h3o - Rust implementation of the H3 geospatial indexing system.
- bevy-potree
- cogbuilder
- vrt-file
- PlanetVectorTile - A map engine enabling you to have the entire map of the OSM planet on your own computer.
- GeoPolars - Geospatial extensions for Polars.
- country-geocoder - Reverse geocode WGS84 coordinates to an ISO country-code.
- Skeleton Tracing - A new algorithm for retrieving topological skeleton as a set of polylines from binary images.
- poly2tri-rs - Calculate CDT (Constrained Delaunay Triangulation) on a polygon.
- PMTiles (for Rust) - Rust implementation of PMTiles
- PMTiles (for Rust) - Low level implementation of the PMTiles format
- s2-pmtiles - Read/Write PMTiles V3.0 as well as S2PMTiles V1.0
- Proj4rs - Rust adaptation of Proj4
- Proj4wkt - Parse WKT to Proj strings
- Louvre - Computational Geometry Library with Rust
- gpkg-rs - A Rust crate for reading and writing GeoPackages.
- georaster - Rust library for accessing geospatial raster images (GeoTIFF).
- sif-rtree and sif-kdtree - R and K-D trees which can be memory-mapped directly from disk.
- geo-index - Packed, static, zero-copy spatial indexes (R-tree and k-d tree).
- jord - Geographical Position Calculations (spherical + ellipsoidal models and local frames).
- tzf-rs - Get timezone via longitude&latitude in Rust in a fast way
- geometry-rs - Partial port of tidwall/geometry (efficient 2D geometry library for Go).
- pasture - Rust library for point cloud processing.
- rout3serv - H3-grid based Routing server with GRPC-API and dataframe integration.
- Airmail - Lightweight geocoder in pure Rust.
- geoserde - Adapter between geographic feature and GIS files.
- geojson-vt-rs - Crate for slicing GeoJSON into vector tiles on the fly.
- The Roaring Landmask - A fast and memory-limited landmask based on GSHHG for determing whether a point on Earth is on land or in the ocean.
- Galileo - General purpose cross-platform geo-rendering library.
- Gauzilla - 3D Gaussian Splatting renderer for WebAssembly with lock-free multithreading.
- utiles - utils & tiles w/ (rs & pyo3).
- earclip - Triangle mesh designed to be fast, efficient, and sphere capable.
- iOverlay - Boolean Operations for 2D Polygons: Supports intersection, union, difference, xor, and self-intersections for all polygon varieties.
Resources
crates.io
- Category Science::Geospatial
Community
- Discord - GeoRust Discord channel