[Git][debian-gis-team/proj][experimental] 5 commits: Add patch from PR #1454 to fix proj-rdnap test failures.
Bas Couwenberg
gitlab at salsa.debian.org
Mon May 6 19:59:08 BST 2019
Bas Couwenberg pushed to branch experimental at Debian GIS Project / proj
Commits:
c6a26f6f by Bas Couwenberg at 2019-05-06T18:29:37Z
Add patch from PR #1454 to fix proj-rdnap test failures.
- - - - -
396dc9ce by Bas Couwenberg at 2019-05-06T18:30:42Z
Update symbols for other architectures.
- - - - -
dd3a3801 by Bas Couwenberg at 2019-05-06T18:45:49Z
Update symbols for amd64.
- - - - -
cbbcdc88 by Bas Couwenberg at 2019-05-06T18:45:49Z
Add lintian overrides for manpage-has-errors-from-man.
- - - - -
80b406eb by Bas Couwenberg at 2019-05-06T18:45:49Z
Set distribution to experimental.
- - - - -
5 changed files:
- debian/changelog
- debian/libproj15.symbols
- + debian/patches/pr1454-createOperations-fix-case-of-ETRS89-3D-to-proj-string-with-nadgrids-and-geoidgrids.patch
- debian/patches/series
- + debian/proj-bin.lintian-overrides
Changes:
=====================================
debian/changelog
=====================================
@@ -1,3 +1,11 @@
+proj (6.1.0~rc1-1~exp2) experimental; urgency=medium
+
+ * Add patch from PR #1454 to fix proj-rdnap test failures.
+ * Update symbols for other architectures.
+ * Add lintian overrides for manpage-has-errors-from-man.
+
+ -- Bas Couwenberg <sebastic at debian.org> Mon, 06 May 2019 20:30:48 +0200
+
proj (6.1.0~rc1-1~exp1) experimental; urgency=medium
* New upstream release candidate.
=====================================
debian/libproj15.symbols
=====================================
@@ -1,4 +1,4 @@
-# SymbolsHelper-Confirmed: 6.1.0~rc1 amd64
+# SymbolsHelper-Confirmed: 6.1.0~rc1 amd64 armel armhf ia64 mips mipsel powerpc powerpcspe
libproj.so.15 #PACKAGE# #MINVER#
* Build-Depends-Package: libproj-dev
_Z10pj_ell_setP9projCtx_tP8ARG_listPdS3_ at Base 6.0.0
@@ -540,6 +540,7 @@ libproj.so.15 #PACKAGE# #MINVER#
_ZN5osgeo4proj6common9DataEpochD2Ev at Base 6.0.0
_ZN5osgeo4proj8internal10replaceAllERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_S9_ at Base 6.0.0
_ZN5osgeo4proj8internal13c_locale_stodERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE at Base 6.0.0
+ (arch=amd64)_ZN5osgeo4proj8internal5splitERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_ at Base 6.1.0~rc1
_ZN5osgeo4proj8internal5splitERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEc at Base 6.0.0
_ZN5osgeo4proj8internal7ci_findERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc at Base 6.0.0
_ZN5osgeo4proj8internal7tolowerERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE at Base 6.0.0
@@ -694,7 +695,8 @@ libproj.so.15 #PACKAGE# #MINVER#
_ZN5osgeo4proj9operation14Transformation29createCoordinateFrameRotationERKNS0_4util11PropertyMapERKN7dropbox6oxygen2nnISt10shared_ptrINS0_3crs3CRSEEEESG_dddddddRKSt6vectorINS9_ISA_INS0_8metadata18PositionalAccuracyEEEESaISL_EE at Base 6.0.0
_ZN5osgeo4proj9operation14Transformation33createTimeDependentPositionVectorERKNS0_4util11PropertyMapERKN7dropbox6oxygen2nnISt10shared_ptrINS0_3crs3CRSEEEESG_dddddddddddddddRKSt6vectorINS9_ISA_INS0_8metadata18PositionalAccuracyEEEESaISL_EE at Base 6.0.0
_ZN5osgeo4proj9operation14Transformation35createGeographic2DWithHeightOffsetsERKNS0_4util11PropertyMapERKN7dropbox6oxygen2nnISt10shared_ptrINS0_3crs3CRSEEEESG_RKNS0_6common5AngleESK_RKNSH_6LengthERKSt6vectorINS9_ISA_INS0_8metadata18PositionalAccuracyEEEESaISS_EE at Base 6.0.0
- _ZN5osgeo4proj9operation14Transformation40createGravityRelatedHeightToGeographic3DERKNS0_4util11PropertyMapERKN7dropbox6oxygen2nnISt10shared_ptrINS0_3crs3CRSEEEESG_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorINS9_ISA_INS0_8metadata18PositionalAccuracyEEEESaIST_EE at Base 6.0.0
+ (arch=!amd64)_ZN5osgeo4proj9operation14Transformation40createGravityRelatedHeightToGeographic3DERKNS0_4util11PropertyMapERKN7dropbox6oxygen2nnISt10shared_ptrINS0_3crs3CRSEEEESG_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorINS9_ISA_INS0_8metadata18PositionalAccuracyEEEESaIST_EE at Base 6.1.0~rc1
+ (arch=amd64)_ZN5osgeo4proj9operation14Transformation40createGravityRelatedHeightToGeographic3DERKNS0_4util11PropertyMapERKN7dropbox6oxygen2nnISt10shared_ptrINS0_3crs3CRSEEEESG_RKSD_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorINS9_ISA_INS0_8metadata18PositionalAccuracyEEEESaISV_EE at Base 6.1.0~rc1
_ZN5osgeo4proj9operation14Transformation42createTimeDependentCoordinateFrameRotationERKNS0_4util11PropertyMapERKN7dropbox6oxygen2nnISt10shared_ptrINS0_3crs3CRSEEEESG_dddddddddddddddRKSt6vectorINS9_ISA_INS0_8metadata18PositionalAccuracyEEEESaISL_EE at Base 6.0.0
_ZN5osgeo4proj9operation14Transformation6createERKNS0_4util11PropertyMapERKN7dropbox6oxygen2nnISt10shared_ptrINS0_3crs3CRSEEEESG_RKSD_RKNS9_ISA_INS1_15OperationMethodEEEERKSt6vectorINS9_ISA_INS1_21GeneralParameterValueEEEESaISR_EERKSO_INS9_ISA_INS0_8metadata18PositionalAccuracyEEEESaISZ_EE at Base 6.0.0
_ZN5osgeo4proj9operation14Transformation6createERKNS0_4util11PropertyMapERKN7dropbox6oxygen2nnISt10shared_ptrINS0_3crs3CRSEEEESG_RKSD_S6_RKSt6vectorINS9_ISA_INS1_18OperationParameterEEEESaISM_EERKSJ_INS9_ISA_INS1_14ParameterValueEEEESaIST_EERKSJ_INS9_ISA_INS0_8metadata18PositionalAccuracyEEEESaIS11_EE at Base 6.0.0
@@ -1045,8 +1047,12 @@ libproj.so.15 #PACKAGE# #MINVER#
(optional=templinst)_ZNSt10shared_ptrIN5osgeo4proj8metadata6ExtentEED2Ev at Base 6.0.0
(optional=templinst)_ZNSt10shared_ptrIN5osgeo4proj9operation14ParameterValueEED1Ev at Base 6.0.0
(optional=templinst)_ZNSt10shared_ptrIN5osgeo4proj9operation14ParameterValueEED2Ev at Base 6.0.0
- (optional=templinst|arch=m68k mips64el ppc64 ppc64el s390x sparc64)_ZNSt12__shared_ptrIN5osgeo4proj2cs16CoordinateSystemELN9__gnu_cxx12_Lock_policyE2EEC1ERKS6_ at Base 6.0.0
- (optional=templinst|arch=m68k mips64el ppc64 ppc64el s390x sparc64)_ZNSt12__shared_ptrIN5osgeo4proj2cs16CoordinateSystemELN9__gnu_cxx12_Lock_policyE2EEC2ERKS6_ at Base 6.0.0
+ (optional=templinst|arch=armel)_ZNSt12__shared_ptrIN5osgeo4proj2cs16CoordinateSystemELN9__gnu_cxx12_Lock_policyE1EEC1ERKS6_ at Base 6.1.0~rc1
+ (optional=templinst|arch=armel)_ZNSt12__shared_ptrIN5osgeo4proj2cs16CoordinateSystemELN9__gnu_cxx12_Lock_policyE1EEC2ERKS6_ at Base 6.1.0~rc1
+ (optional=templinst|arch=armhf ia64 m68k mips mips64el mipsel powerpc powerpcspe ppc64 ppc64el s390x sparc64)_ZNSt12__shared_ptrIN5osgeo4proj2cs16CoordinateSystemELN9__gnu_cxx12_Lock_policyE2EEC1ERKS6_ at Base 6.0.0
+ (optional=templinst|arch=armhf ia64 m68k mips mips64el mipsel powerpc powerpcspe ppc64 ppc64el s390x sparc64)_ZNSt12__shared_ptrIN5osgeo4proj2cs16CoordinateSystemELN9__gnu_cxx12_Lock_policyE2EEC2ERKS6_ at Base 6.0.0
+ (optional=templinst|arch=armel)_ZNSt12__shared_ptrIN5osgeo4proj3crs11CompoundCRSELN9__gnu_cxx12_Lock_policyE1EEC1ERKS6_ at Base 6.1.0~rc1
+ (optional=templinst|arch=armel)_ZNSt12__shared_ptrIN5osgeo4proj3crs11CompoundCRSELN9__gnu_cxx12_Lock_policyE1EEC2ERKS6_ at Base 6.1.0~rc1
(optional=templinst)_ZNSt12__shared_ptrIN5osgeo4proj3crs11CompoundCRSELN9__gnu_cxx12_Lock_policyE2EEC1ERKS6_ at Base 6.1.0~rc1
(optional=templinst)_ZNSt12__shared_ptrIN5osgeo4proj3crs11CompoundCRSELN9__gnu_cxx12_Lock_policyE2EEC2ERKS6_ at Base 6.1.0~rc1
(optional=templinst|arch=armel)_ZNSt12__shared_ptrIN5osgeo4proj3crs13GeographicCRSELN9__gnu_cxx12_Lock_policyE1EEC1ERKS6_ at Base 6.0.0
@@ -1065,16 +1071,20 @@ libproj.so.15 #PACKAGE# #MINVER#
(optional=templinst|arch=armel)_ZNSt12__shared_ptrIN5osgeo4proj4util10BaseObjectELN9__gnu_cxx12_Lock_policyE1EEC2INS1_6common16IdentifiedObjectEvEERKS_IT_LS5_1EE at Base 6.0.0
(optional=templinst|arch=!armel !riscv64)_ZNSt12__shared_ptrIN5osgeo4proj4util10BaseObjectELN9__gnu_cxx12_Lock_policyE2EEC1INS1_6common16IdentifiedObjectEvEERKS_IT_LS5_2EE at Base 6.0.0
(optional=templinst|arch=!armel !riscv64)_ZNSt12__shared_ptrIN5osgeo4proj4util10BaseObjectELN9__gnu_cxx12_Lock_policyE2EEC2INS1_6common16IdentifiedObjectEvEERKS_IT_LS5_2EE at Base 6.0.0
+ (optional=templinst|arch=armel)_ZNSt12__shared_ptrIN5osgeo4proj5datum22GeodeticReferenceFrameELN9__gnu_cxx12_Lock_policyE1EEC1ERKS6_ at Base 6.1.0~rc1
+ (optional=templinst|arch=armel)_ZNSt12__shared_ptrIN5osgeo4proj5datum22GeodeticReferenceFrameELN9__gnu_cxx12_Lock_policyE1EEC2ERKS6_ at Base 6.1.0~rc1
(optional=templinst)_ZNSt12__shared_ptrIN5osgeo4proj5datum22GeodeticReferenceFrameELN9__gnu_cxx12_Lock_policyE2EEC1ERKS6_ at Base 6.1.0~rc1
(optional=templinst)_ZNSt12__shared_ptrIN5osgeo4proj5datum22GeodeticReferenceFrameELN9__gnu_cxx12_Lock_policyE2EEC2ERKS6_ at Base 6.1.0~rc1
(optional=templinst|arch=armel)_ZNSt12__shared_ptrIN5osgeo4proj6common16IdentifiedObjectELN9__gnu_cxx12_Lock_policyE1EEC1INS1_9operation15OperationMethodEvEERKS_IT_LS5_1EE at Base 6.0.0
(optional=templinst|arch=armel)_ZNSt12__shared_ptrIN5osgeo4proj6common16IdentifiedObjectELN9__gnu_cxx12_Lock_policyE1EEC2INS1_9operation15OperationMethodEvEERKS_IT_LS5_1EE at Base 6.0.0
- (optional=templinst)_ZNSt12__shared_ptrIN5osgeo4proj6common16IdentifiedObjectELN9__gnu_cxx12_Lock_policyE2EEC1INS1_9operation15OperationMethodEvEERKS_IT_LS5_2EE at Base 6.0.0
- (optional=templinst)_ZNSt12__shared_ptrIN5osgeo4proj6common16IdentifiedObjectELN9__gnu_cxx12_Lock_policyE2EEC2INS1_9operation15OperationMethodEvEERKS_IT_LS5_2EE at Base 6.0.0
+ (optional=templinst|arch=!armel)_ZNSt12__shared_ptrIN5osgeo4proj6common16IdentifiedObjectELN9__gnu_cxx12_Lock_policyE2EEC1INS1_9operation15OperationMethodEvEERKS_IT_LS5_2EE at Base 6.0.0
+ (optional=templinst|arch=!armel)_ZNSt12__shared_ptrIN5osgeo4proj6common16IdentifiedObjectELN9__gnu_cxx12_Lock_policyE2EEC2INS1_9operation15OperationMethodEvEERKS_IT_LS5_2EE at Base 6.0.0
(optional=templinst|arch=armel)_ZNSt12__shared_ptrIN5osgeo4proj8metadata6ExtentELN9__gnu_cxx12_Lock_policyE1EEC1ERKS6_ at Base 6.0.0
(optional=templinst|arch=armel)_ZNSt12__shared_ptrIN5osgeo4proj8metadata6ExtentELN9__gnu_cxx12_Lock_policyE1EEC2ERKS6_ at Base 6.0.0
(optional=templinst|arch=!armel !riscv64)_ZNSt12__shared_ptrIN5osgeo4proj8metadata6ExtentELN9__gnu_cxx12_Lock_policyE2EEC1ERKS6_ at Base 6.0.0
(optional=templinst|arch=!armel !riscv64)_ZNSt12__shared_ptrIN5osgeo4proj8metadata6ExtentELN9__gnu_cxx12_Lock_policyE2EEC2ERKS6_ at Base 6.0.0
+ (optional=templinst|arch=armel)_ZNSt12__shared_ptrIN5osgeo4proj9operation10ConversionELN9__gnu_cxx12_Lock_policyE1EEC1ERKS6_ at Base 6.1.0~rc1
+ (optional=templinst|arch=armel)_ZNSt12__shared_ptrIN5osgeo4proj9operation10ConversionELN9__gnu_cxx12_Lock_policyE1EEC2ERKS6_ at Base 6.1.0~rc1
(optional=templinst)_ZNSt12__shared_ptrIN5osgeo4proj9operation10ConversionELN9__gnu_cxx12_Lock_policyE2EEC1ERKS6_ at Base 6.1.0~rc1
(optional=templinst)_ZNSt12__shared_ptrIN5osgeo4proj9operation10ConversionELN9__gnu_cxx12_Lock_policyE2EEC2ERKS6_ at Base 6.1.0~rc1
(optional=templinst|arch=armel)_ZNSt12__shared_ptrIN5osgeo4proj9operation14ParameterValueELN9__gnu_cxx12_Lock_policyE1EEC1ERKS6_ at Base 6.0.0
@@ -1781,7 +1791,7 @@ libproj.so.15 #PACKAGE# #MINVER#
(optional=templinst)_ZNSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ESaIS7_EE17_M_realloc_insertIJS7_EEEvN9__gnu_cxx17__normal_iteratorIPS7_S9_EEDpOT_ at Base 6.0.0
(optional=templinst)_ZNSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ESaIS7_EEaSERKS9_ at Base 6.0.0
(optional=templinst)_ZNSt6vectorIbSaIbEE13_M_insert_auxESt13_Bit_iteratorb at Base 6.0.0
- (optional=templinst|arch=!mips !mipsel)_ZNSt6vectorIbSaIbEE9push_backEb at Base 6.0.0
+ (optional=templinst)_ZNSt6vectorIbSaIbEE9push_backEb at Base 6.0.0
(optional=templinst)_ZNSt6vectorIdSaIdEE12emplace_backIJdEEEvDpOT_ at Base 6.0.0
(optional=templinst)_ZNSt6vectorIdSaIdEE17_M_realloc_insertIJdEEEvN9__gnu_cxx17__normal_iteratorIPdS1_EEDpOT_ at Base 6.0.0
(optional=templinst)_ZNSt6vectorIdSaIdEEaSERKS1_ at Base 6.0.0
@@ -1832,7 +1842,7 @@ libproj.so.15 #PACKAGE# #MINVER#
(optional=templinst|arch=amd64 arm64 kfreebsd-amd64 s390x x32)_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_ at Base 6.0.0
(optional=templinst|arch=amd64 arm64 kfreebsd-amd64 s390x x32)_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_ at Base 6.0.0
(optional=templinst)_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_ at Base 6.0.0
- (optional=templinst)_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_ at Base 6.0.0
+ (optional=templinst|arch=!mips !mipsel)_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_ at Base 6.0.0
(optional=templinst)_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_SA_ at Base 6.0.0
_ZTIN5osgeo4proj2cs10TemporalCSE at Base 6.0.0
_ZTIN5osgeo4proj2cs10VerticalCSE at Base 6.0.0
@@ -2028,7 +2038,7 @@ libproj.so.15 #PACKAGE# #MINVER#
(arch=!armel !riscv64)_ZTISt15_Sp_counted_ptrIPN5osgeo4proj9operation23OperationParameterValueELN9__gnu_cxx12_Lock_policyE2EE at Base 6.0.0
(arch=armel riscv64)_ZTISt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE1EE at Base 6.0.0
(arch=!armel !riscv64)_ZTISt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE at Base 6.0.0
- (arch=armel armhf ia64)_ZTISt19_Sp_make_shared_tag at Base 6.0.0
+ (arch=armel armhf)_ZTISt19_Sp_make_shared_tag at Base 6.0.0
(arch=armel riscv64)_ZTISt23_Sp_counted_ptr_inplaceIN5osgeo4proj6common13UnitOfMeasureESaIS3_ELN9__gnu_cxx12_Lock_policyE1EE at Base 6.0.0
(arch=!armel !riscv64)_ZTISt23_Sp_counted_ptr_inplaceIN5osgeo4proj6common13UnitOfMeasureESaIS3_ELN9__gnu_cxx12_Lock_policyE2EE at Base 6.0.0
_ZTSN5osgeo4proj2cs10TemporalCSE at Base 6.0.0
=====================================
debian/patches/pr1454-createOperations-fix-case-of-ETRS89-3D-to-proj-string-with-nadgrids-and-geoidgrids.patch
=====================================
@@ -0,0 +1,487 @@
+Description: Fixes for proj-rdnap.
+ createOperations(): fix case of ETRS89 3D to proj string with nadgrids and geoidgrids
+ Fixes https://lists.osgeo.org/pipermail/proj/2019-May/008519.html
+ .
+ createOperations(): for 'Amersfoort / RD New + NAP height' (EPSG:7415) to ETRS89 (EPSG:4937),
+ make sure that the vgridshift is applied first (ie on Amersfoort datum) before the hgridshift
+Author: Even Rouault <even.rouault at spatialys.com>
+Origin: https://github.com/OSGeo/proj.4/pull/1454/
+
+--- a/src/iso19111/coordinateoperation.cpp
++++ b/src/iso19111/coordinateoperation.cpp
+@@ -6958,11 +6958,11 @@ TransformationNNPtr Transformation::crea
+ static TransformationNNPtr _createGravityRelatedHeightToGeographic3D(
+ const util::PropertyMap &properties, bool inverse,
+ const crs::CRSNNPtr &sourceCRSIn, const crs::CRSNNPtr &targetCRSIn,
+- const std::string &filename,
++ const crs::CRSPtr &interpolationCRSIn, const std::string &filename,
+ const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies) {
+
+ return Transformation::create(
+- properties, sourceCRSIn, targetCRSIn, nullptr,
++ properties, sourceCRSIn, targetCRSIn, interpolationCRSIn,
+ util::PropertyMap().set(
+ common::IdentifiedObject::NAME_KEY,
+ inverse ? INVERSE_OF + PROJ_WKT2_NAME_METHOD_HEIGHT_TO_GEOG3D
+@@ -6981,17 +6981,20 @@ static TransformationNNPtr _createGravit
+ * At minimum the name should be defined.
+ * @param sourceCRSIn Source CRS.
+ * @param targetCRSIn Target CRS.
++ * @param interpolationCRSIn Interpolation CRS. (might be null)
+ * @param filename GRID filename.
+ * @param accuracies Vector of positional accuracy (might be empty).
+ * @return new Transformation.
+ */
+ TransformationNNPtr Transformation::createGravityRelatedHeightToGeographic3D(
+ const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn,
+- const crs::CRSNNPtr &targetCRSIn, const std::string &filename,
++ const crs::CRSNNPtr &targetCRSIn, const crs::CRSPtr &interpolationCRSIn,
++ const std::string &filename,
+ const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies) {
+
+ return _createGravityRelatedHeightToGeographic3D(
+- properties, false, sourceCRSIn, targetCRSIn, filename, accuracies);
++ properties, false, sourceCRSIn, targetCRSIn, interpolationCRSIn,
++ filename, accuracies);
+ }
+
+ // ---------------------------------------------------------------------------
+@@ -7302,8 +7305,20 @@ createPropertiesForInverse(const Coordin
+ auto targetCRS = op->targetCRS();
+ std::string name;
+ if (!forwardName.empty()) {
+- if (starts_with(forwardName, INVERSE_OF)) {
+- name = forwardName.substr(INVERSE_OF.size());
++ if (starts_with(forwardName, INVERSE_OF) ||
++ forwardName.find(" + ") != std::string::npos) {
++ auto tokens = split(forwardName, " + ");
++ for (size_t i = tokens.size(); i > 0;) {
++ i--;
++ if (!name.empty()) {
++ name += " + ";
++ }
++ if (starts_with(tokens[i], INVERSE_OF)) {
++ name += tokens[i].substr(INVERSE_OF.size());
++ } else {
++ name += INVERSE_OF + tokens[i];
++ }
++ }
+ } else if (!sourceCRS || !targetCRS ||
+ forwardName != buildOpName(opType, sourceCRS, targetCRS)) {
+ name = INVERSE_OF + forwardName;
+@@ -8195,13 +8210,14 @@ TransformationNNPtr Transformation::subs
+ return createGravityRelatedHeightToGeographic3D(
+ createPropertiesForInverse(self.as_nullable().get(),
+ true, false),
+- targetCRS(), sourceCRS(), projFilename,
+- coordinateOperationAccuracies())
++ targetCRS(), sourceCRS(), interpolationCRS(),
++ projFilename, coordinateOperationAccuracies())
+ ->inverseAsTransformation();
+ } else {
+ return createGravityRelatedHeightToGeographic3D(
+ createSimilarPropertiesTransformation(self), sourceCRS(),
+- targetCRS(), projFilename, coordinateOperationAccuracies());
++ targetCRS(), interpolationCRS(), projFilename,
++ coordinateOperationAccuracies());
+ }
+ }
+ }
+@@ -10972,19 +10988,19 @@ struct MyPROJStringExportableHorizVertic
+ // cppcheck-suppress functionStatic
+ _exportToPROJString(io::PROJStringFormatter *formatter) const override {
+
+- formatter->setOmitZUnitConversion(true);
++ formatter->pushOmitZUnitConversion();
+ horizTransform->_exportToPROJString(formatter);
+
+ formatter->startInversion();
+ geogDst->addAngularUnitConvertAndAxisSwap(formatter);
+ formatter->stopInversion();
+- formatter->setOmitZUnitConversion(false);
++ formatter->popOmitZUnitConversion();
+
+ verticalTransform->_exportToPROJString(formatter);
+
+- formatter->setOmitZUnitConversion(true);
++ formatter->pushOmitZUnitConversion();
+ geogDst->addAngularUnitConvertAndAxisSwap(formatter);
+- formatter->setOmitZUnitConversion(false);
++ formatter->popOmitZUnitConversion();
+ }
+ };
+
+@@ -11016,7 +11032,7 @@ struct MyPROJStringExportableHorizVertic
+ // cppcheck-suppress functionStatic
+ _exportToPROJString(io::PROJStringFormatter *formatter) const override {
+
+- formatter->setOmitZUnitConversion(true);
++ formatter->pushOmitZUnitConversion();
+
+ opSrcCRSToGeogCRS->_exportToPROJString(formatter);
+
+@@ -11024,17 +11040,17 @@ struct MyPROJStringExportableHorizVertic
+ interpolationGeogCRS->addAngularUnitConvertAndAxisSwap(formatter);
+ formatter->stopInversion();
+
+- formatter->setOmitZUnitConversion(false);
++ formatter->popOmitZUnitConversion();
+
+ verticalTransform->_exportToPROJString(formatter);
+
+- formatter->setOmitZUnitConversion(true);
++ formatter->pushOmitZUnitConversion();
+
+ interpolationGeogCRS->addAngularUnitConvertAndAxisSwap(formatter);
+
+ opGeogCRStoDstCRS->_exportToPROJString(formatter);
+
+- formatter->setOmitZUnitConversion(false);
++ formatter->popOmitZUnitConversion();
+ }
+ };
+
+@@ -12135,6 +12151,37 @@ CoordinateOperationFactory::Private::cre
+ }
+ }
+
++ auto vertCRSOfBaseOfBoundSrc =
++ dynamic_cast<const crs::VerticalCRS *>(boundSrc->baseCRS().get());
++ if (vertCRSOfBaseOfBoundSrc && hubSrcGeog &&
++ hubSrcGeog->coordinateSystem()->axisList().size() == 3 &&
++ geogDst->coordinateSystem()->axisList().size() == 3) {
++ auto opsFirst = createOperations(sourceCRS, hubSrc, context);
++ auto opsSecond = createOperations(hubSrc, targetCRS, context);
++ if (!opsFirst.empty() && !opsSecond.empty()) {
++ for (const auto &opFirst : opsFirst) {
++ for (const auto &opLast : opsSecond) {
++ // Exclude artificial transformations from the hub
++ // to the target CRS
++ if (!opLast->hasBallparkTransformation()) {
++ try {
++ res.emplace_back(
++ ConcatenatedOperation::
++ createComputeMetadata(
++ {opFirst, opLast},
++ !allowEmptyIntersection));
++ } catch (
++ const InvalidOperationEmptyIntersection &) {
++ }
++ }
++ }
++ }
++ if (!res.empty()) {
++ return res;
++ }
++ }
++ }
++
+ return createOperations(boundSrc->baseCRS(), targetCRS, context);
+ }
+
+@@ -12349,7 +12396,8 @@ CoordinateOperationFactory::Private::cre
+ const auto &componentsSrc = compoundSrc->componentReferenceSystems();
+ if (!componentsSrc.empty()) {
+ std::vector<CoordinateOperationNNPtr> horizTransforms;
+- if (componentsSrc[0]->extractGeographicCRS()) {
++ auto srcGeogCRS = componentsSrc[0]->extractGeographicCRS();
++ if (srcGeogCRS) {
+ horizTransforms =
+ createOperations(componentsSrc[0], targetCRS, context);
+ }
+@@ -12363,11 +12411,61 @@ CoordinateOperationFactory::Private::cre
+ for (const auto &horizTransform : horizTransforms) {
+ for (const auto &verticalTransform : verticalTransforms) {
+
+- auto op = createHorizVerticalPROJBased(
+- sourceCRS, targetCRS, horizTransform,
+- verticalTransform);
++ crs::GeographicCRSPtr interpolationGeogCRS;
++ auto transformationVerticalTransform =
++ dynamic_cast<const Transformation *>(
++ verticalTransform.get());
++ if (transformationVerticalTransform) {
++ auto interpTransformCRS =
++ transformationVerticalTransform
++ ->interpolationCRS();
++ if (interpTransformCRS) {
++ auto nn_interpTransformCRS =
++ NN_NO_CHECK(interpTransformCRS);
++ if (dynamic_cast<const crs::GeographicCRS *>(
++ nn_interpTransformCRS.get())) {
++ interpolationGeogCRS =
++ util::nn_dynamic_pointer_cast<
++ crs::GeographicCRS>(
++ nn_interpTransformCRS);
++ }
++ }
++ }
++ bool done = false;
++ if (interpolationGeogCRS &&
++ (interpolationGeogCRS->_isEquivalentTo(
++ srcGeogCRS.get(),
++ util::IComparable::Criterion::EQUIVALENT) ||
++ interpolationGeogCRS->is2DPartOf3D(
++ NN_NO_CHECK(srcGeogCRS.get())))) {
++ auto srcToInterp = createOperations(
++ componentsSrc[0],
++ NN_NO_CHECK(interpolationGeogCRS), context);
++ auto interpToCompoundHoriz = createOperations(
++ NN_NO_CHECK(interpolationGeogCRS),
++ componentsSrc[0], context);
++ if (!srcToInterp.empty() &&
++ !interpToCompoundHoriz.empty()) {
++ auto op = createHorizVerticalHorizPROJBased(
++ sourceCRS, componentsSrc[0],
++ srcToInterp.front(), verticalTransform,
++ interpToCompoundHoriz.front(),
++ interpolationGeogCRS);
++ done = true;
++ res.emplace_back(
++ ConcatenatedOperation::
++ createComputeMetadata(
++ {op, horizTransform},
++ !allowEmptyIntersection));
++ }
++ }
++ if (!done) {
++ auto op = createHorizVerticalPROJBased(
++ sourceCRS, targetCRS, horizTransform,
++ verticalTransform);
+
+- res.emplace_back(op);
++ res.emplace_back(op);
++ }
+ }
+ }
+ return res;
+--- a/test/unit/test_operation.cpp
++++ b/test/unit/test_operation.cpp
+@@ -5903,6 +5903,35 @@ TEST(operation, boundCRS_with_basecrs_wi
+
+ // ---------------------------------------------------------------------------
+
++TEST(operation, ETRS89_3D_to_proj_string_with_geoidgrids_nadgrids) {
++ auto authFactory =
++ AuthorityFactory::create(DatabaseContext::create(), "EPSG");
++ // ETRS89 3D
++ auto src = authFactory->createCoordinateReferenceSystem("4937");
++ auto objDst = PROJStringParser().createFromPROJString(
++ "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 "
++ "+k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel "
++ "+nadgrids=rdtrans2008.gsb +geoidgrids=naptrans2008.gtx +units=m "
++ "+type=crs");
++ auto dst = nn_dynamic_pointer_cast<CRS>(objDst);
++ ASSERT_TRUE(dst != nullptr);
++ auto ctxt = CoordinateOperationContext::create(authFactory, nullptr, 0.0);
++ auto list = CoordinateOperationFactory::create()->createOperations(
++ src, NN_NO_CHECK(dst), ctxt);
++ ASSERT_EQ(list.size(), 1U);
++ EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()),
++ "+proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=rad "
++ "+step +proj=axisswap +order=2,1 "
++ "+step +inv +proj=vgridshift +grids=naptrans2008.gtx "
++ "+multiplier=1 "
++ "+step +inv +proj=hgridshift +grids=rdtrans2008.gsb "
++ "+step +proj=sterea +lat_0=52.1561605555556 "
++ "+lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 "
++ "+y_0=463000 +ellps=bessel");
++}
++
++// ---------------------------------------------------------------------------
++
+ static VerticalCRSNNPtr createVerticalCRS() {
+ PropertyMap propertiesVDatum;
+ propertiesVDatum.set(Identifier::CODESPACE_KEY, "EPSG")
+@@ -5941,8 +5970,8 @@ static BoundCRSNNPtr createBoundVertical
+ auto vertCRS = createVerticalCRS();
+ auto transformation =
+ Transformation::createGravityRelatedHeightToGeographic3D(
+- PropertyMap(), vertCRS, GeographicCRS::EPSG_4979, "egm08_25.gtx",
+- std::vector<PositionalAccuracyNNPtr>());
++ PropertyMap(), vertCRS, GeographicCRS::EPSG_4979, nullptr,
++ "egm08_25.gtx", std::vector<PositionalAccuracyNNPtr>());
+ return BoundCRS::create(vertCRS, GeographicCRS::EPSG_4979, transformation);
+ }
+
+@@ -6727,6 +6756,22 @@ TEST(operation, compoundCRS_from_WKT2_no
+ auto list =
+ CoordinateOperationFactory::create()->createOperations(src, dst, ctxt);
+ ASSERT_GE(list.size(), 1U);
++
++ {
++ // Important here is vgridshift before hgridshift
++ auto op_proj =
++ list[0]->exportToPROJString(PROJStringFormatter::create().get());
++ EXPECT_EQ(
++ op_proj,
++ "+proj=pipeline +step +inv +proj=sterea +lat_0=52.1561605555556 "
++ "+lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 "
++ "+ellps=bessel "
++ "+step +proj=vgridshift +grids=naptrans2008.gtx +multiplier=1 "
++ "+step +proj=hgridshift +grids=rdtrans2008.gsb "
++ "+step +proj=unitconvert +xy_in=rad +z_in=m +xy_out=deg +z_out=m "
++ "+step +proj=axisswap +order=2,1");
++ }
++
+ auto wkt2 =
+ "COMPOUNDCRS[\"unknown\",\n"
+ " PROJCRS[\"unknown\",\n"
+@@ -6759,8 +6804,12 @@ TEST(operation, compoundCRS_from_WKT2_no
+ for (size_t i = 0; i < list.size(); i++) {
+ const auto &op = list[i];
+ const auto &op2 = list2[i];
+- EXPECT_TRUE(
+- op->isEquivalentTo(op2.get(), IComparable::Criterion::EQUIVALENT));
++ auto op_proj =
++ op->exportToPROJString(PROJStringFormatter::create().get());
++ auto op2_proj =
++ op2->exportToPROJString(PROJStringFormatter::create().get());
++ EXPECT_EQ(op_proj, op2_proj) << "op=" << op->nameStr()
++ << " op2=" << op2->nameStr();
+ }
+ }
+
+--- a/data/sql/customizations.sql
++++ b/data/sql/customizations.sql
+@@ -19,6 +19,25 @@ DELETE FROM "supersession" WHERE superse
+ replacement_code = '8885' AND
+ source = 'EPSG';
+
++-- ('EPSG','7001','ETRS89 to NAP height (1)') lacks an interpolationCRS with Amersfoort / EPSG:4289
++-- See https://salsa.debian.org/debian-gis-team/proj-rdnap/blob/debian/2008-8/Use%20of%20RDTRANS2008%20and%20NAPTRANS2008.pdf
++-- "The naptrans2008 VDatum-grid is referenced to the Bessel-1841 ellipsoid"
++CREATE TABLE dummy(foo);
++CREATE TRIGGER check_grid_transformation_epsg_7001
++BEFORE INSERT ON dummy
++FOR EACH ROW BEGIN
++ SELECT RAISE(ABORT, 'grid_transformation EPSG:7001 entry is not ETRS89 to NAP height (1)')
++ WHERE NOT EXISTS(SELECT 1 FROM grid_transformation WHERE auth_name = 'EPSG' AND code = '7001' AND name = 'ETRS89 to NAP height (1)');
++ SELECT RAISE(ABORT, 'grid_transformation EPSG:7001 entry has already an interpolationCRS')
++ WHERE EXISTS(SELECT 1 FROM grid_transformation WHERE auth_name = 'EPSG' AND code = '7001' AND interpolation_crs_auth_name IS NOT NULL);
++END;
++INSERT INTO dummy DEFAULT VALUES;
++DROP TRIGGER check_grid_transformation_epsg_7001;
++DROP TABLE dummy;
++UPDATE grid_transformation SET interpolation_crs_auth_name = 'EPSG',
++ interpolation_crs_code = '4289'
++ WHERE auth_name = 'EPSG' AND code = '7001';
++
+ -- Define the allowed authorities, and their precedence, when researching a
+ -- coordinate operation
+
+--- a/include/proj/coordinateoperation.hpp
++++ b/include/proj/coordinateoperation.hpp
+@@ -1476,7 +1476,8 @@ class PROJ_GCC_DLL Transformation : publ
+ PROJ_DLL static TransformationNNPtr
+ createGravityRelatedHeightToGeographic3D(
+ const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn,
+- const crs::CRSNNPtr &targetCRSIn, const std::string &filename,
++ const crs::CRSNNPtr &targetCRSIn, const crs::CRSPtr &interpolationCRSIn,
++ const std::string &filename,
+ const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies);
+
+ PROJ_DLL static TransformationNNPtr createVERTCON(
+--- a/include/proj/internal/internal.hpp
++++ b/include/proj/internal/internal.hpp
+@@ -140,6 +140,9 @@ std::string toupper(const std::string &o
+ PROJ_FOR_TEST std::vector<std::string> split(const std::string &osStr,
+ char separator);
+
++PROJ_FOR_TEST std::vector<std::string> split(const std::string &osStr,
++ const std::string &separator);
++
+ bool ci_equal(const char *a, const char *b) noexcept;
+
+ #ifdef SUPPORT_DELETED_FUNCTION
+--- a/include/proj/io.hpp
++++ b/include/proj/io.hpp
+@@ -427,7 +427,8 @@ class PROJ_GCC_DLL PROJStringFormatter {
+ PROJ_INTERNAL void setOmitProjLongLatIfPossible(bool omit);
+ PROJ_INTERNAL bool omitProjLongLatIfPossible() const;
+
+- PROJ_INTERNAL void setOmitZUnitConversion(bool omit);
++ PROJ_INTERNAL void pushOmitZUnitConversion();
++ PROJ_INTERNAL void popOmitZUnitConversion();
+ PROJ_INTERNAL bool omitZUnitConversion() const;
+
+ PROJ_INTERNAL void setDropEarlyBindingsTerms(bool drop);
+--- a/src/iso19111/internal.cpp
++++ b/src/iso19111/internal.cpp
+@@ -298,6 +298,21 @@ std::vector<std::string> split(const std
+
+ // ---------------------------------------------------------------------------
+
++std::vector<std::string> split(const std::string &str,
++ const std::string &separator) {
++ std::vector<std::string> res;
++ size_t lastPos = 0;
++ size_t newPos = 0;
++ while ((newPos = str.find(separator, lastPos)) != std::string::npos) {
++ res.push_back(str.substr(lastPos, newPos - lastPos));
++ lastPos = newPos + separator.size();
++ }
++ res.push_back(str.substr(lastPos));
++ return res;
++}
++
++// ---------------------------------------------------------------------------
++
+ #ifdef _WIN32
+
+ // For some reason, sqlite3_snprintf() in the sqlite3 builds used on AppVeyor
+--- a/src/iso19111/io.cpp
++++ b/src/iso19111/io.cpp
+@@ -3818,7 +3818,7 @@ CRSNNPtr WKTParser::Private::buildVertic
+ Transformation::createGravityRelatedHeightToGeographic3D(
+ PropertyMap().set(IdentifiedObject::NAME_KEY,
+ transformationName),
+- crs, GeographicCRS::EPSG_4979,
++ crs, GeographicCRS::EPSG_4979, nullptr,
+ stripQuotes(extensionChildren[1]),
+ std::vector<PositionalAccuracyNNPtr>());
+ return nn_static_pointer_cast<CRS>(BoundCRS::create(
+@@ -4922,7 +4922,7 @@ struct PROJStringFormatter::Private {
+ };
+ std::vector<InversionStackElt> inversionStack_{InversionStackElt()};
+ bool omitProjLongLatIfPossible_ = false;
+- bool omitZUnitConversion_ = false;
++ std::vector<bool> omitZUnitConversion_{false};
+ DatabaseContextPtr dbContext_{};
+ bool useApproxTMerc_ = false;
+ bool addNoDefs_ = true;
+@@ -5939,15 +5939,21 @@ bool PROJStringFormatter::omitProjLongLa
+
+ // ---------------------------------------------------------------------------
+
+-void PROJStringFormatter::setOmitZUnitConversion(bool omit) {
+- assert(d->omitZUnitConversion_ ^ omit);
+- d->omitZUnitConversion_ = omit;
++void PROJStringFormatter::pushOmitZUnitConversion() {
++ d->omitZUnitConversion_.push_back(true);
++}
++
++// ---------------------------------------------------------------------------
++
++void PROJStringFormatter::popOmitZUnitConversion() {
++ assert(d->omitZUnitConversion_.size() > 1);
++ d->omitZUnitConversion_.pop_back();
+ }
+
+ // ---------------------------------------------------------------------------
+
+ bool PROJStringFormatter::omitZUnitConversion() const {
+- return d->omitZUnitConversion_;
++ return d->omitZUnitConversion_.back();
+ }
+
+ // ---------------------------------------------------------------------------
+@@ -6995,7 +7001,7 @@ PROJStringParser::Private::buildBoundOrC
+ Transformation::createGravityRelatedHeightToGeographic3D(
+ PropertyMap().set(IdentifiedObject::NAME_KEY,
+ "unknown to WGS84 ellipsoidal height"),
+- crs, GeographicCRS::EPSG_4979, geoidgrids,
++ crs, GeographicCRS::EPSG_4979, nullptr, geoidgrids,
+ std::vector<PositionalAccuracyNNPtr>());
+ auto boundvcrs =
+ BoundCRS::create(vcrs, GeographicCRS::EPSG_4979, transformation);
=====================================
debian/patches/series
=====================================
@@ -1 +1,2 @@
spelling-errors.patch
+pr1454-createOperations-fix-case-of-ETRS89-3D-to-proj-string-with-nadgrids-and-geoidgrids.patch
=====================================
debian/proj-bin.lintian-overrides
=====================================
@@ -0,0 +1,3 @@
+# Long line
+manpage-has-errors-from-man usr/share/man/man1/projinfo.1.gz 70: warning [p 1, 6.2i]: cannot adjust line
+
View it on GitLab: https://salsa.debian.org/debian-gis-team/proj/compare/d80cac498fb5c7579e8c5fd8874142e804949d01...80b406eb725fd095e79dc7d10598ebf8ee407027
--
View it on GitLab: https://salsa.debian.org/debian-gis-team/proj/compare/d80cac498fb5c7579e8c5fd8874142e804949d01...80b406eb725fd095e79dc7d10598ebf8ee407027
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-grass-devel/attachments/20190506/aa495561/attachment-0001.html>
More information about the Pkg-grass-devel
mailing list