Skip to content

Latest commit

 

History

History
184 lines (160 loc) · 14.9 KB

README.md

File metadata and controls

184 lines (160 loc) · 14.9 KB

Awesome Geo Rust awesome

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

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

Community

  • Discord - GeoRust Discord channel