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/src/geo/multizonal.cppm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'server/src/geo/multizonal.cppm') 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