1 // This is core/vpgl/xio/vpgl_xio_lvcs.cxx
2 #include "vpgl_xio_lvcs.h"
3 #include "vpgl/vpgl_lvcs.h"
4 #include "vsl/vsl_basic_xml_element.h"
5
6 #include <utility>
7
8 //=================================================================================
9 void
x_write(std::ostream & os,vpgl_lvcs const & v,std::string element_name)10 x_write(std::ostream & os, vpgl_lvcs const & v, std::string element_name)
11 {
12 vsl_basic_xml_element xml_element(std::move(element_name));
13 xml_element.add_attribute("cs_name", v.cs_name_strings[v.get_cs_name()]);
14
15 double lat, lon, elev;
16 v.get_origin(lat, lon, elev);
17 xml_element.add_attribute("origin_lon", lon);
18 xml_element.add_attribute("origin_lat", lat);
19 xml_element.add_attribute("origin_elev", elev);
20
21 double lat_scale, lon_scale;
22 v.get_scale(lat_scale, lon_scale);
23 xml_element.add_attribute("lon_scale", lon_scale);
24 xml_element.add_attribute("lat_scale", lat_scale);
25
26 std::string len_u = "meters", ang_u = "degrees";
27 if (v.local_length_unit() == v.FEET)
28 len_u = "feet";
29 if (v.geo_angle_unit() == v.RADIANS)
30 ang_u = "radians";
31 xml_element.add_attribute("local_XYZ_unit", len_u);
32 xml_element.add_attribute("geo_angle_unit", ang_u);
33
34 double lox, loy, theta;
35 v.get_transform(lox, loy, theta);
36 xml_element.add_attribute("local_origin_x", lox);
37 xml_element.add_attribute("local_origin_y", loy);
38 xml_element.add_attribute("theta", theta);
39 xml_element.x_write(os);
40 }
41