geobuf

Crates.iogeobuf
lib.rsgeobuf
version0.1.4
sourcesrc
created_at2020-06-10 03:55:59.928644
updated_at2022-07-21 12:49:05.840579
descriptionGeobuf encoder and decoder
homepage
repositoryhttps://github.com/ka7eh/rust-geobuf
max_upload_size
id252219
size101,116
Kaveh Karimi-Asli (ka7eh)

documentation

README

rust-geobuf

Crates.io Build Status Coverage Status

Tested with rust 1.60

A port of geobuf encoder and decoder into Rust and WebAssembly

Usage

This crate provides a command line binary, a rust library, and a WebAssembly package. The binary and library are in geobuf and the Rust/WebAssembly code is in geobuf-wasm.

Binary:

geobuf [encode|decode] -i <path-to-input-file> -o <path-to-output-file>

Use geobuf [encode|decode] --help for more info.

Library

use geobuf::{decode, encode};
use serde_json;

fn main() {
    let original_geojson = serde_json::from_str(r#"{"type": "Point", "coordinates": [100.0, 0.0]}"#).unwrap();
    let geobuf = encode::Encoder::encode(&original_geojson, 6, 2).unwrap();
    let geojson = decode::Decoder::decode(&geobuf).unwrap();
    assert_eq!(original_geojson, geojson);
}

WebAssembly

The www folder contains a sample project showing how the wasm code can be used.

To run the example locally, clone the repo and run the following:

  • wasm-pack build -- --no-default-features --features wasm
  • cd www && npm i && npm start

Note: The wasm code is currently slower that the node version and requires some refactoring to improve how data is being passed between the JS and Rust code.

Commit count: 9

cargo fmt