From 3fcfe8e5b2c76efeea1e838fb6b7e235804ecd8f Mon Sep 17 00:00:00 2001 From: Rutger Broekhoff Date: Tue, 8 Sep 2026 10:44:58 +0200 Subject: Some optimization --- server/CMakeLists.txt | 7 +++++-- server/src/geo/multizonal.cppm | 8 ++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/server/CMakeLists.txt b/server/CMakeLists.txt index 7522dbe..53cda76 100644 --- a/server/CMakeLists.txt +++ b/server/CMakeLists.txt @@ -34,8 +34,6 @@ target_sources(routemon_lib src/config.cpp src/datex2.cppm src/datex2.cpp - src/geo.cppm - src/geo.cpp src/gpx.cppm src/gpx.cpp src/http_client.cppm @@ -65,6 +63,11 @@ target_sources(routemon_lib src/util.cpp src/xml.cppm src/xml.cpp + src/geo/geo.cppm + src/geo/multizonal.cppm + src/geo/utm.cppm + src/geo/utm_zone_local.cppm + src/geo/wgs84.cppm ) add_executable(routemon src/main.cpp) diff --git a/server/src/geo/multizonal.cppm b/server/src/geo/multizonal.cppm index f732994..ed78a24 100644 --- a/server/src/geo/multizonal.cppm +++ b/server/src/geo/multizonal.cppm @@ -204,7 +204,7 @@ public: { for (auto ls : zone_segments[z]) { - utm::zone_local::prim::box blse = + auto blse = bgeo::return_buffer(bgeo::return_envelope(ls), 30.0 /* m */); local_rtrees_[z].insert(index_value{blse, std::move(ls), std::forward(arg)}); } @@ -228,7 +228,11 @@ public: for (auto it = local_rtrees_[ls.zone].qbegin(bgeo::index::intersects(ls)); it != local_rtrees_[ls.zone].qend(); it++) { - if (bgeo::intersects(ls, std::get<1>(*it))) + using multi_linestring = bgeo::model::multi_linestring; + + auto relevant_ls_parts = multi_linestring{}; + bgeo::intersection(std::get<0>(*it), static_cast(ls), relevant_ls_parts); + if (bgeo::distance(relevant_ls_parts, std::get<1>(*it)) < 30.0 /* m */) { co_yield std::get<2>(*it); } -- cgit v1.3