123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- #ifndef BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_DATUMS_HPP
- #define BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_DATUMS_HPP
- #include <boost/geometry/srs/projections/par_data.hpp>
- #include <boost/geometry/srs/projections/dpar.hpp>
- #include <string>
- namespace boost { namespace geometry { namespace projections {
- namespace detail {
- template <typename T>
- struct pj_datums_type
- {
- std::string id;
-
-
-
-
- srs::detail::nadgrids nadgrids;
- srs::detail::towgs84<T> towgs84;
- srs::dpar::value_ellps ellps;
- };
- struct pj_prime_meridians_type
- {
- std::string id;
-
- double deg;
- };
- inline double dms2d(double d, double m, double s, bool east)
- {
- return (east ? 1 : -1) * (d + m / 60.0 + s / 3600.0);
- }
- template <typename T>
- inline std::pair<const pj_datums_type<T>*, int> pj_get_datums()
- {
- static const pj_datums_type<T> pj_datums[] =
- {
- {"WGS84",
-
- srs::detail::nadgrids(),
- srs::detail::towgs84<T>(0,0,0),
- srs::dpar::ellps_wgs84},
- {"GGRS87",
-
- srs::detail::nadgrids(),
- srs::detail::towgs84<T>(-199.87,74.79,246.62),
- srs::dpar::ellps_grs80},
- {"NAD83",
-
- srs::detail::nadgrids(),
- srs::detail::towgs84<T>(0,0,0),
- srs::dpar::ellps_grs80},
- {"NAD27",
-
- srs::detail::nadgrids("@conus","@alaska","@ntv2_0.gsb","@ntv1_can.dat"),
- srs::detail::towgs84<T>(),
- srs::dpar::ellps_clrk66},
- {"potsdam",
-
- srs::detail::nadgrids(),
- srs::detail::towgs84<T>(598.1,73.7,418.2,0.202,0.045,-2.455,6.7),
- srs::dpar::ellps_bessel},
- {"carthage",
-
- srs::detail::nadgrids(),
- srs::detail::towgs84<T>(-263.0,6.0,431.0),
- srs::dpar::ellps_clrk80ign},
- {"hermannskogel",
-
- srs::detail::nadgrids(),
- srs::detail::towgs84<T>(577.326,90.129,463.919,5.137,1.474,5.297,2.4232),
- srs::dpar::ellps_bessel},
- {"ire65",
-
- srs::detail::nadgrids(),
- srs::detail::towgs84<T>(482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15),
- srs::dpar::ellps_mod_airy},
- {"nzgd49",
-
- srs::detail::nadgrids(),
- srs::detail::towgs84<T>(59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993),
- srs::dpar::ellps_intl},
- {"OSGB36",
-
- srs::detail::nadgrids(),
- srs::detail::towgs84<T>(446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894),
- srs::dpar::ellps_airy}
- };
- return std::make_pair(pj_datums, (int)(sizeof(pj_datums) / sizeof(pj_datums[0])));
- }
- static const pj_prime_meridians_type pj_prime_meridians[] =
- {
-
-
- { "greenwich", 0 },
- { "lisbon", dms2d( 9, 7,54.862,false) },
- { "paris", dms2d( 2,20,14.025,true) },
- { "bogota", dms2d( 74, 4,51.3, false) },
- { "madrid", dms2d( 3,41,16.58, false) },
- { "rome", dms2d( 12,27, 8.4, true) },
- { "bern", dms2d( 7,26,22.5, true) },
- { "jakarta", dms2d(106,48,27.79, true) },
- { "ferro", dms2d( 17,40, 0, false) },
- { "brussels", dms2d( 4,22,4.71, true) },
- { "stockholm", dms2d( 18, 3,29.8, true) },
- { "athens", dms2d( 23,42,58.815,true) },
- { "oslo", dms2d( 10,43,22.5, true) }
- };
- }
- }}}
- #endif
|