MySQL 8.3.0
Source Code Documentation
srs.h
Go to the documentation of this file.
1#ifndef SQL_GIS_SRS_SRS_H_INCLUDED
2#define SQL_GIS_SRS_SRS_H_INCLUDED
3
4// Copyright (c) 2016, 2023, Oracle and/or its affiliates.
5//
6// This program is free software; you can redistribute it and/or modify
7// it under the terms of the GNU General Public License, version 2.0,
8// as published by the Free Software Foundation.
9//
10// This program is also distributed with certain software (including
11// but not limited to OpenSSL) that is licensed under separate terms,
12// as designated in a particular file or component or in included license
13// documentation. The authors of MySQL hereby grant you an additional
14// permission to link the program and your derivative works with the
15// separately licensed software that they have included with MySQL.
16//
17// This program is distributed in the hope that it will be useful,
18// but WITHOUT ANY WARRANTY; without even the implied warranty of
19// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20// GNU General Public License, version 2.0, for more details.
21//
22// You should have received a copy of the GNU General Public License
23// along with this program; if not, write to the Free Software
24// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
25
26#include <assert.h>
27#include <cmath>
28#include <cstdint>
29#include <sstream>
30#include <string>
31
32#include "sql/gis/srid.h"
33
34namespace gis {
35namespace srs {
36
37/// Spatial reference system type.
38enum class Srs_type : std::uint8_t { UNKNOWN = 0, PROJECTED, GEOGRAPHIC };
39
40/// Projection method. Values are EPSG codes.
41enum class Projection_type : std::uint32_t {
42 UNKNOWN = 0,
48 KROVAK_MODIFIED = 1042,
51 COLOMBIA_URBAN = 1052,
55 MERCATOR_VARIANT_A = 9804,
56 MERCATOR_VARIANT_B = 9805,
57 CASSINI_SOLDNER = 9806,
68 AMERICAN_POLYCONIC = 9818,
69 KROVAK = 9819,
71 ALBERS_EQUAL_AREA = 9822,
77 GUAM_PROJECTION = 9831,
82};
83
84/// Coordinate axis direction.
85enum class Axis_direction : std::uint8_t {
86 UNSPECIFIED = 0,
87 NORTH,
88 SOUTH,
89 EAST,
90 WEST,
91 OTHER
92};
93
94/// Superclass for all spatial reference systems.
96 public:
100
101 virtual ~Spatial_reference_system() = default;
102
103 /**
104 Get the type of spatial reference system: projected, geometric,
105 etc.
106
107 @return SRS type
108 */
109 virtual Srs_type srs_type() const = 0;
110
111 /**
112 Clone the object.
113
114 @return A new Spatial_reference_system object
115 */
117
118 /**
119 Retrieve the axis direction of the spatial
120 reference system.
121
122 @param axis axis number, zero indexed
123 @return Axis direction
124 */
125 virtual Axis_direction axis_direction(const int axis) const = 0;
126
127 /**
128 Retrieve the angular unit relative to radians.
129
130 @return Conversion factor.
131 */
132 virtual double angular_unit() const = 0;
133
134 /**
135 * Retrieve how long the unit of the spatial reference system is in meters.
136 *
137 * @return Conversion factor
138 */
139 virtual double linear_unit() const = 0;
140 /**
141 Retrieve the prime meridian relative to Greenwich.
142
143 The prime meridian is returned in the angular unit of the
144 SRS. Positive numbers are East of Greenwich.
145
146 @see angular_unit
147
148 @return Prime meridian.
149 */
150 virtual double prime_meridian() const = 0;
151
152 /// Checks if this SRS can be changed to another SRS without causing
153 /// computational incompatibilities.
154 ///
155 /// This means checking that all values in the two SRSs that affect
156 /// computations are the same. The syntax of the SRS definitions may still
157 /// vary, e.g., by using different names or by having different authority
158 /// codes.
159 ///
160 /// In some cases, e.g., unknown projection methods, we don't know how to
161 /// compare the two SRSs. In that case, we fail by saying that the SRSs are
162 /// not the same.
163 ///
164 /// The operation is not commutative. The SRS parameter is allowed to have a
165 /// TOWGS84 specification even though this object doesn't. The opposite is not
166 /// necessarily true. If this object lacks TOWGS84 information, transformation
167 /// operations are forbidden on this SRS. Adding that possibility changes what
168 /// computations are available, but it doesn't change the result of any
169 /// computation that can currently be done.
170 ///
171 /// An SRS that is currently identified as WGS 84 may both add and remove
172 /// TOWGS84 information as long as the parameters are all 0. Adding a
173 /// non-all-zero TOWGS84 clause to a WGS 84 SRS is not allowed.
174 ///
175 /// @param srs The SRS to compare with.
176 ///
177 /// @retval true The two SRSs are semantically the same.
178 /// @retval false The two SRSs are semantically different, or we don't know
179 /// how to compare them.
180 virtual bool can_be_modified_to(
181 const Spatial_reference_system &srs) const = 0;
182
183 /// Retrieve the proj4 parameter string.
184 ///
185 /// If the SRS can't be represented as a proj4 parameter string, an empty
186 /// string is returned.
187 ///
188 /// @return Proj4 parameter string or empty string.
189 virtual std::string proj4_parameters() const { return std::string(); }
190
191 /// Checks if this SRS has valid Bursa Wolf parameters.
192 ///
193 /// @retval true Transformation parameters are specified.
194 /// @retval false Transformation parameters are not specified.
195 virtual bool has_towgs84() const = 0;
196
197 /// Checks if this SRS is WGS 84 or a projection based on WGS 84.
198 ///
199 /// @retval true This SRS is WGS 84 or a projection of WGS 84.
200 /// @retval false This SRS is neither WGS 84 or a projection of WGS 84.
201 virtual bool is_wgs84_based() const = 0;
202};
203
204namespace wkt_parser {
205struct Geographic_cs;
206} // namespace wkt_parser
207
208/// A geographic (longitude-latitude) spatial reference system.
210 private:
211 /// Semi-major axis of ellipsoid
213 /// Inverse flattening of ellipsoid
215 /// Bursa Wolf transformation parameters used to transform to WGS84.
216 double m_towgs84[7];
217 /// Longitude of the prime meridian relative to the Greenwich
218 /// Meridian (measured in m_angular_unit). Positive values are East
219 /// of Greenwich.
221 /// Conversion factor for the angular unit relative to radians.
223 /// Direction of x and y axis, respectively.
225 /// Whether this SRS is WGS 84.
227
228 public:
230 : m_semi_major_axis(NAN),
232 m_prime_meridian(NAN),
233 m_angular_unit(NAN),
234 m_is_wgs84(false) {
235 for (double &d : m_towgs84) d = NAN;
237 }
238
239 Srs_type srs_type() const override { return Srs_type::GEOGRAPHIC; }
240
242 return new Geographic_srs(*this);
243 }
244
245 /**
246 Initialize from parse tree.
247
248 @param[in] srid Spatial reference system ID to use when reporting errors
249 @param[in] g Parser output
250
251 @retval true An error has occurred. The error has been flagged.
252 @retval false Success
253 */
254 virtual bool init(srid_t srid, wkt_parser::Geographic_cs *g);
255
256 bool has_towgs84() const override {
257 // Either none or all parameters are specified.
258 return !std::isnan(m_towgs84[0]);
259 }
260
261 bool is_wgs84_based() const override { return m_is_wgs84; }
262
263 Axis_direction axis_direction(const int axis) const override {
264 assert(axis >= 0 && axis <= 1);
265 return m_axes[axis];
266 }
267
268 std::string partial_proj4_parameters() const;
269
270 double semi_major_axis() const { return m_semi_major_axis; }
271
272 double inverse_flattening() const { return m_inverse_flattening; }
273
274 double linear_unit() const override { return 1.0; }
275 double angular_unit() const override { return m_angular_unit; }
276
277 double prime_meridian() const override { return m_prime_meridian; }
278
279 bool can_be_modified_to(const Spatial_reference_system &srs) const override;
280
281 std::string proj4_parameters() const override;
282};
283
284namespace wkt_parser {
285struct Projected_cs;
286} // namespace wkt_parser
287
288/// A projected spatial reference system.
290 private:
291 /// The geographic SRS this SRS is projected from.
293 /// Converson factor for the linar unit relative to meters.
295 /// Direction of x and y axis, respectively.
297
298 protected:
299 /// Checks if the parameters that are common to all projections can safely be
300 /// modified to another SRS without causing computational differences.
301 ///
302 /// This function is called by can_be_modified_to() in subclasses to check if
303 /// the common parameters match. Projected_srs::can_be_modified_to is abstract
304 /// to avoid that subclasses forget to implement can_be_modified_to().
305 ///
306 /// @see Spatial_reference_system::can_be_modified_to
307 ///
308 /// @param srs The SRS to compare with.
309 ///
310 /// @retval true The common projection parameters are the same in both SRSs.
311 /// @retval false The two SRSs differ in the common projection parameters.
313 const Spatial_reference_system &srs) const;
314
315 public:
318 }
319
320 Srs_type srs_type() const override { return Srs_type::PROJECTED; }
321
322 /**
323 Initialize from parse tree.
324
325 @param[in] srid Spatial reference system ID to use when reporting errors
326 @param[in] p Parser output
327
328 @retval true An error has occurred. The error has been flagged.
329 @retval false Success
330 */
331 virtual bool init(srid_t srid, wkt_parser::Projected_cs *p);
332
333 /**
334 Get the map projection method.
335
336 @return Projection type
337 */
338 virtual Projection_type projection_type() const = 0;
339
340 Axis_direction axis_direction(const int axis) const override {
341 assert(axis >= 0 && axis <= 1);
342 return m_axes[axis];
343 }
344
345 double linear_unit() const override { return m_linear_unit; }
346 double angular_unit() const override {
348 }
349
350 double prime_meridian() const override {
352 }
353
354 bool has_towgs84() const override { return m_geographic_srs.has_towgs84(); }
355
356 bool is_wgs84_based() const override {
358 }
359
360 std::string partial_proj4_parameters() const {
361 // return the result in the units of the srs
363 " +to_meter=" + std::to_string(linear_unit());
364 }
365};
366
367/// A projected SRS of an unknown projection type.
368///
369/// This SRS can be used as any other projected SRS, but since the
370/// projection type is unknown, geometries in this SRS can't be
371/// transformed to other SRSs.
373 public:
375 return new Unknown_projected_srs(*this);
376 }
377
378 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
379
382 }
383
384 bool can_be_modified_to(const Spatial_reference_system &) const override {
385 // We don't know how to compare this SRS with other SRSs.
386 return false;
387 }
388};
389
390/// A Popular Visualisation Pseudo Mercator projection (EPSG 1024).
392 private:
393 /// Latitude chosen as origin of y-coordinates (EPSG 8801).
395 /// Longitude chosen as origin of x-coordinates (central meridian)
396 /// (EPSG 8802).
398 /// Value added to x-coordinates (EPSG 8806).
400 /// Value added to y-coordinates (EPSG 8807).
402
403 public:
407 m_false_easting(NAN),
408 m_false_northing(NAN) {}
409
412 }
413
414 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
415
418 }
419
420 bool can_be_modified_to(const Spatial_reference_system &) const override;
421
422 std::string proj4_parameters() const override;
423};
424
425/// A Lambert Azimuthal Equal Area (Spherical) projection (EPSG 1027).
427 private:
428 /// Latitude chosen as origin of y-coordinates (EPSG 8801).
430 /// Longitude chosen as origin of x-coordinates (central meridian)
431 /// (EPSG 8802).
433 /// Value added to x-coordinates (EPSG 8806).
435 /// Value added to y-coordinates (EPSG 8807).
437
438 public:
442 m_false_easting(NAN),
443 m_false_northing(NAN) {}
444
447 }
448
449 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
450
453 }
454
455 bool can_be_modified_to(const Spatial_reference_system &) const override;
456
457 std::string proj4_parameters() const override;
458};
459
460/// An Equidistant Cylindrical projection (EPSG 1028).
462 private:
463 /// Latitude of the first parallel of intersection between the cone
464 /// and the ellipsoid (EPSG 8823).
466 /// Longitude chosen as origin of x-coordinates (central meridian)
467 /// (EPSG 8802).
469 /// Value added to x-coordinates (EPSG 8806).
471 /// Value added to y-coordinates (EPSG 8807).
473
474 public:
478 m_false_easting(NAN),
479 m_false_northing(NAN) {}
480
482 return new Equidistant_cylindrical_srs(*this);
483 }
484
485 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
486
489 }
490
491 bool can_be_modified_to(const Spatial_reference_system &) const override;
492
493 std::string proj4_parameters() const override;
494};
495
496/// An Equidistant Cylindrical (Spherical) projection (EPSG 1029).
498 private:
499 /// Latitude of the first parallel of intersection between the cone
500 /// and the ellipsoid (EPSG 8823).
502 /// Longitude chosen as origin of x-coordinates (central meridian)
503 /// (EPSG 8802).
505 /// Value added to x-coordinates (EPSG 8806).
507 /// Value added to y-coordinates (EPSG 8807).
509
510 public:
514 m_false_easting(NAN),
515 m_false_northing(NAN) {}
516
519 }
520
521 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
522
525 }
526
527 bool can_be_modified_to(const Spatial_reference_system &) const override;
528
529 std::string proj4_parameters() const override;
530};
531
532/// A Krovak (North Orientated) projection (EPSG 1041).
534 private:
535 /// Latitude of the point at which the azimuth of the central line
536 /// is defined (EPSG 8811).
538 /// The meridian along which the northing axis increments and also
539 /// across which parallels of latitude increment towards the north
540 /// pole (EPSG 8833).
542 /// The rotation applied to spherical coordinates, measured on the
543 /// conformal sphere in the plane of the meridian of origin (EPSG
544 /// 1036).
545 double m_azimuth;
546 /// Latitude of the parallel on which the projection is based. This
547 /// latitude is not geographic, but is defined on the conformal
548 /// sphere AFTER its rotation to obtain the oblique aspect of the
549 /// projection (EPSG 8818).
551 /// The factor by which the map grid is reduced or enlarged at the
552 /// pseudo-standard parallel (EPSG 8819).
554 /// Value added to x-coordinates (EPSG 8806).
556 /// Value added to y-coordinates (EPSG 8807).
558
559 public:
563 m_azimuth(NAN),
565 m_scale_factor(NAN),
566 m_false_easting(NAN),
567 m_false_northing(NAN) {}
568
570 return new Krovak_north_orientated_srs(*this);
571 }
572
573 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
574
577 }
578
579 bool can_be_modified_to(const Spatial_reference_system &) const override;
580
581 std::string proj4_parameters() const override;
582};
583
584/// A Krovak Modified projection (EPSG 1042).
586 private:
587 /// Latitude of the point at which the azimuth of the central line
588 /// is defined (EPSG 8811).
590 /// The meridian along which the northing axis increments and also
591 /// across which parallels of latitude increment towards the north
592 /// pole (EPSG 8833).
594 /// The rotation applied to spherical coordinates, measured on the
595 /// conformal sphere in the plane of the meridian of origin (EPSG
596 /// 1036).
597 double m_azimuth;
598 /// Latitude of the parallel on which the projection is based. This
599 /// latitude is not geographic, but is defined on the conformal
600 /// sphere AFTER its rotation to obtain the oblique aspect of the
601 /// projection (EPSG 8818).
603 /// The factor by which the map grid is reduced or enlarged at the
604 /// pseudo-standard parallel (EPSG 8819).
606 /// Value added to x-coordinates (EPSG 8806).
608 /// Value added to y-coordinates (EPSG 8807).
610 /// The first ordinate of the evaluation point (EPSG 8617).
612 /// The second ordinate of the evaluation point(EPSG 8618).
614 /// Coefficient C1 used in polynomial transformation (EPSG 1026).
615 double m_c1;
616 /// Coefficient C2 used in polynomial transformation (EPSG 1027).
617 double m_c2;
618 /// Coefficient C3 used in polynomial transformation (EPSG 1028).
619 double m_c3;
620 /// Coefficient C4 used in polynomial transformation (EPSG 1029).
621 double m_c4;
622 /// Coefficient C5 used in polynomial transformation (EPSG 1030).
623 double m_c5;
624 /// Coefficient C6 used in polynomial transformation (EPSG 1031).
625 double m_c6;
626 /// Coefficient C7 used in polynomial transformation (EPSG 1032).
627 double m_c7;
628 /// Coefficient C8 used in polynomial transformation (EPSG 1033).
629 double m_c8;
630 /// Coefficient C9 used in polynomial transformation (EPSG 1034).
631 double m_c9;
632 /// Coefficient C10 used in polynomial transformation (EPSG 1035).
633 double m_c10;
634
635 public:
639 m_azimuth(NAN),
641 m_scale_factor(NAN),
642 m_false_easting(NAN),
643 m_false_northing(NAN),
646 m_c1(NAN),
647 m_c2(NAN),
648 m_c3(NAN),
649 m_c4(NAN),
650 m_c5(NAN),
651 m_c6(NAN),
652 m_c7(NAN),
653 m_c8(NAN),
654 m_c9(NAN),
655 m_c10(NAN) {}
656
658 return new Krovak_modified_srs(*this);
659 }
660
661 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
662
665 }
666
667 bool can_be_modified_to(const Spatial_reference_system &) const override;
668};
669
670/// A Krovak Modified (North Orientated) projection (EPSG 1043).
672 private:
673 /// Latitude of the point at which the azimuth of the central line
674 /// is defined (EPSG 8811).
676 /// The meridian along which the northing axis increments and also
677 /// across which parallels of latitude increment towards the north
678 /// pole (EPSG 8833).
680 /// The rotation applied to spherical coordinates, measured on the
681 /// conformal sphere in the plane of the meridian of origin (EPSG
682 /// 1036).
683 double m_azimuth;
684 /// Latitude of the parallel on which the projection is based. This
685 /// latitude is not geographic, but is defined on the conformal
686 /// sphere AFTER its rotation to obtain the oblique aspect of the
687 /// projection (EPSG 8818).
689 /// The factor by which the map grid is reduced or enlarged at the
690 /// pseudo-standard parallel (EPSG 8819).
692 /// Value added to x-coordinates (EPSG 8806).
694 /// Value added to y-coordinates (EPSG 8807).
696 /// The first ordinate of the evaluation point (EPSG 8617).
698 /// The second ordinate of the evaluation point(EPSG 8618).
700 /// Coefficient C1 used in polynomial transformation (EPSG 1026).
701 double m_c1;
702 /// Coefficient C2 used in polynomial transformation (EPSG 1027).
703 double m_c2;
704 /// Coefficient C3 used in polynomial transformation (EPSG 1028).
705 double m_c3;
706 /// Coefficient C4 used in polynomial transformation (EPSG 1029).
707 double m_c4;
708 /// Coefficient C5 used in polynomial transformation (EPSG 1030).
709 double m_c5;
710 /// Coefficient C6 used in polynomial transformation (EPSG 1031).
711 double m_c6;
712 /// Coefficient C7 used in polynomial transformation (EPSG 1032).
713 double m_c7;
714 /// Coefficient C8 used in polynomial transformation (EPSG 1033).
715 double m_c8;
716 /// Coefficient C9 used in polynomial transformation (EPSG 1034).
717 double m_c9;
718 /// Coefficient C10 used in polynomial transformation (EPSG 1035).
719 double m_c10;
720
721 public:
725 m_azimuth(NAN),
727 m_scale_factor(NAN),
728 m_false_easting(NAN),
729 m_false_northing(NAN),
732 m_c1(NAN),
733 m_c2(NAN),
734 m_c3(NAN),
735 m_c4(NAN),
736 m_c5(NAN),
737 m_c6(NAN),
738 m_c7(NAN),
739 m_c8(NAN),
740 m_c9(NAN),
741 m_c10(NAN) {}
742
744 return new Krovak_modified_north_orientated_srs(*this);
745 }
746
747 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
748
751 }
752
753 bool can_be_modified_to(const Spatial_reference_system &) const override;
754};
755
756/// A Lambert Conic Conformal (2SP Michigan) projection (EPSG 1051).
758 private:
759 /// Latitude of the false origin, at which the false easting and
760 /// northing is defined (EPSG 8821).
762 /// Longitude (central meridian) of the false origin, at which the
763 /// false easting and northing is defined (EPSG 8822).
765 /// Latitude of the first parallel of intersection between the cone
766 /// and the ellipsoid (EPSG 8823).
768 /// Latitude of the second parallel of intersection between the cone
769 /// and the ellipsoid (EPSG 8824).
771 /// Easting value assigned to the false origin (EPSG 8826).
773 /// Northing value assigned to the false origin (EPSG 8827).
775 /// Ellipsoid scaling factor (EPSG 1038).
777
778 public:
784 m_false_easting(NAN),
785 m_false_northing(NAN),
787
790 }
791
792 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
793
796 }
797
798 bool can_be_modified_to(const Spatial_reference_system &) const override;
799
800 std::string proj4_parameters() const override;
801};
802
803/// A Colombia Urban projection(EPSG 1052).
805 private:
806 /// Latitude chosen as origin of y-coordinates (EPSG 8801).
808 /// Longitude chosen as origin of x-coordinates (central meridian)
809 /// (EPSG 8802).
811 /// Value added to x-coordinates (EPSG 8806).
813 /// Value added to y-coordinates (EPSG 8807).
815 /// The height of the projection plane at its origin (EPSG 1039).
817
818 public:
822 m_false_easting(NAN),
823 m_false_northing(NAN),
825
827 return new Colombia_urban_srs(*this);
828 }
829
830 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
831
834 }
835
836 bool can_be_modified_to(const Spatial_reference_system &) const override;
837
838 std::string proj4_parameters() const override;
839};
840
841/// A Lambert Conic Conformal (1SP) projection, alias Lambert Conic
842/// Conformal or LCC (EPSG 9801).
844 private:
845 /// Latitude chosen as origin of y-coordinates (EPSG 8801).
847 /// Longitude chosen as origin of x-coordinates (central meridian)
848 /// (EPSG 8802).
850 /// Multiplier for reducing a distance obtained from a map to the
851 /// actual distance on the datum of the map (EPSG 8805).
853 /// Value added to x-coordinates (EPSG 8806).
855 /// Value added to y-coordinates (EPSG 8807).
857
858 public:
862 m_scale_factor(NAN),
863 m_false_easting(NAN),
864 m_false_northing(NAN) {}
865
867 return new Lambert_conic_conformal_1sp_srs(*this);
868 }
869
870 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
871
874 }
875
876 bool can_be_modified_to(const Spatial_reference_system &) const override;
877
878 std::string proj4_parameters() const override;
879};
880
881/// A Lambert Conic Conformal (2SP) projection, alias Lambert Conic
882/// Conformal or LCC (EPSG 9802).
884 private:
885 /// Latitude of the false origin, at which the false easting and
886 /// northing is defined (EPSG 8821).
888 /// Longitude (central meridian) of the false origin, at which the
889 /// false easting and northing is defined (EPSG 8822).
891 /// Latitude of the first parallel of intersection between the cone
892 /// and the ellipsoid (EPSG 8823).
894 /// Latitude of the second parallel of intersection between the cone
895 /// and the ellipsoid (EPSG 8824).
897 /// Easting value assigned to the false origin (EPSG 8826).
899 /// Northing value assigned to the false origin (EPSG 8827).
901
902 public:
908 m_false_easting(NAN),
909 m_false_northing(NAN) {}
910
912 return new Lambert_conic_conformal_2sp_srs(*this);
913 }
914
915 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
916
919 }
920
921 bool can_be_modified_to(const Spatial_reference_system &) const override;
922
923 std::string proj4_parameters() const override;
924};
925
926/// A Lambert Conic Conformal (2SP Belgium) projection (EPSG 9803).
928 private:
929 /// Latitude of the false origin, at which the false easting and
930 /// northing is defined (EPSG 8821).
932 /// Longitude (central meridian) of the false origin, at which the
933 /// false easting and northing is defined (EPSG 8822).
935 /// Latitude of the first parallel of intersection between the cone
936 /// and the ellipsoid (EPSG 8823).
938 /// Latitude of the second parallel of intersection between the cone
939 /// and the ellipsoid (EPSG 8824).
941 /// Easting value assigned to the false origin (EPSG 8826).
943 /// Northing value assigned to the false origin (EPSG 8827).
945
946 public:
952 m_false_easting(NAN),
953 m_false_northing(NAN) {}
954
957 }
958
959 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
960
963 }
964
965 bool can_be_modified_to(const Spatial_reference_system &) const override;
966
967 std::string proj4_parameters() const override;
968};
969
970/// A Mercator (variant A) projection, alias Mercator (EPSG 9804).
972 private:
973 /// Latitude chosen as origin of y-coordinates (EPSG 8801).
975 /// Longitude chosen as origin of x-coordinates (central meridian)
976 /// (EPSG 8802).
978 /// Multiplier for reducing a distance obtained from a map to the
979 /// actual distance on the datum of the map (EPSG 8805).
981 /// Value added to x-coordinates (EPSG 8806).
983 /// Value added to y-coordinates (EPSG 8807).
985
986 public:
990 m_scale_factor(NAN),
991 m_false_easting(NAN),
992 m_false_northing(NAN) {}
993
995 return new Mercator_variant_a_srs(*this);
996 }
997
998 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
999
1002 }
1003
1004 bool can_be_modified_to(const Spatial_reference_system &) const override;
1005
1006 std::string proj4_parameters() const override;
1007};
1008
1009/// A Mercator (variant B) projection, alias Mercator (EPSG 9805).
1011 private:
1012 /// Latitude of the first parallel of intersection between the cone
1013 /// and the ellipsoid (EPSG 8823).
1015 /// Longitude chosen as origin of x-coordinates (central meridian)
1016 /// (EPSG 8802).
1018 /// Value added to x-coordinates (EPSG 8806).
1020 /// Value added to y-coordinates (EPSG 8807).
1022
1023 public:
1025 : m_standard_parallel_1(NAN),
1027 m_false_easting(NAN),
1028 m_false_northing(NAN) {}
1029
1031 return new Mercator_variant_b_srs(*this);
1032 }
1033
1034 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
1035
1038 }
1039
1040 bool can_be_modified_to(const Spatial_reference_system &) const override;
1041
1042 std::string proj4_parameters() const override;
1043};
1044
1045/// A Cassini-Soldner projection, alias Cassini (EPSG 9806).
1047 private:
1048 /// Latitude chosen as origin of y-coordinates (EPSG 8801).
1050 /// Longitude chosen as origin of x-coordinates (central meridian)
1051 /// (EPSG 8802).
1053 /// Value added to x-coordinates (EPSG 8806).
1055 /// Value added to y-coordinates (EPSG 8807).
1057
1058 public:
1060 : m_latitude_of_origin(NAN),
1062 m_false_easting(NAN),
1063 m_false_northing(NAN) {}
1064
1066 return new Cassini_soldner_srs(*this);
1067 }
1068
1069 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
1070
1073 }
1074
1075 bool can_be_modified_to(const Spatial_reference_system &) const override;
1076
1077 std::string proj4_parameters() const override;
1078};
1079
1080/// A Transverse Mercator projection, alias Gauss-Boaga, Gauss-Krüger
1081/// or TM (EPSG 9807).
1083 private:
1084 /// Latitude chosen as origin of y-coordinates (EPSG 8801).
1086 /// Longitude chosen as origin of x-coordinates (central meridian)
1087 /// (EPSG 8802).
1089 /// Multiplier for reducing a distance obtained from a map to the
1090 /// actual distance on the datum of the map (EPSG 8805).
1092 /// Value added to x-coordinates (EPSG 8806).
1094 /// Value added to y-coordinates (EPSG 8807).
1096
1097 public:
1099 : m_latitude_of_origin(NAN),
1101 m_scale_factor(NAN),
1102 m_false_easting(NAN),
1103 m_false_northing(NAN) {}
1104
1106 return new Transverse_mercator_srs(*this);
1107 }
1108
1109 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
1110
1113 }
1114
1115 bool can_be_modified_to(const Spatial_reference_system &) const override;
1116
1117 std::string proj4_parameters() const override;
1118};
1119
1120/// A Transverse Mercator (South Orientated) projection, alias
1121/// Gauss-Conform (EPSG 9808).
1123 private:
1124 /// Latitude chosen as origin of y-coordinates (EPSG 8801).
1126 /// Longitude chosen as origin of x-coordinates (central meridian)
1127 /// (EPSG 8802).
1129 /// Multiplier for reducing a distance obtained from a map to the
1130 /// actual distance on the datum of the map (EPSG 8805).
1132 /// Value added to x-coordinates (EPSG 8806).
1134 /// Value added to y-coordinates (EPSG 8807).
1136
1137 public:
1139 : m_latitude_of_origin(NAN),
1141 m_scale_factor(NAN),
1142 m_false_easting(NAN),
1143 m_false_northing(NAN) {}
1144
1147 }
1148
1149 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
1150
1153 }
1154
1155 bool can_be_modified_to(const Spatial_reference_system &) const override;
1156
1157 std::string proj4_parameters() const override;
1158};
1159
1160/// An Oblique stereographic projection, alias Double stereographic
1161/// (EPSG 9809).
1163 private:
1164 /// Latitude chosen as origin of y-coordinates (EPSG 8801).
1166 /// Longitude chosen as origin of x-coordinates (central meridian)
1167 /// (EPSG 8802).
1169 /// Multiplier for reducing a distance obtained from a map to the
1170 /// actual distance on the datum of the map (EPSG 8805).
1172 /// Value added to x-coordinates (EPSG 8806).
1174 /// Value added to y-coordinates (EPSG 8807).
1176
1177 public:
1179 : m_latitude_of_origin(NAN),
1181 m_scale_factor(NAN),
1182 m_false_easting(NAN),
1183 m_false_northing(NAN) {}
1184
1186 return new Oblique_stereographic_srs(*this);
1187 }
1188
1189 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
1190
1193 }
1194
1195 bool can_be_modified_to(const Spatial_reference_system &) const override;
1196
1197 std::string proj4_parameters() const override;
1198};
1199
1200/// A Polar Stereographic (variant A) projection (EPSG 9810).
1202 private:
1203 /// Latitude chosen as origin of y-coordinates (EPSG 8801).
1205 /// Longitude chosen as origin of x-coordinates (central meridian)
1206 /// (EPSG 8802).
1208 /// Multiplier for reducing a distance obtained from a map to the
1209 /// actual distance on the datum of the map (EPSG 8805).
1211 /// Value added to x-coordinates (EPSG 8806).
1213 /// Value added to y-coordinates (EPSG 8807).
1215
1216 public:
1218 : m_latitude_of_origin(NAN),
1220 m_scale_factor(NAN),
1221 m_false_easting(NAN),
1222 m_false_northing(NAN) {}
1223
1225 return new Polar_stereographic_variant_a_srs(*this);
1226 }
1227
1228 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
1229
1232 }
1233
1234 bool can_be_modified_to(const Spatial_reference_system &) const override;
1235
1236 std::string proj4_parameters() const override;
1237};
1238
1239/// A New Zealand Map Grid projection (EPSG 9811).
1241 private:
1242 /// Latitude chosen as origin of y-coordinates (EPSG 8801).
1244 /// Longitude chosen as origin of x-coordinates (central meridian)
1245 /// (EPSG 8802).
1247 /// Value added to x-coordinates (EPSG 8806).
1249 /// Value added to y-coordinates (EPSG 8807).
1251
1252 public:
1254 : m_latitude_of_origin(NAN),
1256 m_false_easting(NAN),
1257 m_false_northing(NAN) {}
1258
1260 return new New_zealand_map_grid_srs(*this);
1261 }
1262
1263 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
1264
1267 }
1268
1269 bool can_be_modified_to(const Spatial_reference_system &) const override;
1270
1271 std::string proj4_parameters() const override;
1272};
1273
1274/// A Hotine Oblique Mercator (variant A) projection, alias Rectified
1275/// skew orthomorphic (EPSG 9812).
1277 private:
1278 /// Latitude of the point at which the azimuth of the central line
1279 /// is defined (EPSG 8811).
1281 /// Longitude of the point at which the azimuth of the central line
1282 /// is defined (EPSG 8812).
1284 /// Direction east of north of the great circle which is the central
1285 /// line (EPSG 8813).
1287 /// Angle at the natural origin through which the natural SRS is
1288 /// rotated to make the projection north axis parallel with true
1289 /// north (EPSG 8814).
1291 /// Multiplier for reducing a distance obtained from a map to the
1292 /// actual distance on the datum of the map (EPSG 8815).
1294 /// Value added to x-coordinates (EPSG 8806).
1296 /// Value added to y-coordinates (EPSG 8807).
1298
1299 public:
1301 : m_latitude_of_center(NAN),
1303 m_azimuth(NAN),
1305 m_scale_factor(NAN),
1306 m_false_easting(NAN),
1307 m_false_northing(NAN) {}
1308
1310 return new Hotine_oblique_mercator_variant_a_srs(*this);
1311 }
1312
1313 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
1314
1317 }
1318
1319 bool can_be_modified_to(const Spatial_reference_system &) const override;
1320
1321 std::string proj4_parameters() const override;
1322};
1323
1324/// A Laborde Oblique Mercator projection (EPSG 9813).
1326 private:
1327 /// Latitude of the point at which the azimuth of the central line
1328 /// is defined (EPSG 8811).
1330 /// Longitude of the point at which the azimuth of the central line
1331 /// is defined (EPSG 8812).
1333 /// Direction east of north of the great circle which is the central
1334 /// line (EPSG 8813).
1336 /// Multiplier for reducing a distance obtained from a map to the
1337 /// actual distance on the datum of the map (EPSG 8815).
1339 /// Value added to x-coordinates (EPSG 8806).
1341 /// Value added to y-coordinates (EPSG 8807).
1343
1344 public:
1346 : m_latitude_of_center(NAN),
1348 m_azimuth(NAN),
1349 m_scale_factor(NAN),
1350 m_false_easting(NAN),
1351 m_false_northing(NAN) {}
1352
1354 return new Laborde_oblique_mercator_srs(*this);
1355 }
1356
1357 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
1358
1361 }
1362
1363 bool can_be_modified_to(const Spatial_reference_system &) const override;
1364
1365 std::string proj4_parameters() const override;
1366};
1367
1368/// A Hotine Oblique Mercator (variant B) projection, alias Rectified
1369/// skew orthomorphic (EPSG 9815).
1371 private:
1372 /// Latitude of the point at which the azimuth of the central line
1373 /// is defined (EPSG 8811).
1375 /// Longitude of the point at which the azimuth of the central line
1376 /// is defined (EPSG 8812).
1378 /// Direction east of north of the great circle which is the central
1379 /// line (EPSG 8813).
1381 /// Angle at the natural origin through which the natural SRS is
1382 /// rotated to make the projection north axis parallel with true
1383 /// north (EPSG 8814).
1385 /// Multiplier for reducing a distance obtained from a map to the
1386 /// actual distance on the datum of the map (EPSG 8815).
1388 /// Easting value assigned to the projection center (EPSG 8816).
1390 /// Northing value assigned to the projection center (EPSG 8817).
1392
1393 public:
1395 : m_latitude_of_center(NAN),
1397 m_azimuth(NAN),
1399 m_scale_factor(NAN),
1400 m_false_easting(NAN),
1401 m_false_northing(NAN) {}
1402
1404 return new Hotine_oblique_mercator_variant_b_srs(*this);
1405 }
1406
1407 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
1408
1411 }
1412
1413 bool can_be_modified_to(const Spatial_reference_system &) const override;
1414
1415 std::string proj4_parameters() const override;
1416};
1417
1418/// A Tunisia Mining Grid projection (EPSG 9816).
1420 private:
1421 /// Latitude of the false origin, at which the false easting and
1422 /// northing is defined (EPSG 8821).
1424 /// Longitude (central meridian) of the false origin, at which the
1425 /// false easting and northing is defined (EPSG 8822).
1427 /// Easting value assigned to the false origin (EPSG 8826).
1429 /// Northing value assigned to the false origin (EPSG 8827).
1431
1432 public:
1434 : m_latitude_of_origin(NAN),
1436 m_false_easting(NAN),
1437 m_false_northing(NAN) {}
1438
1440 return new Tunisia_mining_grid_srs(*this);
1441 }
1442
1443 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
1444
1447 }
1448
1449 bool can_be_modified_to(const Spatial_reference_system &) const override;
1450};
1451
1452/// A Lambert Conic Near-Conformal projection (EPSG 9817).
1454 private:
1455 /// Latitude chosen as origin of y-coordinates (EPSG 8801).
1457 /// Longitude chosen as origin of x-coordinates (central meridian)
1458 /// (EPSG 8802).
1460 /// Multiplier for reducing a distance obtained from a map to the
1461 /// actual distance on the datum of the map (EPSG 8805).
1463 /// Value added to x-coordinates (EPSG 8806).
1465 /// Value added to y-coordinates (EPSG 8807).
1467
1468 public:
1470 : m_latitude_of_origin(NAN),
1472 m_scale_factor(NAN),
1473 m_false_easting(NAN),
1474 m_false_northing(NAN) {}
1475
1477 return new Lambert_conic_near_conformal_srs(*this);
1478 }
1479
1480 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
1481
1484 }
1485
1486 bool can_be_modified_to(const Spatial_reference_system &) const override;
1487
1488 std::string proj4_parameters() const override;
1489};
1490
1491/// An American Polyconic projection, alias Polyconic (EPSG 9818).
1493 private:
1494 /// Latitude chosen as origin of y-coordinates (EPSG 8801).
1496 /// Longitude chosen as origin of x-coordinates (central meridian)
1497 /// (EPSG 8802).
1499 /// Value added to x-coordinates (EPSG 8806).
1501 /// Value added to y-coordinates (EPSG 8807).
1503
1504 public:
1506 : m_latitude_of_origin(NAN),
1508 m_false_easting(NAN),
1509 m_false_northing(NAN) {}
1510
1512 return new American_polyconic_srs(*this);
1513 }
1514
1515 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
1516
1519 }
1520
1521 bool can_be_modified_to(const Spatial_reference_system &) const override;
1522
1523 std::string proj4_parameters() const override;
1524};
1525
1526/// A Krovak projection (EPSG 9819).
1528 private:
1529 /// Latitude of the point at which the azimuth of the central line
1530 /// is defined (EPSG 8811).
1532 /// The meridian along which the northing axis increments and also
1533 /// across which parallels of latitude increment towards the north
1534 /// pole (EPSG 8833).
1536 /// The rotation applied to spherical coordinates, measured on the
1537 /// conformal sphere in the plane of the meridian of origin (EPSG
1538 /// 1036).
1540 /// Latitude of the parallel on which the projection is based. This
1541 /// latitude is not geographic, but is defined on the conformal
1542 /// sphere AFTER its rotation to obtain the oblique aspect of the
1543 /// projection (EPSG 8818).
1545 /// The factor by which the map grid is reduced or enlarged at the
1546 /// pseudo-standard parallel (EPSG 8819).
1548 /// Value added to x-coordinates (EPSG 8806).
1550 /// Value added to y-coordinates (EPSG 8807).
1552
1553 public:
1555 : m_latitude_of_center(NAN),
1557 m_azimuth(NAN),
1559 m_scale_factor(NAN),
1560 m_false_easting(NAN),
1561 m_false_northing(NAN) {}
1562
1563 Spatial_reference_system *clone() override { return new Krovak_srs(*this); }
1564
1565 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
1566
1569 }
1570
1571 bool can_be_modified_to(const Spatial_reference_system &) const override;
1572
1573 std::string proj4_parameters() const override;
1574};
1575
1576/// A Lambert Azimuthal Equal Area projection, alias Lambert Equal
1577/// Area or LAEA (EPSG 9820).
1579 private:
1580 /// Latitude chosen as origin of y-coordinates (EPSG 8801).
1582 /// Longitude chosen as origin of x-coordinates (central meridian)
1583 /// (EPSG 8802).
1585 /// Value added to x-coordinates (EPSG 8806).
1587 /// Value added to y-coordinates (EPSG 8807).
1589
1590 public:
1592 : m_latitude_of_origin(NAN),
1594 m_false_easting(NAN),
1595 m_false_northing(NAN) {}
1596
1598 return new Lambert_azimuthal_equal_area_srs(*this);
1599 }
1600
1601 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
1602
1605 }
1606
1607 bool can_be_modified_to(const Spatial_reference_system &) const override;
1608
1609 std::string proj4_parameters() const override;
1610};
1611
1612/// An Albers Equal Area projection, alias Albers (EPSG 9822).
1614 private:
1615 /// Latitude of the false origin, at which the false easting and
1616 /// northing is defined (EPSG 8821).
1618 /// Longitude (central meridian) of the false origin, at which the
1619 /// false easting and northing is defined (EPSG 8822).
1621 /// Latitude of the first parallel of intersection between the cone
1622 /// and the ellipsoid (EPSG 8823).
1624 /// Latitude of the second parallel of intersection between the cone
1625 /// and the ellipsoid (EPSG 8824).
1627 /// Easting value assigned to the false origin (EPSG 8826).
1629 /// Northing value assigned to the false origin (EPSG 8827).
1631
1632 public:
1634 : m_latitude_of_origin(NAN),
1638 m_false_easting(NAN),
1639 m_false_northing(NAN) {}
1640
1642 return new Albers_equal_area_srs(*this);
1643 }
1644
1645 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
1646
1649 }
1650
1651 bool can_be_modified_to(const Spatial_reference_system &) const override;
1652
1653 std::string proj4_parameters() const override;
1654};
1655
1656/// A Transverse Mercator Zoned Grid System projection (EPSG 9824).
1658 private:
1659 /// Latitude chosen as origin of y-coordinates (EPSG 8801).
1661 /// The longitude of the western limit of the first zone (EPSG
1662 /// 8830).
1664 /// The longitude width of a zone (EPSG 8831).
1666 /// Multiplier for reducing a distance obtained from a map to the
1667 /// actual distance on the datum of the map (EPSG 8805).
1669 /// Value added to x-coordinates (EPSG 8806).
1671 /// Value added to y-coordinates (EPSG 8807).
1673
1674 public:
1676 : m_latitude_of_origin(NAN),
1678 m_zone_width(NAN),
1679 m_scale_factor(NAN),
1680 m_false_easting(NAN),
1681 m_false_northing(NAN) {}
1682
1685 }
1686
1687 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
1688
1691 }
1692
1693 bool can_be_modified_to(const Spatial_reference_system &) const override;
1694
1695 std::string proj4_parameters() const override;
1696};
1697
1698/// A Lambert Conic Conformal (West Orientated) projection (EPSG 9826).
1700 private:
1701 /// Latitude chosen as origin of y-coordinates (EPSG 8801).
1703 /// Longitude chosen as origin of x-coordinates (central meridian)
1704 /// (EPSG 8802).
1706 /// Multiplier for reducing a distance obtained from a map to the
1707 /// actual distance on the datum of the map (EPSG 8805).
1709 /// Value added to x-coordinates (EPSG 8806).
1711 /// Value added to y-coordinates (EPSG 8807).
1713
1714 public:
1716 : m_latitude_of_origin(NAN),
1718 m_scale_factor(NAN),
1719 m_false_easting(NAN),
1720 m_false_northing(NAN) {}
1721
1724 }
1725
1726 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
1727
1730 }
1731
1732 bool can_be_modified_to(const Spatial_reference_system &) const override;
1733};
1734
1735/// A Bonne (South Orientated) projection (EPSG 9828).
1737 private:
1738 /// Latitude chosen as origin of y-coordinates (EPSG 8801).
1740 /// Longitude chosen as origin of x-coordinates (central meridian)
1741 /// (EPSG 8802).
1743 /// Value added to x-coordinates (EPSG 8806).
1745 /// Value added to y-coordinates (EPSG 8807).
1747
1748 public:
1750 : m_latitude_of_origin(NAN),
1752 m_false_easting(NAN),
1753 m_false_northing(NAN) {}
1754
1756 return new Bonne_south_orientated_srs(*this);
1757 }
1758
1759 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
1760
1763 }
1764
1765 bool can_be_modified_to(const Spatial_reference_system &) const override;
1766
1767 std::string proj4_parameters() const override;
1768};
1769
1770/// A Polar Stereographic (variant B) projection (EPSG 9829).
1772 private:
1773 /// The parallel on which the scale factor is defined to be unity
1774 /// (EPSG 8832).
1776 /// The meridian along which the northing axis increments and also
1777 /// across which parallels of latitude increment towards the north
1778 /// pole (EPSG 8833).
1780 /// Value added to x-coordinates (EPSG 8806).
1782 /// Value added to y-coordinates (EPSG 8807).
1784
1785 public:
1787 : m_standard_parallel(NAN),
1789 m_false_easting(NAN),
1790 m_false_northing(NAN) {}
1791
1793 return new Polar_stereographic_variant_b_srs(*this);
1794 }
1795
1796 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
1797
1800 }
1801
1802 bool can_be_modified_to(const Spatial_reference_system &) const override;
1803
1804 std::string proj4_parameters() const override;
1805};
1806
1807/// A Polar Stereographic (variant C) projection (EPSG 9830).
1809 private:
1810 /// The parallel on which the scale factor is defined to be unity
1811 /// (EPSG 8832).
1813 /// The meridian along which the northing axis increments and also
1814 /// across which parallels of latitude increment towards the north
1815 /// pole (EPSG 8833).
1817 /// Easting value assigned to the false origin (EPSG 8826).
1819 /// Northing value assigned to the false origin (EPSG 8827).
1821
1822 public:
1824 : m_standard_parallel(NAN),
1826 m_false_easting(NAN),
1827 m_false_northing(NAN) {}
1828
1830 return new Polar_stereographic_variant_c_srs(*this);
1831 }
1832
1833 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
1834
1837 }
1838
1839 bool can_be_modified_to(const Spatial_reference_system &) const override;
1840
1841 std::string proj4_parameters() const override;
1842};
1843
1844/// A Guam Projection projection (EPSG 9831).
1846 private:
1847 /// Latitude chosen as origin of y-coordinates (EPSG 8801).
1849 /// Longitude chosen as origin of x-coordinates (central meridian)
1850 /// (EPSG 8802).
1852 /// Value added to x-coordinates (EPSG 8806).
1854 /// Value added to y-coordinates (EPSG 8807).
1856
1857 public:
1859 : m_latitude_of_origin(NAN),
1861 m_false_easting(NAN),
1862 m_false_northing(NAN) {}
1863
1865 return new Guam_projection_srs(*this);
1866 }
1867
1868 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
1869
1872 }
1873
1874 bool can_be_modified_to(const Spatial_reference_system &) const override;
1875
1876 std::string proj4_parameters() const override;
1877};
1878
1879/// A Modified Azimuthal Equidistant projection (EPSG 9832).
1881 private:
1882 /// Latitude chosen as origin of y-coordinates (EPSG 8801).
1884 /// Longitude chosen as origin of x-coordinates (central meridian)
1885 /// (EPSG 8802).
1887 /// Value added to x-coordinates (EPSG 8806).
1889 /// Value added to y-coordinates (EPSG 8807).
1891
1892 public:
1894 : m_latitude_of_origin(NAN),
1896 m_false_easting(NAN),
1897 m_false_northing(NAN) {}
1898
1900 return new Modified_azimuthal_equidistant_srs(*this);
1901 }
1902
1903 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
1904
1907 }
1908
1909 bool can_be_modified_to(const Spatial_reference_system &) const override;
1910
1911 std::string proj4_parameters() const override;
1912};
1913
1914/// A Hyperbolic Cassini-Soldner projection (EPSG 9833).
1916 private:
1917 /// Latitude chosen as origin of y-coordinates (EPSG 8801).
1919 /// Longitude chosen as origin of x-coordinates (central meridian)
1920 /// (EPSG 8802).
1922 /// Value added to x-coordinates (EPSG 8806).
1924 /// Value added to y-coordinates (EPSG 8807).
1926
1927 public:
1929 : m_latitude_of_origin(NAN),
1931 m_false_easting(NAN),
1932 m_false_northing(NAN) {}
1933
1935 return new Hyperbolic_cassini_soldner_srs(*this);
1936 }
1937
1938 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
1939
1942 }
1943
1944 bool can_be_modified_to(const Spatial_reference_system &) const override;
1945
1946 std::string proj4_parameters() const override;
1947};
1948
1949/// A Lambert Cylindrical Equal Area (Spherical) projection (EPSG
1950/// 9834).
1952 private:
1953 /// Latitude of the first parallel of intersection between the cone
1954 /// and the ellipsoid (EPSG 8823).
1956 /// Longitude chosen as origin of x-coordinates (central meridian)
1957 /// (EPSG 8802).
1959 /// Value added to x-coordinates (EPSG 8806).
1961 /// Value added to y-coordinates (EPSG 8807).
1963
1964 public:
1966 : m_standard_parallel_1(NAN),
1968 m_false_easting(NAN),
1969 m_false_northing(NAN) {}
1970
1973 }
1974
1975 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
1976
1979 }
1980
1981 bool can_be_modified_to(const Spatial_reference_system &) const override;
1982
1983 std::string proj4_parameters() const override;
1984};
1985
1986/// A Lambert Cylindrical Equal Area projection (EPSG 9835).
1988 private:
1989 /// Latitude of the first parallel of intersection between the cone
1990 /// and the ellipsoid (EPSG 8823).
1992 /// Longitude chosen as origin of x-coordinates (central meridian)
1993 /// (EPSG 8802).
1995 /// Value added to x-coordinates (EPSG 8806).
1997 /// Value added to y-coordinates (EPSG 8807).
1999
2000 public:
2002 : m_standard_parallel_1(NAN),
2004 m_false_easting(NAN),
2005 m_false_northing(NAN) {}
2006
2008 return new Lambert_cylindrical_equal_area_srs(*this);
2009 }
2010
2011 bool init(srid_t srid, wkt_parser::Projected_cs *p) override;
2012
2015 }
2016
2017 bool can_be_modified_to(const Spatial_reference_system &) const override;
2018
2019 std::string proj4_parameters() const override;
2020};
2021
2022/**
2023 Parse an SRS definition WKT string.
2024
2025 The parser understands WKT as defined by the <horz cs>
2026 specification in OGC 01-009.
2027
2028 If the string is successfully parsed, a new SRS object will be
2029 allocated on the heap. The caller is responsible for deleting it.
2030
2031 If an error occurs, no object is allocated.
2032
2033 @param[in] srid Spatial reference system ID to use when reporting errors
2034 @param[in] begin Start of WKT string in UTF-8
2035 @param[in] end End of WKT string (one past the last byte)
2036 @param[out] result Spatial reference system
2037
2038 @retval true An error has occurred
2039 @retval false Success
2040*/
2041bool parse_wkt(srid_t srid, const char *begin, const char *end,
2042 Spatial_reference_system **result);
2043
2044} // namespace srs
2045} // namespace gis
2046
2047#endif // SQL_GIS_SRS_SRS_H_INCLUDED
An Albers Equal Area projection, alias Albers (EPSG 9822).
Definition: srs.h:1613
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:1945
double m_standard_parallel_1
Latitude of the first parallel of intersection between the cone and the ellipsoid (EPSG 8823).
Definition: srs.h:1623
double m_false_northing
Northing value assigned to the false origin (EPSG 8827).
Definition: srs.h:1630
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:1962
double m_false_easting
Easting value assigned to the false origin (EPSG 8826).
Definition: srs.h:1628
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:1641
Albers_equal_area_srs()
Definition: srs.h:1633
double m_latitude_of_origin
Latitude of the false origin, at which the false easting and northing is defined (EPSG 8821).
Definition: srs.h:1617
double m_longitude_of_origin
Longitude (central meridian) of the false origin, at which the false easting and northing is defined ...
Definition: srs.h:1620
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:1979
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:1647
double m_standard_parallel_2
Latitude of the second parallel of intersection between the cone and the ellipsoid (EPSG 8824).
Definition: srs.h:1626
An American Polyconic projection, alias Polyconic (EPSG 9818).
Definition: srs.h:1492
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:1818
double m_false_easting
Value added to x-coordinates (EPSG 8806).
Definition: srs.h:1500
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:1517
American_polyconic_srs()
Definition: srs.h:1505
double m_false_northing
Value added to y-coordinates (EPSG 8807).
Definition: srs.h:1502
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:1803
double m_longitude_of_origin
Longitude chosen as origin of x-coordinates (central meridian) (EPSG 8802).
Definition: srs.h:1498
double m_latitude_of_origin
Latitude chosen as origin of y-coordinates (EPSG 8801).
Definition: srs.h:1495
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:1511
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:1833
A Bonne (South Orientated) projection (EPSG 9828).
Definition: srs.h:1736
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:2098
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:1755
double m_false_easting
Value added to x-coordinates (EPSG 8806).
Definition: srs.h:1744
Bonne_south_orientated_srs()
Definition: srs.h:1749
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:1761
double m_false_northing
Value added to y-coordinates (EPSG 8807).
Definition: srs.h:1746
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:2113
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:2083
double m_longitude_of_origin
Longitude chosen as origin of x-coordinates (central meridian) (EPSG 8802).
Definition: srs.h:1742
double m_latitude_of_origin
Latitude chosen as origin of y-coordinates (EPSG 8801).
Definition: srs.h:1739
A Cassini-Soldner projection, alias Cassini (EPSG 9806).
Definition: srs.h:1046
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:1302
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:1317
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:1287
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:1065
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:1071
double m_latitude_of_origin
Latitude chosen as origin of y-coordinates (EPSG 8801).
Definition: srs.h:1049
double m_longitude_of_origin
Longitude chosen as origin of x-coordinates (central meridian) (EPSG 8802).
Definition: srs.h:1052
double m_false_easting
Value added to x-coordinates (EPSG 8806).
Definition: srs.h:1054
double m_false_northing
Value added to y-coordinates (EPSG 8807).
Definition: srs.h:1056
Cassini_soldner_srs()
Definition: srs.h:1059
A Colombia Urban projection(EPSG 1052).
Definition: srs.h:804
double m_false_easting
Value added to x-coordinates (EPSG 8806).
Definition: srs.h:812
double m_false_northing
Value added to y-coordinates (EPSG 8807).
Definition: srs.h:814
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:826
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:832
Colombia_urban_srs()
Definition: srs.h:819
double m_longitude_of_origin
Longitude chosen as origin of x-coordinates (central meridian) (EPSG 8802).
Definition: srs.h:810
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:994
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:1010
double m_latitude_of_origin
Latitude chosen as origin of y-coordinates (EPSG 8801).
Definition: srs.h:807
double m_projection_plane_height_at_origin
The height of the projection plane at its origin (EPSG 1039).
Definition: srs.h:816
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:1027
An Equidistant Cylindrical (Spherical) projection (EPSG 1029).
Definition: srs.h:497
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:728
double m_longitude_of_origin
Longitude chosen as origin of x-coordinates (central meridian) (EPSG 8802).
Definition: srs.h:504
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:743
double m_standard_parallel_1
Latitude of the first parallel of intersection between the cone and the ellipsoid (EPSG 8823).
Definition: srs.h:501
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:758
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:523
double m_false_northing
Value added to y-coordinates (EPSG 8807).
Definition: srs.h:508
Equidistant_cylindrical_spherical_srs()
Definition: srs.h:511
double m_false_easting
Value added to x-coordinates (EPSG 8806).
Definition: srs.h:506
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:517
An Equidistant Cylindrical projection (EPSG 1028).
Definition: srs.h:461
Equidistant_cylindrical_srs()
Definition: srs.h:475
double m_false_easting
Value added to x-coordinates (EPSG 8806).
Definition: srs.h:470
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:487
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:683
double m_longitude_of_origin
Longitude chosen as origin of x-coordinates (central meridian) (EPSG 8802).
Definition: srs.h:468
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:713
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:698
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:481
double m_standard_parallel_1
Latitude of the first parallel of intersection between the cone and the ellipsoid (EPSG 8823).
Definition: srs.h:465
double m_false_northing
Value added to y-coordinates (EPSG 8807).
Definition: srs.h:472
A geographic (longitude-latitude) spatial reference system.
Definition: srs.h:209
Axis_direction m_axes[2]
Direction of x and y axis, respectively.
Definition: srs.h:224
Axis_direction axis_direction(const int axis) const override
Retrieve the axis direction of the spatial reference system.
Definition: srs.h:263
double m_prime_meridian
Longitude of the prime meridian relative to the Greenwich Meridian (measured in m_angular_unit).
Definition: srs.h:220
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:241
double m_towgs84[7]
Bursa Wolf transformation parameters used to transform to WGS84.
Definition: srs.h:216
double semi_major_axis() const
Definition: srs.h:270
std::string partial_proj4_parameters() const
Definition: srs.cc:506
Geographic_srs()
Definition: srs.h:229
Srs_type srs_type() const override
Get the type of spatial reference system: projected, geometric, etc.
Definition: srs.h:239
double linear_unit() const override
Retrieve how long the unit of the spatial reference system is in meters.
Definition: srs.h:274
double m_angular_unit
Conversion factor for the angular unit relative to radians.
Definition: srs.h:222
bool is_wgs84_based() const override
Checks if this SRS is WGS 84 or a projection based on WGS 84.
Definition: srs.h:261
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:549
bool m_is_wgs84
Whether this SRS is WGS 84.
Definition: srs.h:226
double inverse_flattening() const
Definition: srs.h:272
virtual bool init(srid_t srid, wkt_parser::Geographic_cs *g)
Initialize from parse tree.
Definition: srs.cc:341
double angular_unit() const override
Retrieve the angular unit relative to radians.
Definition: srs.h:275
double m_semi_major_axis
Semi-major axis of ellipsoid.
Definition: srs.h:212
double prime_meridian() const override
Retrieve the prime meridian relative to Greenwich.
Definition: srs.h:277
bool has_towgs84() const override
Checks if this SRS has valid Bursa Wolf parameters.
Definition: srs.h:256
bool can_be_modified_to(const Spatial_reference_system &srs) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:451
double m_inverse_flattening
Inverse flattening of ellipsoid.
Definition: srs.h:214
A Guam Projection projection (EPSG 9831).
Definition: srs.h:1845
double m_latitude_of_origin
Latitude chosen as origin of y-coordinates (EPSG 8801).
Definition: srs.h:1848
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:2248
double m_longitude_of_origin
Longitude chosen as origin of x-coordinates (central meridian) (EPSG 8802).
Definition: srs.h:1851
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:2233
double m_false_northing
Value added to y-coordinates (EPSG 8807).
Definition: srs.h:1855
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:1870
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:2218
Guam_projection_srs()
Definition: srs.h:1858
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:1864
double m_false_easting
Value added to x-coordinates (EPSG 8806).
Definition: srs.h:1853
A Hotine Oblique Mercator (variant A) projection, alias Rectified skew orthomorphic (EPSG 9812).
Definition: srs.h:1276
double m_azimuth
Direction east of north of the great circle which is the central line (EPSG 8813).
Definition: srs.h:1286
double m_rectified_grid_angle
Angle at the natural origin through which the natural SRS is rotated to make the projection north axi...
Definition: srs.h:1290
double m_latitude_of_center
Latitude of the point at which the azimuth of the central line is defined (EPSG 8811).
Definition: srs.h:1280
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:1564
double m_false_northing
Value added to y-coordinates (EPSG 8807).
Definition: srs.h:1297
double m_longitude_of_center
Longitude of the point at which the azimuth of the central line is defined (EPSG 8812).
Definition: srs.h:1283
double m_false_easting
Value added to x-coordinates (EPSG 8806).
Definition: srs.h:1295
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:1309
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:1600
double m_scale_factor
Multiplier for reducing a distance obtained from a map to the actual distance on the datum of the map...
Definition: srs.h:1293
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:1315
Hotine_oblique_mercator_variant_a_srs()
Definition: srs.h:1300
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:1582
A Hotine Oblique Mercator (variant B) projection, alias Rectified skew orthomorphic (EPSG 9815).
Definition: srs.h:1370
double m_scale_factor
Multiplier for reducing a distance obtained from a map to the actual distance on the datum of the map...
Definition: srs.h:1387
double m_azimuth
Direction east of north of the great circle which is the central line (EPSG 8813).
Definition: srs.h:1380
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:1705
double m_false_easting
Easting value assigned to the projection center (EPSG 8816).
Definition: srs.h:1389
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:1669
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:1687
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:1403
double m_latitude_of_center
Latitude of the point at which the azimuth of the central line is defined (EPSG 8811).
Definition: srs.h:1374
double m_false_northing
Northing value assigned to the projection center (EPSG 8817).
Definition: srs.h:1391
double m_rectified_grid_angle
Angle at the natural origin through which the natural SRS is rotated to make the projection north axi...
Definition: srs.h:1384
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:1409
double m_longitude_of_center
Longitude of the point at which the azimuth of the central line is defined (EPSG 8812).
Definition: srs.h:1377
Hotine_oblique_mercator_variant_b_srs()
Definition: srs.h:1394
A Hyperbolic Cassini-Soldner projection (EPSG 9833).
Definition: srs.h:1915
double m_false_northing
Value added to y-coordinates (EPSG 8807).
Definition: srs.h:1925
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:1934
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:2308
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:2338
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:2323
Hyperbolic_cassini_soldner_srs()
Definition: srs.h:1928
double m_latitude_of_origin
Latitude chosen as origin of y-coordinates (EPSG 8801).
Definition: srs.h:1918
double m_false_easting
Value added to x-coordinates (EPSG 8806).
Definition: srs.h:1923
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:1940
double m_longitude_of_origin
Longitude chosen as origin of x-coordinates (central meridian) (EPSG 8802).
Definition: srs.h:1921
A Krovak Modified (North Orientated) projection (EPSG 1043).
Definition: srs.h:671
double m_pseudo_standard_parallel_1
Latitude of the parallel on which the projection is based.
Definition: srs.h:688
double m_false_easting
Value added to x-coordinates (EPSG 8806).
Definition: srs.h:693
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:749
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:743
double m_c1
Coefficient C1 used in polynomial transformation (EPSG 1026).
Definition: srs.h:701
double m_scale_factor
The factor by which the map grid is reduced or enlarged at the pseudo-standard parallel (EPSG 8819).
Definition: srs.h:691
double m_c3
Coefficient C3 used in polynomial transformation (EPSG 1028).
Definition: srs.h:705
double m_latitude_of_center
Latitude of the point at which the azimuth of the central line is defined (EPSG 8811).
Definition: srs.h:675
double m_longitude_of_center
The meridian along which the northing axis increments and also across which parallels of latitude inc...
Definition: srs.h:679
double m_c10
Coefficient C10 used in polynomial transformation (EPSG 1035).
Definition: srs.h:719
double m_evaluation_point_ordinate_1
The first ordinate of the evaluation point (EPSG 8617).
Definition: srs.h:697
double m_c8
Coefficient C8 used in polynomial transformation (EPSG 1033).
Definition: srs.h:715
double m_c9
Coefficient C9 used in polynomial transformation (EPSG 1034).
Definition: srs.h:717
double m_c6
Coefficient C6 used in polynomial transformation (EPSG 1031).
Definition: srs.h:711
Krovak_modified_north_orientated_srs()
Definition: srs.h:722
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:884
double m_evaluation_point_ordinate_2
The second ordinate of the evaluation point(EPSG 8618).
Definition: srs.h:699
double m_false_northing
Value added to y-coordinates (EPSG 8807).
Definition: srs.h:695
double m_c5
Coefficient C5 used in polynomial transformation (EPSG 1030).
Definition: srs.h:709
double m_azimuth
The rotation applied to spherical coordinates, measured on the conformal sphere in the plane of the m...
Definition: srs.h:683
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:914
double m_c2
Coefficient C2 used in polynomial transformation (EPSG 1027).
Definition: srs.h:703
double m_c4
Coefficient C4 used in polynomial transformation (EPSG 1029).
Definition: srs.h:707
double m_c7
Coefficient C7 used in polynomial transformation (EPSG 1032).
Definition: srs.h:713
A Krovak Modified projection (EPSG 1042).
Definition: srs.h:585
double m_false_northing
Value added to y-coordinates (EPSG 8807).
Definition: srs.h:609
double m_c2
Coefficient C2 used in polynomial transformation (EPSG 1027).
Definition: srs.h:617
double m_false_easting
Value added to x-coordinates (EPSG 8806).
Definition: srs.h:607
double m_azimuth
The rotation applied to spherical coordinates, measured on the conformal sphere in the plane of the m...
Definition: srs.h:597
double m_c3
Coefficient C3 used in polynomial transformation (EPSG 1028).
Definition: srs.h:619
Krovak_modified_srs()
Definition: srs.h:636
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:663
double m_pseudo_standard_parallel_1
Latitude of the parallel on which the projection is based.
Definition: srs.h:602
double m_scale_factor
The factor by which the map grid is reduced or enlarged at the pseudo-standard parallel (EPSG 8819).
Definition: srs.h:605
double m_c10
Coefficient C10 used in polynomial transformation (EPSG 1035).
Definition: srs.h:633
double m_c5
Coefficient C5 used in polynomial transformation (EPSG 1030).
Definition: srs.h:623
double m_c1
Coefficient C1 used in polynomial transformation (EPSG 1026).
Definition: srs.h:615
double m_c6
Coefficient C6 used in polynomial transformation (EPSG 1031).
Definition: srs.h:625
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:657
double m_evaluation_point_ordinate_2
The second ordinate of the evaluation point(EPSG 8618).
Definition: srs.h:613
double m_c4
Coefficient C4 used in polynomial transformation (EPSG 1029).
Definition: srs.h:621
double m_c8
Coefficient C8 used in polynomial transformation (EPSG 1033).
Definition: srs.h:629
double m_c7
Coefficient C7 used in polynomial transformation (EPSG 1032).
Definition: srs.h:627
double m_longitude_of_center
The meridian along which the northing axis increments and also across which parallels of latitude inc...
Definition: srs.h:593
double m_evaluation_point_ordinate_1
The first ordinate of the evaluation point (EPSG 8617).
Definition: srs.h:611
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:857
double m_latitude_of_center
Latitude of the point at which the azimuth of the central line is defined (EPSG 8811).
Definition: srs.h:589
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:827
double m_c9
Coefficient C9 used in polynomial transformation (EPSG 1034).
Definition: srs.h:631
A Krovak (North Orientated) projection (EPSG 1041).
Definition: srs.h:533
double m_false_easting
Value added to x-coordinates (EPSG 8806).
Definition: srs.h:555
double m_pseudo_standard_parallel_1
Latitude of the parallel on which the projection is based.
Definition: srs.h:550
double m_latitude_of_center
Latitude of the point at which the azimuth of the central line is defined (EPSG 8811).
Definition: srs.h:537
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:575
double m_false_northing
Value added to y-coordinates (EPSG 8807).
Definition: srs.h:557
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:809
double m_azimuth
The rotation applied to spherical coordinates, measured on the conformal sphere in the plane of the m...
Definition: srs.h:545
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:569
double m_scale_factor
The factor by which the map grid is reduced or enlarged at the pseudo-standard parallel (EPSG 8819).
Definition: srs.h:553
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:773
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:791
Krovak_north_orientated_srs()
Definition: srs.h:560
double m_longitude_of_center
The meridian along which the northing axis increments and also across which parallels of latitude inc...
Definition: srs.h:541
A Krovak projection (EPSG 9819).
Definition: srs.h:1527
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:1881
double m_azimuth
The rotation applied to spherical coordinates, measured on the conformal sphere in the plane of the m...
Definition: srs.h:1539
double m_latitude_of_center
Latitude of the point at which the azimuth of the central line is defined (EPSG 8811).
Definition: srs.h:1531
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:1848
double m_false_northing
Value added to y-coordinates (EPSG 8807).
Definition: srs.h:1551
double m_longitude_of_center
The meridian along which the northing axis increments and also across which parallels of latitude inc...
Definition: srs.h:1535
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:1567
double m_false_easting
Value added to x-coordinates (EPSG 8806).
Definition: srs.h:1549
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:1865
double m_scale_factor
The factor by which the map grid is reduced or enlarged at the pseudo-standard parallel (EPSG 8819).
Definition: srs.h:1547
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:1563
Krovak_srs()
Definition: srs.h:1554
double m_pseudo_standard_parallel_1
Latitude of the parallel on which the projection is based.
Definition: srs.h:1544
A Laborde Oblique Mercator projection (EPSG 9813).
Definition: srs.h:1325
double m_longitude_of_center
Longitude of the point at which the azimuth of the central line is defined (EPSG 8812).
Definition: srs.h:1332
double m_false_northing
Value added to y-coordinates (EPSG 8807).
Definition: srs.h:1342
double m_false_easting
Value added to x-coordinates (EPSG 8806).
Definition: srs.h:1340
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:1359
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:1618
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:1353
double m_latitude_of_center
Latitude of the point at which the azimuth of the central line is defined (EPSG 8811).
Definition: srs.h:1329
double m_scale_factor
Multiplier for reducing a distance obtained from a map to the actual distance on the datum of the map...
Definition: srs.h:1338
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:1652
double m_azimuth
Direction east of north of the great circle which is the central line (EPSG 8813).
Definition: srs.h:1335
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:1635
Laborde_oblique_mercator_srs()
Definition: srs.h:1345
A Lambert Azimuthal Equal Area (Spherical) projection (EPSG 1027).
Definition: srs.h:426
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:451
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:667
Lambert_azimuthal_equal_area_spherical_srs()
Definition: srs.h:439
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:652
double m_latitude_of_origin
Latitude chosen as origin of y-coordinates (EPSG 8801).
Definition: srs.h:429
double m_false_northing
Value added to y-coordinates (EPSG 8807).
Definition: srs.h:436
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:445
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:637
double m_longitude_of_origin
Longitude chosen as origin of x-coordinates (central meridian) (EPSG 8802).
Definition: srs.h:432
double m_false_easting
Value added to x-coordinates (EPSG 8806).
Definition: srs.h:434
A Lambert Azimuthal Equal Area projection, alias Lambert Equal Area or LAEA (EPSG 9820).
Definition: srs.h:1578
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:1900
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:1603
double m_longitude_of_origin
Longitude chosen as origin of x-coordinates (central meridian) (EPSG 8802).
Definition: srs.h:1584
double m_false_easting
Value added to x-coordinates (EPSG 8806).
Definition: srs.h:1586
double m_false_northing
Value added to y-coordinates (EPSG 8807).
Definition: srs.h:1588
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:1930
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:1915
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:1597
Lambert_azimuthal_equal_area_srs()
Definition: srs.h:1591
double m_latitude_of_origin
Latitude chosen as origin of y-coordinates (EPSG 8801).
Definition: srs.h:1581
A Lambert Conic Conformal (1SP) projection, alias Lambert Conic Conformal or LCC (EPSG 9801).
Definition: srs.h:843
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:866
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:872
double m_latitude_of_origin
Latitude chosen as origin of y-coordinates (EPSG 8801).
Definition: srs.h:846
double m_scale_factor
Multiplier for reducing a distance obtained from a map to the actual distance on the datum of the map...
Definition: srs.h:852
double m_false_northing
Value added to y-coordinates (EPSG 8807).
Definition: srs.h:856
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:1075
double m_false_easting
Value added to x-coordinates (EPSG 8806).
Definition: srs.h:854
Lambert_conic_conformal_1sp_srs()
Definition: srs.h:859
double m_longitude_of_origin
Longitude chosen as origin of x-coordinates (central meridian) (EPSG 8802).
Definition: srs.h:849
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:1043
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:1059
A Lambert Conic Conformal (2SP Belgium) projection (EPSG 9803).
Definition: srs.h:927
double m_standard_parallel_2
Latitude of the second parallel of intersection between the cone and the ellipsoid (EPSG 8824).
Definition: srs.h:940
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:1160
Lambert_conic_conformal_2sp_belgium_srs()
Definition: srs.h:947
double m_false_northing
Northing value assigned to the false origin (EPSG 8827).
Definition: srs.h:944
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:1143
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:1177
double m_latitude_of_origin
Latitude of the false origin, at which the false easting and northing is defined (EPSG 8821).
Definition: srs.h:931
double m_false_easting
Easting value assigned to the false origin (EPSG 8826).
Definition: srs.h:942
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:961
double m_standard_parallel_1
Latitude of the first parallel of intersection between the cone and the ellipsoid (EPSG 8823).
Definition: srs.h:937
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:955
double m_longitude_of_origin
Longitude (central meridian) of the false origin, at which the false easting and northing is defined ...
Definition: srs.h:934
A Lambert Conic Conformal (2SP Michigan) projection (EPSG 1051).
Definition: srs.h:757
double m_standard_parallel_1
Latitude of the first parallel of intersection between the cone and the ellipsoid (EPSG 8823).
Definition: srs.h:767
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:940
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:958
double m_standard_parallel_2
Latitude of the second parallel of intersection between the cone and the ellipsoid (EPSG 8824).
Definition: srs.h:770
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:794
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:788
double m_false_easting
Easting value assigned to the false origin (EPSG 8826).
Definition: srs.h:772
double m_longitude_of_origin
Longitude (central meridian) of the false origin, at which the false easting and northing is defined ...
Definition: srs.h:764
Lambert_conic_conformal_2sp_michigan_srs()
Definition: srs.h:779
double m_false_northing
Northing value assigned to the false origin (EPSG 8827).
Definition: srs.h:774
double m_ellipsoid_scale_factor
Ellipsoid scaling factor (EPSG 1038).
Definition: srs.h:776
double m_latitude_of_origin
Latitude of the false origin, at which the false easting and northing is defined (EPSG 8821).
Definition: srs.h:761
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:976
A Lambert Conic Conformal (2SP) projection, alias Lambert Conic Conformal or LCC (EPSG 9802).
Definition: srs.h:883
double m_false_easting
Easting value assigned to the false origin (EPSG 8826).
Definition: srs.h:898
Lambert_conic_conformal_2sp_srs()
Definition: srs.h:903
double m_standard_parallel_1
Latitude of the first parallel of intersection between the cone and the ellipsoid (EPSG 8823).
Definition: srs.h:893
double m_standard_parallel_2
Latitude of the second parallel of intersection between the cone and the ellipsoid (EPSG 8824).
Definition: srs.h:896
double m_false_northing
Northing value assigned to the false origin (EPSG 8827).
Definition: srs.h:900
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:917
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:1126
double m_latitude_of_origin
Latitude of the false origin, at which the false easting and northing is defined (EPSG 8821).
Definition: srs.h:887
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:1092
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:1109
double m_longitude_of_origin
Longitude (central meridian) of the false origin, at which the false easting and northing is defined ...
Definition: srs.h:890
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:911
A Lambert Conic Conformal (West Orientated) projection (EPSG 9826).
Definition: srs.h:1699
Lambert_conic_conformal_west_orientated_srs()
Definition: srs.h:1715
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:1728
double m_scale_factor
Multiplier for reducing a distance obtained from a map to the actual distance on the datum of the map...
Definition: srs.h:1708
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:1722
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:2067
double m_longitude_of_origin
Longitude chosen as origin of x-coordinates (central meridian) (EPSG 8802).
Definition: srs.h:1705
double m_latitude_of_origin
Latitude chosen as origin of y-coordinates (EPSG 8801).
Definition: srs.h:1702
double m_false_easting
Value added to x-coordinates (EPSG 8806).
Definition: srs.h:1710
double m_false_northing
Value added to y-coordinates (EPSG 8807).
Definition: srs.h:1712
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:2051
A Lambert Conic Near-Conformal projection (EPSG 9817).
Definition: srs.h:1453
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:1786
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:1476
double m_false_northing
Value added to y-coordinates (EPSG 8807).
Definition: srs.h:1466
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:1754
Lambert_conic_near_conformal_srs()
Definition: srs.h:1469
double m_false_easting
Value added to x-coordinates (EPSG 8806).
Definition: srs.h:1464
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:1770
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:1482
double m_latitude_of_origin
Latitude chosen as origin of y-coordinates (EPSG 8801).
Definition: srs.h:1456
double m_longitude_of_origin
Longitude chosen as origin of x-coordinates (central meridian) (EPSG 8802).
Definition: srs.h:1459
double m_scale_factor
Multiplier for reducing a distance obtained from a map to the actual distance on the datum of the map...
Definition: srs.h:1462
A Lambert Cylindrical Equal Area (Spherical) projection (EPSG 9834).
Definition: srs.h:1951
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:1977
double m_false_northing
Value added to y-coordinates (EPSG 8807).
Definition: srs.h:1962
Lambert_cylindrical_equal_area_spherical_srs()
Definition: srs.h:1965
double m_false_easting
Value added to x-coordinates (EPSG 8806).
Definition: srs.h:1960
double m_longitude_of_origin
Longitude chosen as origin of x-coordinates (central meridian) (EPSG 8802).
Definition: srs.h:1958
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:2383
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:2353
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:1971
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:2368
double m_standard_parallel_1
Latitude of the first parallel of intersection between the cone and the ellipsoid (EPSG 8823).
Definition: srs.h:1955
A Lambert Cylindrical Equal Area projection (EPSG 9835).
Definition: srs.h:1987
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:2414
Lambert_cylindrical_equal_area_srs()
Definition: srs.h:2001
double m_false_easting
Value added to x-coordinates (EPSG 8806).
Definition: srs.h:1996
double m_longitude_of_origin
Longitude chosen as origin of x-coordinates (central meridian) (EPSG 8802).
Definition: srs.h:1994
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:2399
double m_false_northing
Value added to y-coordinates (EPSG 8807).
Definition: srs.h:1998
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:2429
double m_standard_parallel_1
Latitude of the first parallel of intersection between the cone and the ellipsoid (EPSG 8823).
Definition: srs.h:1991
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:2007
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:2013
A Mercator (variant A) projection, alias Mercator (EPSG 9804).
Definition: srs.h:971
double m_latitude_of_origin
Latitude chosen as origin of y-coordinates (EPSG 8801).
Definition: srs.h:974
double m_false_northing
Value added to y-coordinates (EPSG 8807).
Definition: srs.h:984
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:1210
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:994
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:1194
double m_false_easting
Value added to x-coordinates (EPSG 8806).
Definition: srs.h:982
Mercator_variant_a_srs()
Definition: srs.h:987
double m_longitude_of_origin
Longitude chosen as origin of x-coordinates (central meridian) (EPSG 8802).
Definition: srs.h:977
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:1000
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:1226
double m_scale_factor
Multiplier for reducing a distance obtained from a map to the actual distance on the datum of the map...
Definition: srs.h:980
A Mercator (variant B) projection, alias Mercator (EPSG 9805).
Definition: srs.h:1010
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:1242
double m_standard_parallel_1
Latitude of the first parallel of intersection between the cone and the ellipsoid (EPSG 8823).
Definition: srs.h:1014
double m_false_easting
Value added to x-coordinates (EPSG 8806).
Definition: srs.h:1019
double m_longitude_of_origin
Longitude chosen as origin of x-coordinates (central meridian) (EPSG 8802).
Definition: srs.h:1017
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:1257
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:1036
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:1272
double m_false_northing
Value added to y-coordinates (EPSG 8807).
Definition: srs.h:1021
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:1030
Mercator_variant_b_srs()
Definition: srs.h:1024
A Modified Azimuthal Equidistant projection (EPSG 9832).
Definition: srs.h:1880
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:1905
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:2293
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:1899
double m_longitude_of_origin
Longitude chosen as origin of x-coordinates (central meridian) (EPSG 8802).
Definition: srs.h:1886
Modified_azimuthal_equidistant_srs()
Definition: srs.h:1893
double m_false_northing
Value added to y-coordinates (EPSG 8807).
Definition: srs.h:1890
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:2263
double m_false_easting
Value added to x-coordinates (EPSG 8806).
Definition: srs.h:1888
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:2278
double m_latitude_of_origin
Latitude chosen as origin of y-coordinates (EPSG 8801).
Definition: srs.h:1883
A New Zealand Map Grid projection (EPSG 9811).
Definition: srs.h:1240
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:1265
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:1524
double m_longitude_of_origin
Longitude chosen as origin of x-coordinates (central meridian) (EPSG 8802).
Definition: srs.h:1246
New_zealand_map_grid_srs()
Definition: srs.h:1253
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:1259
double m_false_northing
Value added to y-coordinates (EPSG 8807).
Definition: srs.h:1250
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:1539
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:1554
double m_latitude_of_origin
Latitude chosen as origin of y-coordinates (EPSG 8801).
Definition: srs.h:1243
double m_false_easting
Value added to x-coordinates (EPSG 8806).
Definition: srs.h:1248
An Oblique stereographic projection, alias Double stereographic (EPSG 9809).
Definition: srs.h:1162
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:1444
double m_false_northing
Value added to y-coordinates (EPSG 8807).
Definition: srs.h:1175
double m_false_easting
Value added to x-coordinates (EPSG 8806).
Definition: srs.h:1173
double m_scale_factor
Multiplier for reducing a distance obtained from a map to the actual distance on the datum of the map...
Definition: srs.h:1171
double m_longitude_of_origin
Longitude chosen as origin of x-coordinates (central meridian) (EPSG 8802).
Definition: srs.h:1168
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:1428
Oblique_stereographic_srs()
Definition: srs.h:1178
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:1185
double m_latitude_of_origin
Latitude chosen as origin of y-coordinates (EPSG 8801).
Definition: srs.h:1165
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:1460
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:1191
A Polar Stereographic (variant A) projection (EPSG 9810).
Definition: srs.h:1201
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:1508
double m_longitude_of_origin
Longitude chosen as origin of x-coordinates (central meridian) (EPSG 8802).
Definition: srs.h:1207
double m_latitude_of_origin
Latitude chosen as origin of y-coordinates (EPSG 8801).
Definition: srs.h:1204
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:1492
double m_scale_factor
Multiplier for reducing a distance obtained from a map to the actual distance on the datum of the map...
Definition: srs.h:1210
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:1224
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:1476
Polar_stereographic_variant_a_srs()
Definition: srs.h:1217
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:1230
double m_false_easting
Value added to x-coordinates (EPSG 8806).
Definition: srs.h:1212
double m_false_northing
Value added to y-coordinates (EPSG 8807).
Definition: srs.h:1214
A Polar Stereographic (variant B) projection (EPSG 9829).
Definition: srs.h:1771
double m_false_easting
Value added to x-coordinates (EPSG 8806).
Definition: srs.h:1781
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:2158
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:1798
double m_longitude_of_origin
The meridian along which the northing axis increments and also across which parallels of latitude inc...
Definition: srs.h:1779
Polar_stereographic_variant_b_srs()
Definition: srs.h:1786
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:1792
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:2128
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:2143
double m_false_northing
Value added to y-coordinates (EPSG 8807).
Definition: srs.h:1783
double m_standard_parallel
The parallel on which the scale factor is defined to be unity (EPSG 8832).
Definition: srs.h:1775
A Polar Stereographic (variant C) projection (EPSG 9830).
Definition: srs.h:1808
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:1835
double m_longitude_of_origin
The meridian along which the northing axis increments and also across which parallels of latitude inc...
Definition: srs.h:1816
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:2203
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:2188
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:1829
double m_false_northing
Northing value assigned to the false origin (EPSG 8827).
Definition: srs.h:1820
double m_standard_parallel
The parallel on which the scale factor is defined to be unity (EPSG 8832).
Definition: srs.h:1812
double m_false_easting
Easting value assigned to the false origin (EPSG 8826).
Definition: srs.h:1818
Polar_stereographic_variant_c_srs()
Definition: srs.h:1823
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:2173
A Popular Visualisation Pseudo Mercator projection (EPSG 1024).
Definition: srs.h:391
double m_false_northing
Value added to y-coordinates (EPSG 8807).
Definition: srs.h:401
double m_false_easting
Value added to x-coordinates (EPSG 8806).
Definition: srs.h:399
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:587
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:416
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:605
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:620
Popular_visualisation_pseudo_mercator_srs()
Definition: srs.h:404
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:410
double m_latitude_of_origin
Latitude chosen as origin of y-coordinates (EPSG 8801).
Definition: srs.h:394
double m_longitude_of_origin
Longitude chosen as origin of x-coordinates (central meridian) (EPSG 8802).
Definition: srs.h:397
A projected spatial reference system.
Definition: srs.h:289
Axis_direction axis_direction(const int axis) const override
Retrieve the axis direction of the spatial reference system.
Definition: srs.h:340
bool has_towgs84() const override
Checks if this SRS has valid Bursa Wolf parameters.
Definition: srs.h:354
double angular_unit() const override
Retrieve the angular unit relative to radians.
Definition: srs.h:346
bool is_wgs84_based() const override
Checks if this SRS is WGS 84 or a projection based on WGS 84.
Definition: srs.h:356
Srs_type srs_type() const override
Get the type of spatial reference system: projected, geometric, etc.
Definition: srs.h:320
double m_linear_unit
Converson factor for the linar unit relative to meters.
Definition: srs.h:294
bool common_proj_parameters_can_be_modified_to(const Spatial_reference_system &srs) const
Checks if the parameters that are common to all projections can safely be modified to another SRS wit...
Definition: srs.cc:495
std::string partial_proj4_parameters() const
Definition: srs.h:360
Axis_direction m_axes[2]
Direction of x and y axis, respectively.
Definition: srs.h:296
Geographic_srs m_geographic_srs
The geographic SRS this SRS is projected from.
Definition: srs.h:292
double prime_meridian() const override
Retrieve the prime meridian relative to Greenwich.
Definition: srs.h:350
Projected_srs()
Definition: srs.h:316
double linear_unit() const override
Retrieve how long the unit of the spatial reference system is in meters.
Definition: srs.h:345
virtual Projection_type projection_type() const =0
Get the map projection method.
virtual bool init(srid_t srid, wkt_parser::Projected_cs *p)
Initialize from parse tree.
Definition: srs.cc:559
Superclass for all spatial reference systems.
Definition: srs.h:95
virtual Srs_type srs_type() const =0
Get the type of spatial reference system: projected, geometric, etc.
virtual bool is_wgs84_based() const =0
Checks if this SRS is WGS 84 or a projection based on WGS 84.
virtual double prime_meridian() const =0
Retrieve the prime meridian relative to Greenwich.
virtual bool has_towgs84() const =0
Checks if this SRS has valid Bursa Wolf parameters.
virtual bool can_be_modified_to(const Spatial_reference_system &srs) const =0
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
virtual double linear_unit() const =0
Retrieve how long the unit of the spatial reference system is in meters.
Spatial_reference_system(Spatial_reference_system &&)=default
virtual double angular_unit() const =0
Retrieve the angular unit relative to radians.
Spatial_reference_system(const Spatial_reference_system &)=default
virtual Axis_direction axis_direction(const int axis) const =0
Retrieve the axis direction of the spatial reference system.
virtual ~Spatial_reference_system()=default
virtual std::string proj4_parameters() const
Retrieve the proj4 parameter string.
Definition: srs.h:189
virtual Spatial_reference_system * clone()=0
Clone the object.
A Transverse Mercator (South Orientated) projection, alias Gauss-Conform (EPSG 9808).
Definition: srs.h:1122
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:1396
Transverse_mercator_south_orientated_srs()
Definition: srs.h:1138
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:1151
double m_longitude_of_origin
Longitude chosen as origin of x-coordinates (central meridian) (EPSG 8802).
Definition: srs.h:1128
double m_latitude_of_origin
Latitude chosen as origin of y-coordinates (EPSG 8801).
Definition: srs.h:1125
double m_false_easting
Value added to x-coordinates (EPSG 8806).
Definition: srs.h:1133
double m_false_northing
Value added to y-coordinates (EPSG 8807).
Definition: srs.h:1135
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:1412
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:1145
double m_scale_factor
Multiplier for reducing a distance obtained from a map to the actual distance on the datum of the map...
Definition: srs.h:1131
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:1380
A Transverse Mercator projection, alias Gauss-Boaga, Gauss-Krüger or TM (EPSG 9807).
Definition: srs.h:1082
double m_scale_factor
Multiplier for reducing a distance obtained from a map to the actual distance on the datum of the map...
Definition: srs.h:1091
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:1348
double m_false_northing
Value added to y-coordinates (EPSG 8807).
Definition: srs.h:1095
double m_longitude_of_origin
Longitude chosen as origin of x-coordinates (central meridian) (EPSG 8802).
Definition: srs.h:1088
Transverse_mercator_srs()
Definition: srs.h:1098
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:1111
double m_false_easting
Value added to x-coordinates (EPSG 8806).
Definition: srs.h:1093
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:1332
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:1105
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:1364
double m_latitude_of_origin
Latitude chosen as origin of y-coordinates (EPSG 8801).
Definition: srs.h:1085
A Transverse Mercator Zoned Grid System projection (EPSG 9824).
Definition: srs.h:1657
double m_false_easting
Value added to x-coordinates (EPSG 8806).
Definition: srs.h:1670
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:1689
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:2013
Transverse_mercator_zoned_grid_system_srs()
Definition: srs.h:1675
double m_latitude_of_origin
Latitude chosen as origin of y-coordinates (EPSG 8801).
Definition: srs.h:1660
double m_zone_width
The longitude width of a zone (EPSG 8831).
Definition: srs.h:1665
double m_initial_longitude
The longitude of the western limit of the first zone (EPSG 8830).
Definition: srs.h:1663
double m_scale_factor
Multiplier for reducing a distance obtained from a map to the actual distance on the datum of the map...
Definition: srs.h:1668
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:1683
std::string proj4_parameters() const override
Retrieve the proj4 parameter string.
Definition: srs.cc:2030
double m_false_northing
Value added to y-coordinates (EPSG 8807).
Definition: srs.h:1672
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:1996
A Tunisia Mining Grid projection (EPSG 9816).
Definition: srs.h:1419
double m_longitude_of_origin
Longitude (central meridian) of the false origin, at which the false easting and northing is defined ...
Definition: srs.h:1426
Tunisia_mining_grid_srs()
Definition: srs.h:1433
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:1439
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:1445
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.cc:1739
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:1724
double m_false_northing
Northing value assigned to the false origin (EPSG 8827).
Definition: srs.h:1430
double m_latitude_of_origin
Latitude of the false origin, at which the false easting and northing is defined (EPSG 8821).
Definition: srs.h:1423
double m_false_easting
Easting value assigned to the false origin (EPSG 8826).
Definition: srs.h:1428
A projected SRS of an unknown projection type.
Definition: srs.h:372
Projection_type projection_type() const override
Get the map projection method.
Definition: srs.h:380
bool can_be_modified_to(const Spatial_reference_system &) const override
Checks if this SRS can be changed to another SRS without causing computational incompatibilities.
Definition: srs.h:384
bool init(srid_t srid, wkt_parser::Projected_cs *p) override
Initialize from parse tree.
Definition: srs.cc:582
Spatial_reference_system * clone() override
Clone the object.
Definition: srs.h:374
const char * p
Definition: ctype-mb.cc:1234
static std::string to_string(const LEX_STRING &str)
Definition: lex_string.h:49
void * begin(THD *thd, const TABLE *table, size_t data_size, size_t memory, size_t num_threads) noexcept
Definition: bulk_data_service.cc:1533
bool parse_wkt(srid_t srid, const char *begin, const char *end, Spatial_reference_system **result)
Parse an SRS definition WKT string.
Definition: srs.cc:2596
Projection_type
Projection method. Values are EPSG codes.
Definition: srs.h:41
Axis_direction
Coordinate axis direction.
Definition: srs.h:85
Srs_type
Spatial reference system type.
Definition: srs.h:38
Definition: area.cc:46
std::uint32_t srid_t
A spatial reference system ID (SRID).
Definition: srid.h:32
Definition: wkt_parser.h:117
Definition: wkt_parser.h:141
Definition: result.h:29