1use 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}