Skip to content

Commit ee35c72

Browse files
committed
proj_normalize_for_visualization: check other left-handed orders, not only N-E
1 parent 5a7e2bf commit ee35c72

File tree

2 files changed

+31
-2
lines changed

2 files changed

+31
-2
lines changed

src/iso19111/crs.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -881,8 +881,14 @@ static bool mustAxisOrderBeSwitchedForVisualizationInternal(
881881
const std::vector<cs::CoordinateSystemAxisNNPtr> &axisList) {
882882
const auto &dir0 = axisList[0]->direction();
883883
const auto &dir1 = axisList[1]->direction();
884-
if (&dir0 == &cs::AxisDirection::NORTH &&
885-
&dir1 == &cs::AxisDirection::EAST) {
884+
if ((&dir0 == &cs::AxisDirection::NORTH &&
885+
&dir1 == &cs::AxisDirection::EAST) ||
886+
(&dir0 == &cs::AxisDirection::EAST &&
887+
&dir1 == &cs::AxisDirection::SOUTH) ||
888+
(&dir0 == &cs::AxisDirection::SOUTH &&
889+
&dir1 == &cs::AxisDirection::WEST) ||
890+
(&dir0 == &cs::AxisDirection::WEST &&
891+
&dir1 == &cs::AxisDirection::NORTH)) {
886892
return true;
887893
}
888894

test/unit/test_c_api.cpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4377,6 +4377,29 @@ TEST_F(CApi, proj_normalize_for_visualization_on_crs) {
43774377

43784378
// ---------------------------------------------------------------------------
43794379

4380+
TEST_F(CApi, proj_normalize_for_visualization_on_crs_westing_southing) {
4381+
4382+
auto P = proj_create(m_ctxt, "EPSG:5513");
4383+
ObjectKeeper keeper_P(P);
4384+
ASSERT_NE(P, nullptr);
4385+
auto Pnormalized = proj_normalize_for_visualization(m_ctxt, P);
4386+
ObjectKeeper keeper_Pnormalized(Pnormalized);
4387+
ASSERT_NE(Pnormalized, nullptr);
4388+
EXPECT_EQ(proj_get_id_code(Pnormalized, 0), nullptr);
4389+
4390+
auto cs = proj_crs_get_coordinate_system(m_ctxt, Pnormalized);
4391+
ASSERT_NE(cs, nullptr);
4392+
ObjectKeeper keeperCs(cs);
4393+
4394+
const char *name = nullptr;
4395+
ASSERT_TRUE(proj_cs_get_axis_info(m_ctxt, cs, 0, &name, nullptr, nullptr,
4396+
nullptr, nullptr, nullptr, nullptr));
4397+
ASSERT_NE(name, nullptr);
4398+
EXPECT_EQ(std::string(name), "Westing");
4399+
}
4400+
4401+
// ---------------------------------------------------------------------------
4402+
43804403
TEST_F(CApi, proj_coordoperation_create_inverse) {
43814404

43824405
auto P = proj_create(

0 commit comments

Comments
 (0)