#include #include "geo/CrsTransform.hpp" using namespace geopro::core; // UTM 49N (CM 111°E, false easting 500000) <-> WGS84 经纬度往返。 // 输入 easting≈516868 仅比中央经线偏东 ~16.9km,故经度落在 ~111.16°E(非 114°)。 // normalize_for_visualization 后:forward 输出 (lon, lat),inverse 输入 (lon, lat)。 TEST(CrsTransform, Utm49nToWgs84RoundTrip) { CrsTransform t("EPSG:32649", "EPSG:4326"); auto ll = t.forward(516868.0, 2494259.0); // (east,north) -> (lon,lat) EXPECT_NEAR(ll.x, 111.16, 0.05); // lon EXPECT_NEAR(ll.y, 22.55, 0.05); // lat auto en = t.inverse(ll.x, ll.y); // (lon,lat) -> (east,north) EXPECT_NEAR(en.x, 516868.0, 1.0); EXPECT_NEAR(en.y, 2494259.0, 1.0); } // WebMercator -> UTM 49N 异源重投影(设计 §5 影像重投影)。 // tfw 原点经度真实约 114.16°E,距 49N 中央经线 111°E 偏东 ~3.16°, // 故其 49N easting 远大于 false easting,落在 ~825km 处(合理且 < UTM 带宽上限)。 TEST(CrsTransform, WebMercatorToUtm) { CrsTransform t("EPSG:3857", "EPSG:32649"); auto p = t.forward(12708343.88, 2577685.90); // tfw 原点 EXPECT_GT(p.x, 800000.0); EXPECT_LT(p.x, 850000.0); // UTM 49N 合理 Easting EXPECT_GT(p.y, 2400000.0); EXPECT_LT(p.y, 2600000.0); // 合理 Northing }