srid_traits.hpp 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. // Boost.Geometry
  2. // Copyright (c) 2017, Oracle and/or its affiliates.
  3. // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
  4. // Use, modification and distribution is subject to the Boost Software License,
  5. // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  6. // http://www.boost.org/LICENSE_1_0.txt)
  7. #ifndef BOOST_GEOMETRY_PROJECTIONS_SRID_TRAITS_HPP
  8. #define BOOST_GEOMETRY_PROJECTIONS_SRID_TRAITS_HPP
  9. #include <boost/geometry/srs/projections/par4.hpp>
  10. #include <boost/geometry/srs/projections/proj4.hpp>
  11. #include <boost/geometry/srs/sphere.hpp>
  12. #include <boost/geometry/srs/spheroid.hpp>
  13. #define BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(AUTH, CODE, PROJ, ELLPS, DATUM, PROJ4_STR) \
  14. template<> \
  15. struct AUTH##_traits<CODE> \
  16. { \
  17. typedef srs::static_proj4 \
  18. < \
  19. srs::par4::proj<srs::par4::PROJ>, \
  20. srs::par4::ellps<srs::par4::ELLPS>, \
  21. srs::par4::datum<srs::par4::DATUM> \
  22. > static_parameters_type; \
  23. static inline static_parameters_type s_par() \
  24. { \
  25. return static_parameters_type(); \
  26. } \
  27. static inline srs::proj4 par() \
  28. { \
  29. return srs::proj4(PROJ4_STR); \
  30. } \
  31. }; \
  32. #define BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E(AUTH, CODE, PROJ, ELLPS, PROJ4_STR) \
  33. template<> \
  34. struct AUTH##_traits<CODE> \
  35. { \
  36. typedef srs::static_proj4 \
  37. < \
  38. srs::par4::proj<srs::par4::PROJ>, \
  39. srs::par4::ellps<srs::par4::ELLPS> \
  40. > static_parameters_type; \
  41. static inline static_parameters_type s_par() \
  42. { \
  43. return static_parameters_type(); \
  44. } \
  45. static inline srs::proj4 par() \
  46. { \
  47. return srs::proj4(PROJ4_STR); \
  48. } \
  49. }; \
  50. #define BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(AUTH, CODE, PROJ, A, B, PROJ4_STR) \
  51. template<> \
  52. struct AUTH##_traits<CODE> \
  53. { \
  54. typedef srs::static_proj4 \
  55. < \
  56. srs::par4::proj<srs::par4::PROJ>, \
  57. srs::par4::ellps<srs::spheroid<double> > \
  58. > static_parameters_type; \
  59. static inline static_parameters_type s_par() \
  60. { \
  61. return static_parameters_type(srs::par4::proj<srs::par4::PROJ>(), \
  62. srs::par4::ellps<srs::spheroid<double> >(srs::spheroid<double>(A, B))); \
  63. } \
  64. static inline srs::proj4 par() \
  65. { \
  66. return srs::proj4(PROJ4_STR); \
  67. } \
  68. }; \
  69. #define BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S(AUTH, CODE, PROJ, R, PROJ4_STR) \
  70. template<> \
  71. struct AUTH##_traits<CODE> \
  72. { \
  73. typedef srs::static_proj4 \
  74. < \
  75. srs::par4::proj<srs::par4::PROJ>, \
  76. srs::par4::ellps<srs::sphere<double> > \
  77. > static_parameters_type; \
  78. static inline static_parameters_type s_par() \
  79. { \
  80. return static_parameters_type(srs::par4::proj<srs::par4::PROJ>(), \
  81. srs::par4::ellps<srs::sphere<double> >(srs::sphere<double>(R))); \
  82. } \
  83. static inline srs::proj4 par() \
  84. { \
  85. return srs::proj4(PROJ4_STR); \
  86. } \
  87. }; \
  88. #endif // BOOST_GEOMETRY_PROJECTIONS_SRID_TRAITS_HPP