#svg #polygon #graphics #geo

geo-svg

Convert geo types to SVG strings for visualization

14 releases

0.6.3 Feb 28, 2024
0.6.1 Oct 31, 2023
0.5.0 Apr 6, 2021
0.3.0 May 9, 2020
0.2.2 Jul 8, 2019

#95 in Debugging

Download history 37/week @ 2023-11-20 65/week @ 2023-11-27 69/week @ 2023-12-04 19/week @ 2023-12-11 108/week @ 2023-12-18 8/week @ 2023-12-25 9/week @ 2024-01-01 65/week @ 2024-01-08 44/week @ 2024-01-15 58/week @ 2024-01-22 52/week @ 2024-01-29 127/week @ 2024-02-05 251/week @ 2024-02-12 157/week @ 2024-02-19 325/week @ 2024-02-26 58/week @ 2024-03-04

791 downloads per month
Used in 3 crates

ISC license

39KB
659 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

~3.5MB
~63K SLoC