NAVTOR SDK  v.3.0
Software Development Kit for fast and efficient development of ECDIS, ECS and generic marine applications
crs_horizontal_coordinate_system.h
Go to the documentation of this file.
1 #ifndef SDK_CRS_HORIZONTAL_COORDINATE_SYSTEM_INTERFACE_H_
12 #define SDK_CRS_HORIZONTAL_COORDINATE_SYSTEM_INTERFACE_H_
13 #pragma once
14 
15 #include <base/inc/platform.h>
16 #include <base/inc/base_types.h>
19 #include <base/inc/sdk_ref_ptr.h>
20 #include <base/inc/sdk_results.h>
23 
24 namespace sdk {
25 namespace crs { // coordinate systems
26 
27 // Classes declared in other files;
28 class IEllipsoid;
29 
30 // Classes declared in this file.
31 FWD_DECL_INTERFACE(IHorizontalCoordinateSystem);
32 
33 struct HorizontalDatumName {
34  SDKUInt16 m_code;
35  const char* m_alias;
36  const char* m_name;
37 };
38 
41 typedef enum HorizontalDatum {
72 #if 0
73  kHorDat_NAD27,
74  kHorDat_NAD83,
75  kHorDat_PD83,
76  kHorDat_OSGB_1970,
77  kHorDat_DGN95,
78  kHorDat_CGCS_2000,
79  kHorDat_NTF,
80 #endif
81  kHorDat_MAX
83 
84 static const SDKUInt16 kHorDat_LocalCartesian = -1;
85 static const HorizontalDatumName kHorDatName_LocalCartesian = {
86  kHorDat_LocalCartesian, "Local Cartesian", "Local Cartesian" };
87 
88 static const HorizontalDatumName kHorizontalDatumNames[] = {
89  { kHorDat_Unknown ,"Unknown", "Unknown" },
90  { kHorDat_WGS72, "WGS72", "WGS72" },
91  { kHorDat_WGS84, "WGS84", "WGS84" },
92  { kHorDat_Pulkovo_1942, "Pulkovo 1942", "Pulkovo 1942" },
93  { kHorDat_Pulkovo_1995, "Pulkovo 1995", "Pulkovo 1995" },
94  { kHorDat_European1950, "ED50", "European Datum 1950" },
95  { kHorDat_European1987, "ED87", "European Datum 1987" },
96  { kHorDat_Tokyo, "Tokyo 1918", "Tokyo 1918" },
97  { kHorDat_SAD69, "SAD69", "South American Datum 1969" },
98  { kHorDat_Rome, "Rome 1940", "Monte Mario (Rome)" },
99  { kHorDat_Padang, "Padang", "Padang (Jakarta)" },
100  { kHorDat_OSGB_1936, "OSGB 1936", "Ordnance Survey of Great Britain 1936" },
101  { kHorDat_ID74, "ID74", "Indonesian Datum 1974" },
102  { kHorDat_Indian_1954, "Indian 1954", "Indian 1954" },
103  { kHorDat_Indian_1960, "Indian 1960", "Indian 1960" },
104  { kHorDat_Indian_1975, "Indian 1975", "Indian 1975" },
105  { kHorDat_NewBeijing, "New Beijing", "New Beijing" },
106  { kHorDat_RRAF_1991, "RRAF 1991", "Reseau de Reference des Antilles Francaises 1991" },
107  { kHorDat_HK80, "HK80", "Hong Kong 1980" },
108  { kHorDat_PSAD56, "PSAD56", "Provisional South American Datum 1956" },
109  { kHorDat_ETRS89, "ETRS89", "European Terrestrial Reference System 1989" },
110  { kHorDat_NZGD49, "NZGD49", "New Zealand Geodetic Datum 1949" },
111  { kHorDat_NGO_1948, "NGO 1948", "NGO 1948" },
112  { kHorDat_Datum_73, "Datum 73", "Datum 73" },
113  { kHorDat_Belge_1972, "Belge 1972", "Reseau National Belge 1972" },
114  { kHorDat_DHDN, "DHDN", "Deutsches Hauptdreiecksnetz" },
115  { kHorDat_NGN, "NGN", "National Geodetic Network" },
116  { kHorDat_RGNA_1993, "RGNA 1993", "Mexican Datum of 1993" },
117  { kHorDat_Xian_1980, "Xian 1980", "Xian 1980" },
118  { kHorDat_JGD2000, "JGD2000", "Japanese Geodetic Datum 2000" },
119 #if 0
120  { kHorDat_NAD27, "NAD27", "North American Datum 1927"},
121  { kHorDat_NAD83, "NAD83", "North American Datum 1983" },
122  { kHorDat_PD83, "PD/83", "Potsdam Datum" },
123  { kHorDat_DGN95, "DGN95", "Datum Geodesi Nasional 1995" },
124  { kHorDat_CGCS_2000, "China 2000", "China Geodetic Coordinate System 2000" },
125  { kHorDat_OSGB_1970, "OSGB 1970", "Ordnance Survey of Great Britain 1970" },
126  { kHorDat_NTF, "NTF (Paris)", "Nouvelle Triangulation Francaise (Paris)" },
127 #endif
128 };
129 
130 inline bool IsLocalCartesian(SDKUInt16 hordat) {
131  return (hordat == static_cast<SDK_CRS_NAMESPACE::HorizontalDatum>(
132  SDK_CRS_NAMESPACE::kHorDat_LocalCartesian));
133 }
134 
138 public:
141  virtual HorizontalDatum SDK_CALLTYPE GetDatum() const throw() = 0;
144  virtual SDKResult SDK_CALLTYPE SetDatum(HorizontalDatum datum) throw() = 0;
145 
147  virtual SDKResult SDK_CALLTYPE GetEllipsoid(
148  IEllipsoid** ellipsoid) const throw() = 0;
150  virtual SDKResult SDK_CALLTYPE SetEllipsoid(IEllipsoid* ellipsoid) throw() = 0;
151 
152  SDK_IMPLEMENT_IID(IHorizontalCoordinateSystem)
153  SDK_END_INTERFACE(IHorizontalCoordinateSystem)
154 };
155 SDK_DECLARE_IID(IHorizontalCoordinateSystem)
156 
157 } // namespace crs
158 } // namespace sdk
159 
160 #endif // SDK_CRS_HORIZONTAL_COORDINATE_SYSTEM_INTERFACE_H_
sdk::crs::IEllipsoid
Provides access to members that control the properties of the ellipsoids.
Definition: crs_ellipsoid.h:30
sdk::crs::kHorDat_NGO_1948
@ kHorDat_NGO_1948
22 : NGO 1948
Definition: crs_horizontal_coordinate_system.h:64
sdk::crs::kHorDat_ETRS89
@ kHorDat_ETRS89
20 : European Terrestrial Reference System 1989
Definition: crs_horizontal_coordinate_system.h:62
sdk::crs::kHorDat_ID74
@ kHorDat_ID74
12 : ID74
Definition: crs_horizontal_coordinate_system.h:54
sdk::crs::kHorDat_Indian_1960
@ kHorDat_Indian_1960
14 : Indian 1960
Definition: crs_horizontal_coordinate_system.h:56
sdk::crs::kHorDat_JGD2000
@ kHorDat_JGD2000
29 : Japanese Geodetic Datum 2000
Definition: crs_horizontal_coordinate_system.h:71
sdk::crs::kHorDat_Indian_1954
@ kHorDat_Indian_1954
13 : Indian 1954
Definition: crs_horizontal_coordinate_system.h:55
sdk::crs::IHorizontalCoordinateSystem::SetEllipsoid
virtual SDKResult SDK_CALLTYPE SetEllipsoid(IEllipsoid *ellipsoid)=0
Sets the ellipsoid of the datum of the horizontal crs.
sdk_results.h
A list of SDK error/return results.
sdk::crs::kHorDat_Pulkovo_1942
@ kHorDat_Pulkovo_1942
3 : Pulkovo 1942
Definition: crs_horizontal_coordinate_system.h:45
base_types.h
SDK base types.
sdk::crs::kHorDat_RRAF_1991
@ kHorDat_RRAF_1991
17 : Reseau de Reference des Antilles Francaises 1991
Definition: crs_horizontal_coordinate_system.h:59
sdk::crs::kHorDat_NewBeijing
@ kHorDat_NewBeijing
16 : New Beijing
Definition: crs_horizontal_coordinate_system.h:58
sdk_ref_ptr.h
Interfaces wrapper with reference count control.
sdk::crs::kHorDat_DHDN
@ kHorDat_DHDN
25 : Deutsches Hauptdreiecksnetz
Definition: crs_horizontal_coordinate_system.h:67
sdk::crs::kHorDat_LocalCartesian
static const SDKUInt16 kHorDat_LocalCartesian
-1 : Local Cartesian
Definition: crs_horizontal_coordinate_system.h:84
sdk::crs::kHorDat_WGS84
@ kHorDat_WGS84
2 : WGS 84
Definition: crs_horizontal_coordinate_system.h:44
crs_coordinate_system.h
Base interface for coordinate system. Describes very common parameters.
sdk::crs::kHorDat_Rome
@ kHorDat_Rome
9 : Monte Mario (Rome)
Definition: crs_horizontal_coordinate_system.h:51
sdk::crs::IHorizontalCoordinateSystem::GetEllipsoid
virtual SDKResult SDK_CALLTYPE GetEllipsoid(IEllipsoid **ellipsoid) const =0
Gets the ellipsoid of the datum of the horizontal crs.
sdk::crs::HorizontalDatum
HorizontalDatum
The horizontal datums.
Definition: crs_horizontal_coordinate_system.h:41
sdk::crs::kHorDat_Tokyo
@ kHorDat_Tokyo
7 : Tokyo, replaces Tokyo 1892
Definition: crs_horizontal_coordinate_system.h:49
sdk::crs::kHorDat_PSAD56
@ kHorDat_PSAD56
19 : Provisional South American Datum 1956
Definition: crs_horizontal_coordinate_system.h:61
sdk_string_handler.h
Wrappers and helper functions for SDKString.
SDKResult
SDKInt32 SDKResult
Type of all error or return codes which SDK functions can end with.
Definition: sdk_results.h:17
sdk_component_interface.h
Common base SDK interfaces.
sdk::crs::IHorizontalCoordinateSystem::SetDatum
virtual SDKResult SDK_CALLTYPE SetDatum(HorizontalDatum datum)=0
Sets the horizontal datum type for the horizontal coordinate system.
sdk::crs::kHorDat_European1987
@ kHorDat_European1987
6 : European 1987
Definition: crs_horizontal_coordinate_system.h:48
sdk::crs::kHorDat_WGS72
@ kHorDat_WGS72
1 : WGS 72
Definition: crs_horizontal_coordinate_system.h:43
platform.h
Describes the platform constants.
sdk::crs::kHorDat_Indian_1975
@ kHorDat_Indian_1975
15 : Indian 1975
Definition: crs_horizontal_coordinate_system.h:57
sdk::crs::kHorDat_HK80
@ kHorDat_HK80
18 : Hong Kong 1980
Definition: crs_horizontal_coordinate_system.h:60
sdk::crs::kHorDat_OSGB_1936
@ kHorDat_OSGB_1936
11 : OSGB 1936
Definition: crs_horizontal_coordinate_system.h:53
sdk::crs::kHorDat_Padang
@ kHorDat_Padang
10 : Padang (Jakarta)
Definition: crs_horizontal_coordinate_system.h:52
crs_const.h
Defines constants for the coordinate systems.
sdk::crs::ICoordinateSystem
Base interface for coordinate systems.
Definition: crs_coordinate_system.h:30
sdk::crs::kHorDat_Xian_1980
@ kHorDat_Xian_1980
28 : Xian 1980
Definition: crs_horizontal_coordinate_system.h:70
sdk::crs::IHorizontalCoordinateSystem
Describes member that manage the horizontal coordinate system
Definition: crs_horizontal_coordinate_system.h:137
sdk::crs::kHorDat_Pulkovo_1995
@ kHorDat_Pulkovo_1995
4 : Pulkovo 1995
Definition: crs_horizontal_coordinate_system.h:46
sdk::crs::IHorizontalCoordinateSystem::GetDatum
virtual HorizontalDatum SDK_CALLTYPE GetDatum() const =0
Gets the horizontal datum type for the horizontal coordinate system.
sdk::crs::kHorDat_Unknown
@ kHorDat_Unknown
0 : Unknown
Definition: crs_horizontal_coordinate_system.h:42
sdk::crs::kHorDat_RGNA_1993
@ kHorDat_RGNA_1993
27 : Mexican Datum of 1993
Definition: crs_horizontal_coordinate_system.h:69
sdk::crs::kHorDat_NGN
@ kHorDat_NGN
26 : National Geodetic Network (Kuwait)
Definition: crs_horizontal_coordinate_system.h:68
FWD_DECL_INTERFACE
FWD_DECL_INTERFACE(ILWEParserWrapper)
Provides a wrapper around the message parser to get, add or remove the.
sdk::crs::kHorDat_European1950
@ kHorDat_European1950
5 : European 1950
Definition: crs_horizontal_coordinate_system.h:47
sdk::crs::kHorDat_NZGD49
@ kHorDat_NZGD49
21 : New Zealand Geodetic Datum 1949
Definition: crs_horizontal_coordinate_system.h:63
sdk::crs::kHorDat_Belge_1972
@ kHorDat_Belge_1972
24 : Reseau National Belge 1972
Definition: crs_horizontal_coordinate_system.h:66
sdk::crs::kHorDat_Datum_73
@ kHorDat_Datum_73
23 : Datum 73 (Portugal)
Definition: crs_horizontal_coordinate_system.h:65
sdk::crs::kHorDat_SAD69
@ kHorDat_SAD69
8 : South American Datum 1969
Definition: crs_horizontal_coordinate_system.h:50