simple_example/
simple_example.rs1use geo_types::{Coord, LineString, Point, Polygon};
2use omap::{
3 objects::{AreaObject, LineObject, PointObject, TagTrait, TextObject},
4 symbols::{AreaSymbol, LineSymbol, PointSymbol, TextSymbol},
5 Omap, Scale,
6};
7use std::{path::PathBuf, str::FromStr};
8
9fn main() {
10 let map_center = Coord {
11 x: 323_877.,
12 y: 6_399_005.,
13 };
14 let map_center_elevation_meters = 100.;
15 let crs_epsg_code = 3006;
16
17 let mut omap = Omap::new(
18 map_center,
19 Scale::S15_000,
20 Some(crs_epsg_code),
21 Some(map_center_elevation_meters),
22 )
23 .expect("Could not make map with the given CRS-code");
24
25 let polygon = Polygon::new(
27 LineString::new(vec![
28 Coord { x: -50., y: -50. },
29 Coord { x: -50., y: 50. },
30 Coord { x: 50., y: 50. },
31 Coord { x: 50., y: -50. },
32 Coord { x: -50., y: -50. },
33 ]),
34 vec![],
35 );
36 let mut area_object =
37 AreaObject::from_polygon(polygon, AreaSymbol::RoughVineyard, 45.0_f64.to_radians());
38 area_object.add_tag("tag_key", "tag_value");
39
40 let line_string = LineString::new(vec![
41 Coord { x: -60., y: 20. },
42 Coord { x: -20., y: 25. },
43 Coord { x: 0., y: 27.5 },
44 Coord { x: 20., y: 26. },
45 Coord { x: 40., y: 22.5 },
46 Coord { x: 60., y: 20. },
47 Coord { x: 60., y: -20. },
48 Coord { x: -60., y: -20. },
49 ]);
50 let mut line_object = LineObject::from_line_string(line_string, LineSymbol::Contour);
51 line_object.add_elevation_tag(20.);
52
53 let point = Point::new(0.0_f64, 0.0_f64);
54 let point_object = PointObject::from_point(
55 point,
56 PointSymbol::ElongatedDotKnoll,
57 -45.0_f64.to_radians(),
58 );
59
60 let text_point = Point::new(0.0_f64, -30.0_f64);
61 let text = "some text".to_string();
62 let text_object = TextObject::from_point(text_point, TextSymbol::SpotHeight, text);
63
64 omap.add_object(area_object);
65 omap.add_object(line_object);
66 omap.add_object(point_object);
67 omap.add_object(text_object);
68
69 let max_bezier_deviation_meters = 2.5;
70
71 let bez_error = omap::BezierError::new(Some(max_bezier_deviation_meters), None);
72
73 omap.write_to_file(
74 PathBuf::from_str("./simple_example.omap").unwrap(),
75 bez_error,
76 )
77 .expect("Could not write to file");
78}