use bland::{Basemap, Figure, GraticuleOpts, Hatch, PaperSize, Projection, Resolution, Stroke};
fn main() {
let fig = Figure::new()
.size(PaperSize::A4Landscape)
.title("Earth — coastlines, borders, tropics")
.projection(Projection::Mercator)
.xlim(-180.0, 180.0)
.ylim(-72.0, 78.0)
.graticule(GraticuleOpts {
lon_step: 30.0,
lat_step: 20.0,
..GraticuleOpts::default()
})
.basemap(Basemap::EarthCoastlines, |b| {
b.resolution(Resolution::Low)
.stroke(Stroke::Solid)
.stroke_width(0.6)
})
.basemap(Basemap::EarthBorders, |b| {
b.resolution(Resolution::Low)
.stroke(Stroke::Dashed)
.stroke_width(0.4)
})
.basemap(Basemap::EarthTropics, |b| b.stroke(Stroke::Dotted));
let _ = Hatch::DotsSparse;
std::fs::create_dir_all("out").expect("create out/");
std::fs::write("out/world_map.svg", fig.to_svg()).expect("write svg");
println!("wrote out/world_map.svg");
}