diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/4D_api.cpp | 2 | ||||
| -rw-r--r-- | src/bin_proj.cmake | 3 | ||||
| -rw-r--r-- | src/iso19111/operation/coordinateoperationfactory.cpp | 7 | ||||
| -rw-r--r-- | src/iso19111/operation/singleoperation.cpp | 15 | ||||
| -rw-r--r-- | src/proj.h | 8 |
5 files changed, 21 insertions, 14 deletions
diff --git a/src/4D_api.cpp b/src/4D_api.cpp index 4e575f14..d366aba8 100644 --- a/src/4D_api.cpp +++ b/src/4D_api.cpp @@ -1310,7 +1310,7 @@ int proj_trans_bounds(PJ_CONTEXT* context, double* out_ymin, double* out_xmax, double* out_ymax, - int densify_pts + const int densify_pts ) { *out_xmin = HUGE_VAL; *out_ymin = HUGE_VAL; diff --git a/src/bin_proj.cmake b/src/bin_proj.cmake index 163303f8..2df467af 100644 --- a/src/bin_proj.cmake +++ b/src/bin_proj.cmake @@ -43,9 +43,6 @@ if(UNIX) else() add_executable(invproj ${PROJ_SRC}) - set_target_properties(invproj - PROPERTIES - RUNTIME_OUTPUT_NAME proj) target_link_libraries(invproj PRIVATE ${PROJ_LIBRARIES}) target_compile_options(invproj PRIVATE ${PROJ_CXX_WARN_FLAGS}) diff --git a/src/iso19111/operation/coordinateoperationfactory.cpp b/src/iso19111/operation/coordinateoperationfactory.cpp index b59eeb91..e9bd3cfe 100644 --- a/src/iso19111/operation/coordinateoperationfactory.cpp +++ b/src/iso19111/operation/coordinateoperationfactory.cpp @@ -4347,6 +4347,9 @@ void CoordinateOperationFactory::Private::createOperationsBoundToGeog( const bool heightDepthReversal = ((srcIsUp && dstIsDown) || (srcIsDown && dstIsUp)); + if (convDst == 0) + throw InvalidOperation( + "Conversion factor of target unit is 0"); const double factor = convSrc / convDst; auto conv = Conversion::createChangeVerticalUnit( util::PropertyMap().set( @@ -4460,6 +4463,8 @@ void CoordinateOperationFactory::Private::createOperationsVertToVert( const bool heightDepthReversal = ((srcIsUp && dstIsDown) || (srcIsDown && dstIsUp)); + if (convDst == 0) + throw InvalidOperation("Conversion factor of target unit is 0"); const double factor = convSrc / convDst; if (!equivalentVDatum) { auto name = buildTransfName(sourceCRS->nameStr(), targetCRS->nameStr()); @@ -4557,6 +4562,8 @@ void CoordinateOperationFactory::Private::createOperationsVertToGeogBallpark( const bool heightDepthReversal = ((srcIsUp && dstIsDown) || (srcIsDown && dstIsUp)); + if (convDst == 0) + throw InvalidOperation("Conversion factor of target unit is 0"); const double factor = convSrc / convDst; const auto &sourceCRSExtent = getExtent(sourceCRS); diff --git a/src/iso19111/operation/singleoperation.cpp b/src/iso19111/operation/singleoperation.cpp index 2f60828e..4dadfa40 100644 --- a/src/iso19111/operation/singleoperation.cpp +++ b/src/iso19111/operation/singleoperation.cpp @@ -2118,15 +2118,18 @@ bool SingleOperation::exportToPROJStringGeneric( } if (methodEPSGCode == EPSG_CODE_METHOD_CHANGE_VERTICAL_UNIT) { - double convFactor = parameterValueNumericAsSI( + const double convFactor = parameterValueNumericAsSI( EPSG_CODE_PARAMETER_UNIT_CONVERSION_SCALAR); - auto uom = common::UnitOfMeasure(std::string(), convFactor, - common::UnitOfMeasure::Type::LINEAR) - .exportToPROJString(); - auto reverse_uom = - common::UnitOfMeasure(std::string(), 1.0 / convFactor, + const auto uom = + common::UnitOfMeasure(std::string(), convFactor, common::UnitOfMeasure::Type::LINEAR) .exportToPROJString(); + const auto reverse_uom = + convFactor == 0.0 + ? std::string() + : common::UnitOfMeasure(std::string(), 1.0 / convFactor, + common::UnitOfMeasure::Type::LINEAR) + .exportToPROJString(); if (uom == "m") { // do nothing } else if (!uom.empty()) { @@ -604,10 +604,10 @@ int PROJ_DLL proj_trans_bounds( PJ_CONTEXT* context, PJ *P, PJ_DIRECTION direction, - const double xmin, - const double ymin, - const double xmax, - const double ymax, + double xmin, + double ymin, + double xmax, + double ymax, double* out_xmin, double* out_ymin, double* out_xmax, |
