• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

icsm-au / DynAdjust / 13494567994

24 Feb 2025 09:15AM UTC coverage: 81.168% (+2.0%) from 79.161%
13494567994

push

github

web-flow
Merge pull request #234 from icsm-au/1.2.8

Version 1.2.8 (fixes, ehnacements, improved datum management)

6131 of 8137 new or added lines in 90 files covered. (75.35%)

162 existing lines in 33 files now uncovered.

32214 of 39688 relevant lines covered (81.17%)

11775.25 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

86.11
/dynadjust/include/parameters/dnaellipsoid.cpp
1
//============================================================================
2
// Name         : dnaellipsoid.hpp
3
// Author       : Roger Fraser
4
// Contributors :
5
// Version      : 1.00
6
// Copyright    : Copyright 2017 Geoscience Australia
7
//
8
//                Licensed under the Apache License, Version 2.0 (the "License");
9
//                you may not use this file except in compliance with the License.
10
//                You may obtain a copy of the License at
11
//               
12
//                http ://www.apache.org/licenses/LICENSE-2.0
13
//               
14
//                Unless required by applicable law or agreed to in writing, software
15
//                distributed under the License is distributed on an "AS IS" BASIS,
16
//                WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
//                See the License for the specific language governing permissions and
18
//                limitations under the License.
19
//
20
// Description  : DynAdjust Ellipsoid Library
21
//============================================================================
22

23
#include <include/parameters/dnaellipsoid.hpp>
24
#include <include/parameters/dnaepsg.hpp>
25
#include <include/functions/dnastrmanipfuncs.hpp>
26

27
using namespace dynadjust::epsg;
28

29
namespace dynadjust {
30
namespace datum_parameters {
31

32
CDnaEllipsoid::CDnaEllipsoid(void) 
226,823✔
33
        // default to GRS80
34
        : m_epsgCode(DEFAULT_EPSG_U)
226,823✔
35
{
36
        // default to GRS80
37
        SetEllipsoid(m_epsgCode);
226,823✔
38
        CalculateEllipsoidParams();
226,823✔
39
}
226,823✔
40

41
CDnaEllipsoid::CDnaEllipsoid(const UINT32& epsgCode) 
5✔
42
{
43
        SetEllipsoid(epsgCode);
5✔
44
        CalculateEllipsoidParams();
5✔
45
}
5✔
46

NEW
47
CDnaEllipsoid::CDnaEllipsoid(const std::string& epsgCode) 
×
48
{
49
        UINT32 epsgCode_uint32 = LongFromString<UINT32>(trimstr(epsgCode));
×
50
        SetEllipsoid(epsgCode_uint32);
×
51
        CalculateEllipsoidParams();
×
52
}
×
53

54
CDnaEllipsoid::CDnaEllipsoid(const CDnaEllipsoid& newEllipsoid) 
18✔
55
{
56
        m_dA = newEllipsoid.m_dA;
18✔
57
        m_dInv_f = newEllipsoid.m_dInv_f;
18✔
58
        m_dB = newEllipsoid.m_dB;
18✔
59
        m_dF = newEllipsoid.m_dF;
18✔
60
        m_dEccen1 = newEllipsoid.m_dEccen1;
18✔
61
        m_dEccen2 = newEllipsoid.m_dEccen2;
18✔
62
        m_dEccen1_sqd = newEllipsoid.m_dEccen1_sqd;
18✔
63
        m_dEccen2_sqd = newEllipsoid.m_dEccen2_sqd;
18✔
64

65
        m_epsgCode = newEllipsoid.m_epsgCode;
18✔
66
        m_ellipsoidType = newEllipsoid.m_ellipsoidType;
18✔
67
}
18✔
68

69
// user-defined ellipsoid
70
CDnaEllipsoid::CDnaEllipsoid(const double& a, const double& inv_f)
×
71
{
72
        m_epsgCode = 0;
×
73
        m_ellipsoidType = USER_DEFINED_ELLIPSOID;
×
74
        SetEllipsoidParams(a, inv_f);
×
75
}
×
76

77
CDnaEllipsoid& CDnaEllipsoid::operator=(const CDnaEllipsoid& rhs) 
140,758✔
78
{
79
        if (this == &rhs)        // check for assignment to self!
140,758✔
80
                return *this;
81

82
        m_dA = rhs.m_dA;
140,758✔
83
        m_dB = rhs.m_dB;
140,758✔
84
        m_dInv_f = rhs.m_dInv_f;
140,758✔
85
        m_dF = rhs.m_dF;
140,758✔
86
        m_dEccen1 = rhs.m_dEccen1;
140,758✔
87
        m_dEccen2 = rhs.m_dEccen2;
140,758✔
88
        m_dEccen1_sqd = rhs.m_dEccen1_sqd;
140,758✔
89
        m_dEccen2_sqd = rhs.m_dEccen2_sqd;
140,758✔
90

91
        m_epsgCode = rhs.m_epsgCode;
140,758✔
92
        m_ellipsoidType = rhs.m_ellipsoidType;
140,758✔
93

94
        return *this;
140,758✔
95
}
96

97

98
bool CDnaEllipsoid::operator== (const CDnaEllipsoid& rhs) const
329✔
99
{
100
        return (
329✔
101
                m_dA == rhs.m_dA &&
658✔
102
                m_dInv_f == rhs.m_dInv_f &&
329✔
103
                m_epsgCode == rhs.m_epsgCode &&
658✔
104
                m_ellipsoidType == rhs.m_ellipsoidType
105
                );
329✔
106
}
107

108
void CDnaEllipsoid::SetEllipsoid(const UINT32& epsgCode)
534,321✔
109
{
110
        m_epsgCode = epsgCode;
534,321✔
111
        m_ellipsoidType = EPSG_DEFINED_ELLIPSOID;
534,321✔
112

113
        epsg_spheroid ellipsoid;
534,321✔
114
        spheroidFromEpsgCode<UINT32>(epsgCode, ellipsoid);
534,321✔
115
        SetEllipsoidParams(ellipsoid.semi_major_, ellipsoid.inv_flattening_);
534,321✔
116
}
534,321✔
117

118
void CDnaEllipsoid::SetEllipsoidParams(const double& a, const double& inv_f) 
534,321✔
119
{
120
        m_dA = a;
534,321✔
121
        m_dInv_f = inv_f;
534,321✔
122
        CalculateEllipsoidParams();
534,321✔
123
}
534,321✔
124

125
void CDnaEllipsoid::CalculateEllipsoidParams()
761,149✔
126
{
127
        m_dB = m_dA * (1.0 - (1.0 / m_dInv_f));
761,149✔
128
        double dAsqd = m_dA * m_dA;
761,149✔
129
        double dBsqd = m_dB * m_dB;
761,149✔
130
        m_dEccen1_sqd = (dAsqd - dBsqd) / dAsqd;        // first ecc squared
761,149✔
131
        m_dEccen1 = sqrt(m_dEccen1_sqd);                        // first ecc
761,149✔
132
        m_dEccen2_sqd = (dAsqd - dBsqd) / dBsqd;        // second ecc squared
761,149✔
133
        m_dEccen2 = sqrt(m_dEccen2_sqd);                        // second ecc
761,149✔
134
        m_dF = 1.0 / m_dInv_f;
761,149✔
135
}
761,149✔
136

137
}        // namespace datum_parameters
138
}        // namespace dynadjust
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc