From ad36b5c27dde2ad6d8c2685c2da281e8558bcdd7 Mon Sep 17 00:00:00 2001 From: map-per Date: Thu, 11 Dec 2025 18:09:59 +0100 Subject: [PATCH] only use OSM tags for complex types Signed-off-by: map-per --- libs/editor/feature_type_to_osm.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/libs/editor/feature_type_to_osm.cpp b/libs/editor/feature_type_to_osm.cpp index 4f07290e1..9bff1d82a 100644 --- a/libs/editor/feature_type_to_osm.cpp +++ b/libs/editor/feature_type_to_osm.cpp @@ -53,12 +53,13 @@ void TypeToOSMTranslator::LoadFromStream(std::istream & s) //LOG(LINFO, ("type: ", tokens[0])); - uint32_t type = classif().GetTypeByPathSafe(strings::Tokenize(tokens[0], "|")); + // Get internal feature type + std::vector typeTokens = strings::Tokenize(tokens[0], "|"); + uint32_t type = classif().GetTypeByPathSafe(typeTokens); - if (tokens.size() == 2) + if (typeTokens.size() <= 2) { - // OSM tags can be derived from type name - std::vector typeTokens = strings::Tokenize(tokens[0], "|"); + // simple feature type: OSM tags can be derived from type name ASSERT(typeTokens.size() <= 2, ("OSM tags can not be derived from 3-arity/complex types")); ASSERT(!typeTokens.empty(), ("No type name found")); @@ -79,13 +80,14 @@ void TypeToOSMTranslator::LoadFromStream(std::istream & s) LOG(LINFO, ("Simple type: Added type ", type, ":", osmTag.key, "=", osmTag.value)); } - else if (tokens.size() > 2) + else { - // OSM tags are listed in the entry LOG(LINFO, ("Complex type: token size:", tokens.size(), " | osmTags: ", tokens[1])); - std::vector osmTagTokens = strings::Tokenize(tokens[1], ","); + // complex feature type: OSM tags are listed in the entry + ASSERT(tokens.size() > 2, ("OSM tags not listed for complex feature type: ", line)); + std::vector osmTagTokens = strings::Tokenize(tokens[1], ","); ASSERT(!osmTagTokens.empty(), ("No OSM tag tokens found")); // First entry is the best practice way to tag a feature @@ -118,6 +120,8 @@ void TypeToOSMTranslator::LoadFromStream(std::istream & s) pos = end + 1; } + + m_storage.insert({type, osmTags}); } if (lineNumber > 80)