proj_transform: add test for strided coordinate array
This commit is contained in:
parent
f84191204e
commit
1e6feecb91
1 changed files with 69 additions and 0 deletions
|
@ -195,4 +195,73 @@ SECTION("Test proj antimeridian bbox")
|
|||
}
|
||||
}
|
||||
|
||||
SECTION("proj_transform of coordinate arrays with stride > 1")
|
||||
{
|
||||
mapnik::projection const proj_4326("+init=epsg:4326");
|
||||
mapnik::projection const proj_3857("+init=epsg:3857");
|
||||
mapnik::projection const proj_2193("+init=epsg:2193");
|
||||
|
||||
SECTION("lonlat <-> Web Mercator")
|
||||
{
|
||||
// cs2cs -Ef %.10f +init=epsg:4326 +to +init=epsg:3857 <<END
|
||||
// 170.142139 -43.595056
|
||||
// 175.566667 -39.283333
|
||||
// END
|
||||
//
|
||||
// 170.142139 -43.595056 18940136.2759583741 -5402988.5324898539
|
||||
// 175.566667 -39.283333 19543991.9707122259 -4762338.2380718365
|
||||
//
|
||||
mapnik::geometry::point<double> points[] = {{ 170.142139, -43.595056 },
|
||||
{ 175.566667, -39.283333 }};
|
||||
// this transform is calculated by Mapnik (well_known_srs.cpp)
|
||||
mapnik::proj_transform lonlat_to_webmerc(proj_4326, proj_3857);
|
||||
CHECKED_IF(lonlat_to_webmerc.forward(&points[0].x, &points[0].y, nullptr, 2, 2))
|
||||
{
|
||||
CHECK(points[0].x == Approx(18940136.2759583741));
|
||||
CHECK(points[0].y == Approx(-5402988.5324898539));
|
||||
CHECK(points[1].x == Approx(19543991.9707122259));
|
||||
CHECK(points[1].y == Approx(-4762338.2380718365));
|
||||
}
|
||||
CHECKED_IF(lonlat_to_webmerc.backward(&points[0].x, &points[0].y, nullptr, 2, 2))
|
||||
{
|
||||
CHECK(points[0].x == Approx(170.142139));
|
||||
CHECK(points[0].y == Approx(-43.595056));
|
||||
CHECK(points[1].x == Approx(175.566667));
|
||||
CHECK(points[1].y == Approx(-39.283333));
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef MAPNIK_USE_PROJ4
|
||||
SECTION("lonlat <-> New Zealand Transverse Mercator 2000")
|
||||
{
|
||||
// cs2cs -Ef %.10f +init=epsg:4326 +to +init=epsg:2193 <<END
|
||||
// 170.142139 -43.595056
|
||||
// 175.566667 -39.283333
|
||||
// END
|
||||
//
|
||||
// 170.142139 -43.595056 1369316.0970041484 5169132.9750701785
|
||||
// 175.566667 -39.283333 1821377.9170061364 5648640.2106032455
|
||||
//
|
||||
mapnik::geometry::point<double> points[] = {{ 170.142139, -43.595056 },
|
||||
{ 175.566667, -39.283333 }};
|
||||
// this transform is not calculated by Mapnik (needs Proj4)
|
||||
mapnik::proj_transform lonlat_to_nztm(proj_4326, proj_2193);
|
||||
CHECKED_IF(lonlat_to_nztm.forward(&points[0].x, &points[0].y, nullptr, 2, 2))
|
||||
{
|
||||
CHECK(points[0].x == Approx(1369316.0970041484));
|
||||
CHECK(points[0].y == Approx(5169132.9750701785));
|
||||
CHECK(points[1].x == Approx(1821377.9170061364));
|
||||
CHECK(points[1].y == Approx(5648640.2106032455));
|
||||
}
|
||||
CHECKED_IF(lonlat_to_nztm.backward(&points[0].x, &points[0].y, nullptr, 2, 2))
|
||||
{
|
||||
CHECK(points[0].x == Approx(170.142139));
|
||||
CHECK(points[0].y == Approx(-43.595056));
|
||||
CHECK(points[1].x == Approx(175.566667));
|
||||
CHECK(points[1].y == Approx(-39.283333));
|
||||
}
|
||||
}
|
||||
#endif // MAPNIK_USE_PROJ4
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue