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