|
1 | 1 | #include "proj.hpp"
|
2 |
| -#include <boost/geometry/srs/projections/epsg.hpp> |
3 | 2 |
|
4 | 3 | namespace ngen {
|
5 | 4 | namespace srs {
|
6 | 5 |
|
7 |
| -const epsg::srs_type epsg::epsg5070_ = |
8 |
| - epsg::srs_type(bg::srs::dpar::proj_aea) |
9 |
| - (bg::srs::dpar::ellps_grs80) |
10 |
| - (bg::srs::dpar::towgs84, {0,0,0,0,0,0,0}) |
11 |
| - (bg::srs::dpar::lat_0, 23) |
12 |
| - (bg::srs::dpar::lon_0, -96) |
13 |
| - (bg::srs::dpar::lat_1, 29.5) |
14 |
| - (bg::srs::dpar::lat_2, 45.5) |
15 |
| - (bg::srs::dpar::x_0, 0) |
16 |
| - (bg::srs::dpar::y_0, 0); |
17 |
| - |
18 |
| -const epsg::srs_type epsg::epsg3857_ = |
19 |
| - epsg::srs_type(bg::srs::dpar::proj_merc) |
20 |
| - (bg::srs::dpar::units_m) |
21 |
| - (bg::srs::dpar::no_defs) |
22 |
| - (bg::srs::dpar::a, 6378137) |
23 |
| - (bg::srs::dpar::b, 6378137) |
24 |
| - (bg::srs::dpar::lat_ts, 0) |
25 |
| - (bg::srs::dpar::lon_0, 0) |
26 |
| - (bg::srs::dpar::x_0, 0) |
27 |
| - (bg::srs::dpar::y_0, 0) |
28 |
| - (bg::srs::dpar::k, 1); |
| 6 | +const epsg::def_type epsg::defs_ = { |
| 7 | + {4326, epsg::srs_type(bg::srs::dpar::proj_longlat)(bg::srs::dpar::ellps_wgs84)(bg::srs::dpar::datum_wgs84)(bg::srs::dpar::no_defs)}, |
| 8 | + {5070, epsg::srs_type(bg::srs::dpar::proj_aea)(bg::srs::dpar::ellps_grs80)(bg::srs::dpar::towgs84, {0,0,0,0,0,0,0})(bg::srs::dpar::lat_0, 23)(bg::srs::dpar::lon_0, -96)(bg::srs::dpar::lat_1, 29.5)(bg::srs::dpar::lat_2, 45.5)(bg::srs::dpar::x_0, 0)(bg::srs::dpar::y_0, 0)}, |
| 9 | + {3857, epsg::srs_type(bg::srs::dpar::proj_merc)(bg::srs::dpar::units_m)(bg::srs::dpar::no_defs)(bg::srs::dpar::a, 6378137)(bg::srs::dpar::b, 6378137)(bg::srs::dpar::lat_ts, 0)(bg::srs::dpar::lon_0, 0)(bg::srs::dpar::x_0, 0)(bg::srs::dpar::y_0, 0)(bg::srs::dpar::k, 1)} |
| 10 | +}; |
29 | 11 |
|
30 | 12 | auto epsg::get(uint32_t srid) -> srs_type
|
31 | 13 | {
|
32 |
| - switch (srid) { |
33 |
| - case 5070: |
34 |
| - return epsg5070_; |
35 |
| - case 3857: |
36 |
| - return epsg3857_; |
37 |
| - default: |
38 |
| - return bg::projections::detail::epsg_to_parameters(srid); |
| 14 | + |
| 15 | + if (defs_.count(srid) == 0) { |
| 16 | + throw std::runtime_error("SRID " + std::to_string(srid) + " is not supported. Project the input data to EPSG:5070 or EPSG:4326."); |
39 | 17 | }
|
| 18 | + |
| 19 | + return defs_.at(srid); |
40 | 20 | }
|
41 | 21 |
|
42 | 22 | } // namespace srs
|
|
0 commit comments