From 4022e2093a6773458c2453e42089c987da6efbf9 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 6 Dec 2018 19:40:13 +0100 Subject: Fix special handling of Azimuth parameter of Krovak --- src/io.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/io.cpp') diff --git a/src/io.cpp b/src/io.cpp index f396f1df..ec35bdc5 100644 --- a/src/io.cpp +++ b/src/io.cpp @@ -6674,7 +6674,7 @@ CRSNNPtr PROJStringParser::Private::buildProjectedCRS( } else if (step.name == "krovak") { if (param->epsg_code == EPSG_CODE_PARAMETER_COLATITUDE_CONE_AXIS) { - value = 30.2881397222222; + value = 30.28813975277777776; } else if ( param->epsg_code == EPSG_CODE_PARAMETER_LATITUDE_PSEUDO_STANDARD_PARALLEL) { -- cgit v1.2.3 From 263b259b276edd075b0abcd6aad0e923230c2d15 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Fri, 7 Dec 2018 02:22:20 +0100 Subject: Various speed optimizations --- src/io.cpp | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) (limited to 'src/io.cpp') diff --git a/src/io.cpp b/src/io.cpp index ec35bdc5..b5da2b8c 100644 --- a/src/io.cpp +++ b/src/io.cpp @@ -490,7 +490,7 @@ static std::string normalizeSerializedString(const std::string &in) { return in; } #else -static std::string normalizeSerializedString(const std::string &in) { +static inline std::string normalizeSerializedString(const std::string &in) { return in; } #endif @@ -499,11 +499,19 @@ static std::string normalizeSerializedString(const std::string &in) { void WKTFormatter::add(double number, int precision) { d->startNewChild(); - std::string val( - normalizeSerializedString(internal::toString(number, precision))); - d->result_ += val; - if (d->params_.useESRIDialect_ && val.find('.') == std::string::npos) { - d->result_ += ".0"; + if (number == 0.0) { + if (d->params_.useESRIDialect_) { + d->result_ += "0.0"; + } else { + d->result_ += '0'; + } + } else { + std::string val( + normalizeSerializedString(internal::toString(number, precision))); + d->result_ += val; + if (d->params_.useESRIDialect_ && val.find('.') == std::string::npos) { + d->result_ += ".0"; + } } } @@ -1963,8 +1971,7 @@ GeodeticReferenceFrameNNPtr WKTParser::Private::buildGeodeticReferenceFrame( foundDatumName = true; properties.set(IdentifiedObject::NAME_KEY, refDatum->nameStr()); - if (properties.find(Identifier::CODESPACE_KEY) == - properties.end() && + if (!properties.get(Identifier::CODESPACE_KEY) && refDatum->identifiers().size() == 1) { const auto &id = refDatum->identifiers()[0]; auto identifiers = ArrayOfBaseObject::create(); -- cgit v1.2.3