one_tile/
one_tile.rs

1// one_tile.rs
2//
3// Copyright (c) 2019-2024  Minnesota Department of Transportation
4//
5use earthwyrm::{TileId, Wyrm, WyrmCfg};
6use std::env;
7use std::fs::File;
8
9const MUON: &str = &r#"
10bind_address:
11tile_extent: 256
12layer_group: tile
13  osm: true
14  layer: city
15    geom_type: polygon
16    zoom: 1+
17    tags: ?name ?population boundary=administrative admin_level=8
18"#;
19
20fn write_tile(
21    x: u32,
22    y: u32,
23    z: u32,
24) -> Result<(), Box<dyn std::error::Error>> {
25    let wyrm_cfg: WyrmCfg = muon_rs::from_str(MUON)?;
26    let wyrm = Wyrm::try_from(&wyrm_cfg)?;
27    let mut file = File::create("./one_tile.mvt")?;
28    let tid = TileId::new(x, y, z)?;
29    wyrm.fetch_tile(&mut file, "tile", tid)?;
30    Ok(())
31}
32
33fn main() -> Result<(), Box<dyn std::error::Error>> {
34    let mut args = env::args();
35    args.next().unwrap();
36    let x = args.next().expect("missing x").parse()?;
37    let y = args.next().expect("missing y").parse()?;
38    let z = args.next().expect("missing z").parse()?;
39    write_tile(x, y, z)?;
40    Ok(())
41}