diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2022-03-08 22:51:12 +0100 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2022-03-08 22:51:12 +0100 |
| commit | 26a7f7751579a3c0a2bbce59b9f39544d95f6720 (patch) | |
| tree | fad2876be29ac0d00b5154c0ae8bf6f0b7f6e152 /src/iso19111 | |
| parent | bd2326210253cce5bf60626825d60da52f24cc53 (diff) | |
| download | PROJ-26a7f7751579a3c0a2bbce59b9f39544d95f6720.tar.gz PROJ-26a7f7751579a3c0a2bbce59b9f39544d95f6720.zip | |
Fix issue when transforming from/to BoundCRS of 3D CRS with non-Greenwhich prime meridian, created from WKT (fixes OSGeo/gdal#5408)
Diffstat (limited to 'src/iso19111')
| -rw-r--r-- | src/iso19111/io.cpp | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/src/iso19111/io.cpp b/src/iso19111/io.cpp index b7f26fe5..d4c6aec1 100644 --- a/src/iso19111/io.cpp +++ b/src/iso19111/io.cpp @@ -4341,10 +4341,10 @@ createBoundCRSSourceTransformationCRS(const crs::CRSPtr &sourceCRS, sourceCRS->extractGeographicCRS(); sourceTransformationCRS = sourceGeographicCRS; if (sourceGeographicCRS) { - if (sourceGeographicCRS->datum() != nullptr && - sourceGeographicCRS->primeMeridian() - ->longitude() - .getSIValue() != 0.0) { + const auto &sourceDatum = sourceGeographicCRS->datum(); + if (sourceDatum != nullptr && sourceGeographicCRS->primeMeridian() + ->longitude() + .getSIValue() != 0.0) { sourceTransformationCRS = GeographicCRS::create( util::PropertyMap().set( @@ -4354,13 +4354,12 @@ createBoundCRSSourceTransformationCRS(const crs::CRSPtr &sourceCRS, datum::GeodeticReferenceFrame::create( util::PropertyMap().set( common::IdentifiedObject::NAME_KEY, - sourceGeographicCRS->datum()->nameStr() + + sourceDatum->nameStr() + " (with Greenwich prime meridian)"), - sourceGeographicCRS->datum()->ellipsoid(), + sourceDatum->ellipsoid(), util::optional<std::string>(), datum::PrimeMeridian::GREENWICH), - cs::EllipsoidalCS::createLatitudeLongitude( - common::UnitOfMeasure::DEGREE)) + sourceGeographicCRS->coordinateSystem()) .as_nullable(); } } else { |
