#svg #polygon #graphics #image #geo

dev geo-svg

Convert geo types to SVG strings for visualization

17 releases

0.7.3 Mar 2, 2025
0.7.0 Nov 27, 2024
0.6.3 Feb 28, 2024
0.6.1 Oct 31, 2023
0.2.2 Jul 8, 2019

#96 in Debugging

Download history 8/week @ 2024-11-17 177/week @ 2024-11-24 53/week @ 2024-12-01 38/week @ 2024-12-08 18/week @ 2024-12-15 1/week @ 2024-12-22 3/week @ 2024-12-29 28/week @ 2025-01-05 36/week @ 2025-01-12 116/week @ 2025-01-19 104/week @ 2025-01-26 52/week @ 2025-02-02 77/week @ 2025-02-09 52/week @ 2025-02-16 20/week @ 2025-02-23 193/week @ 2025-03-02

357 downloads per month
Used in 4 crates

ISC license

44KB
853 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
  • the image size can be set in absolute units such as cm or px.

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

~5MB
~98K SLoC