|
2 | 2 |
|
3 | 3 | #include <osmium/geom/factory.hpp> |
4 | 4 | #include <osmium/geom/mercator_projection.hpp> |
5 | | -#include <osmium/geom/projection.hpp> |
6 | 5 |
|
7 | 6 | TEST_CASE("Indentity Projection") { |
8 | 7 | const osmium::geom::IdentityProjection projection; |
9 | 8 | REQUIRE(4326 == projection.epsg()); |
10 | 9 | REQUIRE("+proj=longlat +datum=WGS84 +no_defs" == projection.proj_string()); |
11 | 10 | } |
12 | 11 |
|
13 | | -TEST_CASE("Projection 4326") { |
14 | | - const osmium::geom::Projection projection{4326}; |
15 | | - REQUIRE(4326 == projection.epsg()); |
16 | | - REQUIRE("+init=epsg:4326" == projection.proj_string()); |
17 | | - |
18 | | - const osmium::Location loc{1.0, 2.0}; |
19 | | - const osmium::geom::Coordinates c{1.0, 2.0}; |
20 | | - REQUIRE(projection(loc).x == Approx(c.x).epsilon(0.00001)); |
21 | | - REQUIRE(projection(loc).y == Approx(c.y).epsilon(0.00001)); |
22 | | -} |
23 | | - |
24 | | -TEST_CASE("Projection 4326 from init string") { |
25 | | - const osmium::geom::Projection projection{"+init=epsg:4326"}; |
26 | | - REQUIRE(-1 == projection.epsg()); |
27 | | - REQUIRE("+init=epsg:4326" == projection.proj_string()); |
28 | | - |
29 | | - const osmium::Location loc{1.0, 2.0}; |
30 | | - const osmium::geom::Coordinates c{1.0, 2.0}; |
31 | | - REQUIRE(projection(loc).x == Approx(c.x).epsilon(0.00001)); |
32 | | - REQUIRE(projection(loc).y == Approx(c.y).epsilon(0.00001)); |
33 | | -} |
34 | | - |
35 | | -TEST_CASE("Creating projection from unknown init string") { |
36 | | - REQUIRE_THROWS_AS(osmium::geom::Projection{"abc"}, osmium::projection_error); |
37 | | -} |
38 | | - |
39 | | -TEST_CASE("Creating projection from unknown EPSG code") { |
40 | | - REQUIRE_THROWS_AS(osmium::geom::Projection{9999999}, osmium::projection_error); |
41 | | -} |
42 | | - |
43 | | -TEST_CASE("Projection 3857") { |
44 | | - const osmium::geom::Projection projection{3857}; |
45 | | - REQUIRE(3857 == projection.epsg()); |
46 | | - REQUIRE("+init=epsg:3857" == projection.proj_string()); |
47 | | - |
48 | | - SECTION("Zero coordinates") { |
49 | | - const osmium::Location loc{0.0, 0.0}; |
50 | | - const osmium::geom::Coordinates c{0.0, 0.0}; |
51 | | - REQUIRE(projection(loc).x == Approx(c.x).epsilon(0.00001)); |
52 | | - REQUIRE(projection(loc).y == Approx(c.y).epsilon(0.00001)); |
53 | | - } |
54 | | - |
55 | | - SECTION("Max longitude") { |
56 | | - const osmium::Location loc{180.0, 0.0}; |
57 | | - const osmium::geom::Coordinates c{20037508.34, 0.0}; |
58 | | - REQUIRE(projection(loc).x == Approx(c.x).epsilon(0.00001)); |
59 | | - REQUIRE(projection(loc).y == Approx(c.y).epsilon(0.00001)); |
60 | | - } |
61 | | - |
62 | | - SECTION("Min longitude") { |
63 | | - const osmium::Location loc{-180.0, 0.0}; |
64 | | - const osmium::geom::Coordinates c{-20037508.34, 0.0}; |
65 | | - REQUIRE(projection(loc).x == Approx(c.x).epsilon(0.00001)); |
66 | | - REQUIRE(projection(loc).y == Approx(c.y).epsilon(0.00001)); |
67 | | - } |
68 | | - |
69 | | - SECTION("Max latitude") { |
70 | | - const osmium::Location loc{0.0, 85.0511288}; |
71 | | - const osmium::geom::Coordinates c{0.0, 20037508.34}; |
72 | | - REQUIRE(projection(loc).x == Approx(c.x).epsilon(0.00001)); |
73 | | - REQUIRE(projection(loc).y == Approx(c.y).epsilon(0.00001)); |
74 | | - } |
75 | | -} |
76 | | - |
77 | 12 | TEST_CASE("MercatorProjection: Zero coordinates") { |
78 | 13 | const osmium::geom::MercatorProjection projection; |
79 | 14 | const osmium::Location loc{0.0, 0.0}; |
|
0 commit comments