osmic 0.1.1

Osmic facade crate: re-exports, prelude, DefaultPlugins
Documentation

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.