33 #include <GeographicLib/UTMUPS.hpp>
50 time_t ts =
static_cast<time_t
>(unixSecond);
53 timeinfo = gmtime(&ts);
58 timeinfo->tm_hour = 0;
59 timeinfo->tm_mday = 1;
62 return timegm(timeinfo);
109 inline gm::PointStamped
getUTMPosition(
const Position3D& reference_position,
int& zone,
bool& northp) {
110 gm::PointStamped utm_point;
111 double latitude =
getLatitude(reference_position.lat);
112 double longitude =
getLongitude(reference_position.lon);
113 if(reference_position.elevation_is_present) utm_point.point.z =
getElevation(reference_position.elevation);
115 GeographicLib::UTMUPS::Forward(latitude, longitude, zone, northp, utm_point.point.x, utm_point.point.y);
116 std::string hemisphere;
117 if(northp) hemisphere=
"N";
119 utm_point.header.frame_id=
"utm_"+std::to_string(zone)+hemisphere;
120 }
catch (GeographicLib::GeographicErr& e) {
121 throw std::invalid_argument(e.what());
139 gm::PointStamped utm_point;
140 double latitude =
getLatitude(reference_position.lat);
141 double longitude =
getLongitude(reference_position.lon);
142 if(reference_position.elevation_is_present) utm_point.point.z =
getElevation(reference_position.elevation);
145 GeographicLib::UTMUPS::Forward(latitude, longitude, zone, northp, utm_point.point.x, utm_point.point.y, conv_angle, scale);
146 std::string hemisphere;
147 if(northp) hemisphere=
"N";
149 utm_point.header.frame_id=
"utm_"+std::to_string(zone)+hemisphere;
150 }
catch (GeographicLib::GeographicErr& e) {
151 throw std::invalid_argument(e.what());