overpass as class
Some checks failed
Build and deploy the backend to staging / Build and push image (pull_request) Successful in 2m4s
Run linting on the backend code / Build (pull_request) Successful in 29s
Run testing on the backend code / Build (pull_request) Failing after 4m39s
Build and deploy the backend to staging / Deploy to staging (pull_request) Successful in 24s

This commit is contained in:
2025-01-23 16:02:33 +01:00
parent 1cc935fb34
commit 577ee232fc
5 changed files with 134 additions and 126 deletions

View File

@@ -6,15 +6,14 @@ import numpy as np
from sklearn.cluster import DBSCAN
from pydantic import BaseModel
from ..overpass.overpass import build_query, send_query
from ..overpass.caching_strategy import CachingStrategy
from ..overpass.overpass import Overpass
from ..structs.landmark import Landmark
from .get_time_distance import get_distance
from ..constants import OSM_CACHE_DIR
# silence the overpass logger
logging.getLogger('overpass').setLevel(level=logging.CRITICAL)
logging.getLogger('Overpass').setLevel(level=logging.CRITICAL)
class Cluster(BaseModel):
@@ -79,7 +78,9 @@ class ClusterManager:
Args:
bbox: The bounding box coordinates (around:radius, center_lat, center_lon).
"""
CachingStrategy.use('XML', cache_dir=OSM_CACHE_DIR)
# Setup the caching in the Overpass class.
self.overpass = Overpass(caching_strategy='XML', cache_dir=OSM_CACHE_DIR)
self.cluster_type = cluster_type
if cluster_type == 'shopping' :
@@ -94,16 +95,16 @@ class ClusterManager:
raise NotImplementedError("Please choose only an available option for cluster detection")
# Initialize the points for cluster detection
query = build_query(
query = self.overpass.build_query(
area = bbox,
element_types = osm_types,
osm_types = osm_types,
selector = sel,
out = out
)
self.logger.debug(f"Cluster query: {query}")
try:
result = send_query(query)
result = self.overpass.send_query(query)
except Exception as e:
self.logger.error(f"Error fetching landmarks: {e}")
@@ -243,15 +244,15 @@ class ClusterManager:
osm_types = ['node', 'way', 'relation']
for sel in selectors :
query = build_query(
query = self.overpass.build_query(
area = bbox,
element_types = osm_types,
osm_types = osm_types,
selector = sel,
out = 'ids center'
)
try:
result = send_query(query)
result = self.overpass.send_query(query)
except Exception as e:
self.logger.error(f"Error fetching landmarks: {e}")
continue

View File

@@ -8,13 +8,12 @@ from ..structs.preferences import Preferences
from ..structs.landmark import Landmark
from .take_most_important import take_most_important
from .cluster_manager import ClusterManager
from ..overpass.overpass import build_query, send_query
from ..overpass.caching_strategy import CachingStrategy
from ..overpass.overpass import Overpass
from ..constants import AMENITY_SELECTORS_PATH, LANDMARK_PARAMETERS_PATH, OPTIMIZER_PARAMETERS_PATH, OSM_CACHE_DIR
# silence the overpass logger
logging.getLogger('overpass').setLevel(level=logging.CRITICAL)
logging.getLogger('Overpass').setLevel(level=logging.CRITICAL)
class LandmarkManager:
@@ -56,7 +55,8 @@ class LandmarkManager:
self.walking_speed = parameters['average_walking_speed']
self.detour_factor = parameters['detour_factor']
CachingStrategy.use('XML', cache_dir=OSM_CACHE_DIR)
# Setup the caching in the Overpass class.
self.overpass = Overpass(caching_strategy='XML', cache_dir=OSM_CACHE_DIR)
self.logger.info('LandmakManager successfully initialized.')
@@ -189,15 +189,15 @@ class LandmarkManager:
for sel in dict_to_selector_list(amenity_selector):
# self.logger.debug(f"Current selector: {sel}")
element_types = ['way', 'relation']
osm_types = ['way', 'relation']
if 'viewpoint' in sel :
query_conditions = []
element_types.append('node')
osm_types.append('node')
query = build_query(
query = self.overpass.build_query(
area = bbox,
element_types = element_types,
osm_types = osm_types,
selector = sel,
conditions = query_conditions, # except for nature....
out = 'center'
@@ -205,7 +205,7 @@ class LandmarkManager:
self.logger.debug(f"Query: {query}")
try:
result = send_query(query)
result = self.overpass.send_query(query)
except Exception as e:
self.logger.error(f"Error fetching landmarks: {e}")
continue

View File

@@ -2,14 +2,13 @@
import logging
import xml.etree.ElementTree as ET
from ..overpass.overpass import build_query, send_query
from ..overpass.caching_strategy import CachingStrategy
from ..overpass.overpass import Overpass
from ..structs.landmark import Toilets
from ..constants import OSM_CACHE_DIR
# silence the overpass logger
logging.getLogger('overpass').setLevel(level=logging.CRITICAL)
logging.getLogger('Overpass').setLevel(level=logging.CRITICAL)
class ToiletsManager:
"""
@@ -40,7 +39,9 @@ class ToiletsManager:
self.radius = radius
self.location = location
CachingStrategy.use('XML', cache_dir=OSM_CACHE_DIR)
# Setup the caching in the Overpass class.
self.overpass = Overpass(caching_strategy='XML', cache_dir=OSM_CACHE_DIR)
def generate_toilet_list(self) -> list[Toilets] :
@@ -56,16 +57,16 @@ class ToiletsManager:
osm_types = ['node', 'way', 'relation']
toilets_list = []
query = build_query(
query = self.overpass.build_query(
area = bbox,
element_types = osm_types,
osm_types = osm_types,
selector = '"amenity"="toilets"',
out = 'ids center tags'
)
self.logger.debug(f"Query: {query}")
try:
result = send_query(query)
result = self.overpass.send_query(query)
except Exception as e:
self.logger.error(f"Error fetching landmarks: {e}")
return None