From d9806757f098544688e1b2a669eb44d535f61da5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sven=20J=C3=A4ger?= Date: Tue, 23 Jul 2024 10:51:49 +0000 Subject: [PATCH 1/3] state park are national parks --- plugins/navteq/converter/LanduseConverter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/navteq/converter/LanduseConverter.cpp b/plugins/navteq/converter/LanduseConverter.cpp index 752bd0f..d6bbafc 100644 --- a/plugins/navteq/converter/LanduseConverter.cpp +++ b/plugins/navteq/converter/LanduseConverter.cpp @@ -135,7 +135,7 @@ void LanduseConverter::build_landuse_taglist( // FEAT_TYPE 'PARK (STATE)' // In many cases this is meant to be a national park or // protected area but this is not guaranteed - tl_builder.add_tag("leisure", "park"); + tl_builder.add_tag("boundary", "national_park"); } else if (featureCode == "900140") { // FEAT_TYPE 'PARK IN WATER' tl_builder.add_tag("boundary", "national_park"); From e27aeeda7866842a597248802dc49a8133da525f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sven=20J=C3=A4ger?= Date: Tue, 23 Jul 2024 10:51:56 +0000 Subject: [PATCH 2/3] fix cmake warning --- CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1fc6877..72d00f8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,7 +47,6 @@ add_executable(${PROJECT_NAME} ${MAIN_CPP_FILES} ${CPP_FILES}) target_link_libraries(${PROJECT_NAME} PRIVATE ${ICU_LIBRARY} PRIVATE Boost::boost Boost::log Boost::program_options PRIVATE GEOS::geos - PRIVATE ${OSMIUM_INCLUDE_DIRS} PRIVATE GDAL::GDAL PRIVATE expat bz2 ) \ No newline at end of file From 82bebc2024cfb623d906da9d4d43669fd9d5d9b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sven=20J=C3=A4ger?= Date: Mon, 29 Jul 2024 12:53:50 +0000 Subject: [PATCH 3/3] use get_bool_from_feature --- plugins/navteq/converter/RailwayConverter.cpp | 4 +- plugins/navteq/converter/StreetConverter.cpp | 12 ++-- .../converter/StreetConverterOSMTagger.cpp | 59 +++++++++---------- 3 files changed, 36 insertions(+), 39 deletions(-) diff --git a/plugins/navteq/converter/RailwayConverter.cpp b/plugins/navteq/converter/RailwayConverter.cpp index d8cf65d..85d0226 100644 --- a/plugins/navteq/converter/RailwayConverter.cpp +++ b/plugins/navteq/converter/RailwayConverter.cpp @@ -76,10 +76,10 @@ void RailwayConverter::process_railways( tl_builder.add_tag("railway", "rail"); tl_builder.add_tag("usage", "main"); - if (parse_bool(feat->GetFieldAsString(BRIDGE.data()))) + if (get_bool_from_feature(feat, BRIDGE)) tl_builder.add_tag("bridge", YES.data()); - if (parse_bool(feat->GetFieldAsString(TUNNEL.data()))) + if (get_bool_from_feature(feat, TUNNEL)) tl_builder.add_tag("tunnel", YES.data()); } { diff --git a/plugins/navteq/converter/StreetConverter.cpp b/plugins/navteq/converter/StreetConverter.cpp index 8c644ce..1b35efc 100644 --- a/plugins/navteq/converter/StreetConverter.cpp +++ b/plugins/navteq/converter/StreetConverter.cpp @@ -421,7 +421,7 @@ StreetConverter::read_junction_names(const std::filesystem::path &dbf_file) { std::map junctionNames; for (auto &feat : *layer) { - if (parse_bool(get_field_from_feature(feat, JUNCTIONNM))) { + if (get_bool_from_feature(feat, JUNCTIONNM)) { uint64_t link_id = get_uint_from_feature(feat, LINK_ID); junctionNames[link_id] = get_field_from_feature(feat, ST_NM_BASE); } @@ -444,15 +444,13 @@ void StreetConverter::parse_ramp_names( if (layer == nullptr) throw(shp_empty_error(shp_file.string())); - int exitNameField = layer->FindFieldIndex(EXITNAME.data(), true); int linkIdField = layer->FindFieldIndex(LINK_ID.data(), true); int baseNameField = layer->FindFieldIndex(ST_NM_BASE.data(), true); int directionField = layer->FindFieldIndex(DIR_TRAVEL.data(), true); - int rampField = layer->FindFieldIndex(RAMP.data(), true); for (auto &feat : *layer) { - if (!parse_bool(feat->GetFieldAsString(rampField))) { + if (!get_bool_from_feature(feat, RAMP)) { continue; } @@ -463,7 +461,7 @@ void StreetConverter::parse_ramp_names( location = osmium::Location(ogr_ls->getX(ogr_ls->getNumPoints() - 1), ogr_ls->getY(ogr_ls->getNumPoints() - 1)); - if (parse_bool(feat->GetFieldAsString(exitNameField))) { + if (get_bool_from_feature(feat, EXITNAME)) { std::string exitName = feat->GetFieldAsString(baseNameField); // add junction name @@ -847,12 +845,12 @@ void StreetConverter::set_ferry_z_lvls_to_zero( if (z_lvl_vec.size() > 2) z_lvl_vec.erase(z_lvl_vec.begin() + 1, z_lvl_vec.end() - 1); // erase first z_lvl if first index references first node - if (!z_lvl_vec.empty() && z_lvl_vec.begin()->index != 0) + if (!z_lvl_vec.empty() && z_lvl_vec.front().index != 0) z_lvl_vec.erase(z_lvl_vec.begin()); // erase last z_lvl if last index references last node OGRLineString *ogr_ls = static_cast(feat->GetGeometryRef()); if (!z_lvl_vec.empty() && - (z_lvl_vec.end() - 1)->index != ogr_ls->getNumPoints() - 1) + z_lvl_vec.back().index != ogr_ls->getNumPoints() - 1) z_lvl_vec.erase(z_lvl_vec.end()); } diff --git a/plugins/navteq/converter/StreetConverterOSMTagger.cpp b/plugins/navteq/converter/StreetConverterOSMTagger.cpp index db704dd..a7de519 100644 --- a/plugins/navteq/converter/StreetConverterOSMTagger.cpp +++ b/plugins/navteq/converter/StreetConverterOSMTagger.cpp @@ -114,7 +114,7 @@ uint64_t StreetConverter::parse_street_tags( const char *link_id_s = get_field_from_feature(f, LINK_ID); uint64_t link_id = std::stoul(link_id_s); - bool ramp = parse_bool(get_field_from_feature(f, RAMP)); + bool ramp = get_bool_from_feature(f, RAMP); ushort route_type = 0; if (!(std::string(get_field_from_feature(f, ROUTE)).empty())) @@ -153,11 +153,11 @@ uint64_t StreetConverter::parse_street_tags( if (debugMode) { builder.add_tag(LINK_ID.data(), link_id_s); add_here_speed_cat_tag(builder, f); - if (parse_bool(get_field_from_feature(f, TOLLWAY))) + if (get_bool_from_feature(f, TOLLWAY)) builder.add_tag("here:tollway", YES.data()); - if (parse_bool(get_field_from_feature(f, URBAN))) + if (get_bool_from_feature(f, URBAN)) builder.add_tag("here:urban", YES.data()); - if (parse_bool(get_field_from_feature(f, CONTRACC))) + if (get_bool_from_feature(f, CONTRACC)) builder.add_tag("here:controll_access", YES.data()); if (route_type) add_uint_tag(builder, "here:route_type", route_type); @@ -273,11 +273,10 @@ void StreetConverter::add_ferry_tag(osmium::builder::TagListBuilder &builder, if (only_pedestrians(f)) { builder.add_tag("foot", YES.data()); } else { - builder.add_tag("foot", - parse_bool(get_field_from_feature(f, AR_PEDESTRIANS)) - ? YES.data() - : NO.data()); - builder.add_tag("motorcar", parse_bool(get_field_from_feature(f, AR_AUTO)) + builder.add_tag("foot", get_bool_from_feature(f, AR_PEDESTRIANS) + ? YES.data() + : NO.data()); + builder.add_tag("motorcar", get_bool_from_feature(f, AR_AUTO) ? YES.data() : NO.data()); } @@ -310,17 +309,17 @@ void StreetConverter::add_highway_tags(osmium::builder::TagListBuilder &builder, add_lanes_tag(builder, f); add_postcode_tag(builder, f); - if (parse_bool(get_field_from_feature(f, PAVED))) + if (get_bool_from_feature(f, PAVED)) builder.add_tag("surface", "paved"); - if (parse_bool(get_field_from_feature(f, BRIDGE))) + if (get_bool_from_feature(f, BRIDGE)) builder.add_tag("bridge", YES.data()); - if (parse_bool(get_field_from_feature(f, TUNNEL))) + if (get_bool_from_feature(f, TUNNEL)) builder.add_tag("tunnel", YES.data()); - if (parse_bool(get_field_from_feature(f, TOLLWAY))) + if (get_bool_from_feature(f, TOLLWAY)) builder.add_tag("toll", YES.data()); - if (parse_bool(get_field_from_feature(f, ROUNDABOUT))) + if (get_bool_from_feature(f, ROUNDABOUT)) builder.add_tag("junction", "roundabout"); - if (parse_bool(get_field_from_feature(f, FOURWHLDR))) + if (get_bool_from_feature(f, FOURWHLDR)) builder.add_tag("4wd_only", YES.data()); } @@ -339,20 +338,20 @@ void StreetConverter::add_one_way_tag(osmium::builder::TagListBuilder &builder, void StreetConverter::add_access_tags(osmium::builder::TagListBuilder &builder, const OGRFeatureUniquePtr &f) { - bool automobile_allowed = parse_bool(get_field_from_feature(f, AR_AUTO)); + bool automobile_allowed = get_bool_from_feature(f, AR_AUTO); if (!automobile_allowed) builder.add_tag("motorcar", NO.data()); - if (!parse_bool(get_field_from_feature(f, AR_BUS))) + if (!get_bool_from_feature(f, AR_BUS)) builder.add_tag("bus", NO.data()); - if (!parse_bool(get_field_from_feature(f, AR_TAXIS))) + if (!get_bool_from_feature(f, AR_TAXIS)) builder.add_tag("taxi", NO.data()); // if (! parse_bool(get_field_from_feature(f, AR_CARPOOL))) // builder->add_tag("hov", NO); - if (!parse_bool(get_field_from_feature(f, AR_PEDESTRIANS))) + if (!get_bool_from_feature(f, AR_PEDESTRIANS)) builder.add_tag("foot", NO.data()); - if (!parse_bool(get_field_from_feature(f, AR_TRUCKS))) { + if (!get_bool_from_feature(f, AR_TRUCKS)) { // truck access handling: - if (!parse_bool(get_field_from_feature(f, AR_DELIV))) + if (!get_bool_from_feature(f, AR_DELIV)) builder.add_tag( "hgv", NO.data()); // no truck + no delivery => hgv not allowed at all @@ -364,14 +363,14 @@ void StreetConverter::add_access_tags(osmium::builder::TagListBuilder &builder, builder.add_tag("hgv", "delivery"); // automobile generally allowed => // only truck is 'delivery' } - if (!parse_bool(get_field_from_feature(f, AR_EMERVEH))) + if (!get_bool_from_feature(f, AR_EMERVEH)) builder.add_tag("emergency", NO.data()); - if (!parse_bool(get_field_from_feature(f, AR_MOTORCYCLES))) + if (!get_bool_from_feature(f, AR_MOTORCYCLES)) builder.add_tag("motorcycle", NO.data()); - if (!parse_bool(get_field_from_feature(f, PUB_ACCESS)) || - parse_bool(get_field_from_feature(f, PRIVATE))) { + if (!get_bool_from_feature(f, PUB_ACCESS) || + get_bool_from_feature(f, PRIVATE)) { builder.add_tag("access", "private"); - } else if (!parse_bool(get_field_from_feature(f, AR_THROUGH_TRAFFIC))) { + } else if (!get_bool_from_feature(f, AR_THROUGH_TRAFFIC)) { builder.add_tag("access", "destination"); } } @@ -511,7 +510,7 @@ void StreetConverter::add_highway_tag(osmium::builder::TagListBuilder &builder, const std::string &ref_name, bool underConstruction) { - bool paved = parse_bool(get_field_from_feature(f, PAVED)); + bool paved = get_bool_from_feature(f, PAVED); bool motorized_allowed = is_motorized_allowed(f); std::string highwayTagName = HIGHWAY.data(); @@ -537,9 +536,9 @@ void StreetConverter::add_highway_tag(osmium::builder::TagListBuilder &builder, builder.add_tag(highwayTagName, FOOTWAY.data()); } else { // paved + motorized allowed - bool controlled_access = parse_bool(get_field_from_feature(f, CONTRACC)); - bool urban = parse_bool(get_field_from_feature(f, URBAN)); - bool ramp = parse_bool(get_field_from_feature(f, RAMP)); + bool controlled_access = get_bool_from_feature(f, CONTRACC); + bool urban = get_bool_from_feature(f, URBAN); + bool ramp = get_bool_from_feature(f, RAMP); if (controlled_access) { // controlled_access => motorway