#geo #polygon #svg #visualization

geo-svg

Convert geo types to SVG strings for visualization

10 unstable releases (4 breaking)

0.5.0 Apr 6, 2021
0.4.0 Apr 6, 2021
0.3.0 May 9, 2020
0.2.3 Aug 19, 2019
0.1.2 Jun 25, 2019

#198 in Debugging

Download history 106/week @ 2022-06-02 19/week @ 2022-06-09 24/week @ 2022-06-16 26/week @ 2022-06-23 31/week @ 2022-06-30 39/week @ 2022-07-07 46/week @ 2022-07-14 60/week @ 2022-07-21 68/week @ 2022-07-28 35/week @ 2022-08-04 34/week @ 2022-08-11 68/week @ 2022-08-18 40/week @ 2022-08-25 20/week @ 2022-09-01 47/week @ 2022-09-08 17/week @ 2022-09-15

139 downloads per month
Used in 2 crates

ISC license

36KB
565 lines

geo-svg

This crate is a lib to generate SVG strings from geo-types.

crate.io docs.rs

Below is an example of a geometry collection rendered to SVG.

example

Features

  • GeometryCollection and all variants of Geometry are supported
  • the viewport size is automatically computed to contain all shapes
  • style and formatting options are available

Example

The following will show how to convert a line to a SVG string. The to_svg method is provided by the ToSvg trait which is implemented for all geo-types.

use geo_types::{Coordinate, Line, Point};
use geo_svg::{Color, ToSvg};
let point = Point::new(10.0, 28.1);
let line = Line::new(
    Coordinate { x: 114.19, y: 22.26 },
    Coordinate { x: 15.93, y: -15.76 },
);

let svg = point
    .to_svg()
    .with_radius(2.0)
    .and(line.to_svg().with_stroke_width(2.5))
    .with_fill_color(Color::Named("red"))
    .with_stroke_color(Color::Rgb(200, 0, 100))
    .with_fill_opacity(0.7);

println!("{}", svg);

Result

<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid meet" viewBox="7 -18.26 109.69 49.36"><circle cx="10" cy="28.1" r="2" fill="red" fill-opacity="0.7" stroke="rgb(200,0,100)"/><path d="M 114.19 22.26 L 15.93 -15.76" fill="red" fill-opacity="0.7" stroke="rgb(200,0,100)" stroke-width="2.5"/></svg>

Dependencies

~320KB