Skip to content

Epistates/osmic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

osmic

Crates.io docs.rs License: MIT MSRV 1.94

A Rust workspace for working with OpenStreetMap data end-to-end: parsing PBF, building spatial indexes, generating vector tiles, styling, rendering, and serving.

Status: early — 0.1.1, APIs will change.

See CHANGELOG.md for release notes.

Installation

Use the umbrella crate for the full SDK:

[dependencies]
osmic = "0.1.1"

Or pull in individual crates as needed:

[dependencies]
osmic-core = "0.1.1"
osmic-osm = "0.1.1"
osmic-tiles = "0.1.1"

Workspace layout

Crate Description
osmic Umbrella: re-exports, prelude, default plugin groups
osmic-core Shared types, errors, coordinate primitives
osmic-osm OSM data model, PBF parsing, tag system, classification
osmic-geo Projection, simplification, clipping, validation
osmic-index Node location store (mmap) and spatial R-tree index
osmic-style MapLibre-compatible style system
osmic-tiles MVT/MLT encoding, PMTiles archives, tile math
osmic-render Backend abstraction, scene graph, tessellation
osmic-text Text shaping, label collision, glyph atlas
osmic-app Plugin system, App builder, event bus, lifecycle
osmic-serve HTTP tile server with Tower middleware pipeline
osmic-extract Business entity extraction from OSM PBF
osmic-accel GPU-accelerated geometry processing (Apple Silicon Metal)
osmic-repl OSM replication and incremental tile updates
osmic-cli CLI for tile generation, PBF inspection, render-to-image
osmic-viewer Interactive wgpu windowed map viewer

Quickstart

use osmic::prelude::*;

fn main() -> OsmicResult<()> {
    let mut app = App::new();
    app.add_plugins(osmic::HeadlessPlugins);
    app.build();

    Ok(())
}

See examples/ for full runnable programs:

  • load-pbf — parse a PBF file and print feature/index statistics
  • render-static — render a static PNG from a PMTiles archive
  • tile-server — serve vector tiles from a PMTiles archive
  • custom-plugin — define and register a plugin

Example commands:

cargo run -p custom-plugin
cargo run -p load-pbf -- path/to/extract.osm.pbf
cargo run -p render-static -- path/to/archive.pmtiles out.png --bbox -122.52,37.70,-122.35,37.82
cargo run -p tile-server -- path/to/archive.pmtiles --bind 127.0.0.1:3000

Building

cargo build --workspace
cargo test --workspace
cargo clippy --workspace --all-targets

Minimum supported Rust version: 1.94.

osmic-osm disables native PBF parsing by default at the workspace dependency level so crates that only need the OSM data model do not pull in osmpbf and rayon. Binaries and examples that read .osm.pbf files enable the osmic-osm/native feature explicitly.

License

MIT — see LICENSE.

About

Rust toolkit for OpenStreetMap PBF parsing, spatial indexing, vector tile generation, rendering, and serving.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages