From 898b8595276779cd8613e0c4b267181a76acecab Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Mon, 17 Dec 2018 19:30:34 +0100 Subject: Add WKT2 grammar validation --- src/io.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/io.cpp') diff --git a/src/io.cpp b/src/io.cpp index 79f8ae5e..fe3680fb 100644 --- a/src/io.cpp +++ b/src/io.cpp @@ -61,6 +61,7 @@ #include "proj_constants.h" #include "pj_wkt1_parser.h" +#include "pj_wkt2_parser.h" // PROJ include order is sensitive // clang-format off @@ -1782,6 +1783,12 @@ UnitOfMeasure WKTParser::Private::buildUnitInSubNode(const WKTNodeNNPtr &node, return buildUnit(unitNode, UnitOfMeasure::Type::TIME); } } + { + auto &unitNode = nodeP->lookForChild(WKTConstants::TEMPORALQUANTITY); + if (!isNull(unitNode)) { + return buildUnit(unitNode, UnitOfMeasure::Type::TIME); + } + } { auto &unitNode = nodeP->lookForChild(WKTConstants::PARAMETRICUNIT); @@ -4366,6 +4373,12 @@ BaseObjectNNPtr WKTParser::createFromWKT(const std::string &wkt) { if (!errorMsg.empty()) { d->emitRecoverableAssertion(errorMsg); } + } else if (dialect == WKTGuessedDialect::WKT2_2015 || + dialect == WKTGuessedDialect::WKT2_2018) { + auto errorMsg = pj_wkt2_parse(wkt); + if (!errorMsg.empty()) { + d->emitRecoverableAssertion(errorMsg); + } } return obj; -- cgit v1.2.3