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