diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2018-12-17 19:30:34 +0100 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2018-12-17 20:01:05 +0100 |
| commit | 898b8595276779cd8613e0c4b267181a76acecab (patch) | |
| tree | ff1bfd55bd1919ca28ffb335470d0f901d0de09c /src/io.cpp | |
| parent | dcb58eb624f87fad1362bfc593b274f84fa44889 (diff) | |
| download | PROJ-898b8595276779cd8613e0c4b267181a76acecab.tar.gz PROJ-898b8595276779cd8613e0c4b267181a76acecab.zip | |
Add WKT2 grammar validation
Diffstat (limited to 'src/io.cpp')
| -rw-r--r-- | src/io.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
@@ -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; |
