cleaning up
Some checks failed
Build and deploy the backend to staging / Build and push image (pull_request) Failing after 2m17s
Build and deploy the backend to staging / Deploy to staging (pull_request) Has been skipped
Run linting on the backend code / Build (pull_request) Failing after 25s
Run testing on the backend code / Build (pull_request) Failing after 1m54s

This commit is contained in:
Helldragon67 2025-01-09 09:42:11 +01:00
parent 160059d94b
commit a0a3d76b78
3 changed files with 66 additions and 62 deletions

View File

@ -224,6 +224,9 @@ class ClusterManager:
for elem in result.elements():
location = (elem.centerLat(), elem.centerLon())
# Skip if element has neither name or location
if elem.tag('name') is None :
continue
if location[0] is None :
location = (elem.lat(), elem.lon())
if location[0] is None :

View File

@ -261,97 +261,71 @@ class LandmarkManager:
if 'building:part' in elem.tags().keys() and elem.tag('building:part') == 'yes':
continue
elem_type = landmarktype # Add the landmark type as 'sightseeing,
n_tags = len(elem.tags().keys()) # Add number of tags
score = n_tags**self.tag_exponent # Add score
website_url = None
image_url = None
name_en = None
elem_type = landmarktype # Add the landmark type as 'sightseeing,
n_tags = len(elem.tags().keys()) # Add number of tags
score = n_tags**self.tag_exponent # Add score
duration = 5 # Set base duration to 5 minutes
skip = False # Set skipping parameter to false
tag_values = set(elem.tags().values()) # Store tag values
# Adjust scoring, browse through tag keys
skip = False
# Use simple tags :
image_url = elem.tag('image')
website_url = elem.tag('website')
if website_url is None :
website_url = elem.tag('wikipedia')
name_en = elem.tag('name:en')
if elem_type != "nature" and elem.tag('leisure') == "park":
elem_type = "nature"
# Skip element if it is an administrative boundary or a disused thing or it is an appartement and useless amenities
if elem.tag('boundary') is not None or elem.tag('disused') is not None:
continue
if 'apartments' in elem.tags().values():
continue
if elem.tag('historic') is not None and elem.tag('historic') in ['manor', 'optical_telegraph', 'pound', 'shieling', 'wayside_cross']:
continue
# Adjust scoring, browse through tag keys using wildcards
for tag_key in elem.tags().keys():
if "pay" in tag_key:
# payment options are misleading and should not count for the scoring.
score += self.pay_bonus
if "disused" in tag_key:
# skip disused amenities
skip = True
break
if "building:" in tag_key:
# do not count the building description as being particularly useful
n_tags -= 1
if "boundary" in tag_key:
# skip "areas" like administrative boundaries and stuff
skip = True
break
if "historic" in tag_key and elem.tag('historic') in ['manor', 'optical_telegraph', 'pound', 'shieling', 'wayside_cross']:
# skip useless amenities
skip = True
break
if "name" in tag_key :
score += self.name_bonus
if "wiki" in tag_key:
# wikipedia entries count more
score += self.wikipedia_bonus
if "image" in tag_key:
# images must count more
score += self.image_bonus
if elem_type != "nature":
if "leisure" in tag_key and elem.tag('leisure') == "park":
elem_type = "nature"
if landmarktype != "shopping":
if "shop" in tag_key:
skip = True
break
if tag_key == "building" and elem.tag('building') in ['retail', 'supermarket', 'parking']:
skip = True
break
# Extract image, website and english name
if tag_key in ['website', 'contact:website']:
website_url = elem.tag(tag_key)
if tag_key == 'image':
image_url = elem.tag('image')
if tag_key =='name:en':
name_en = elem.tag('name:en')
# if tag_key == "building" and elem.tag('building') in ['retail', 'supermarket', 'parking']:
# skip = True
# break
if skip:
continue
# Don't visit random apartments
if 'apartments' in elem.tags().values():
continue
score = score_function(score)
if "place_of_worship" in elem.tags().values() :
if "cathedral" not in elem.tags().values() :
score = score * self.church_coeff
duration = 5
else :
if "place_of_worship" in tag_values :
if 'cathedral' in tag_values :
duration = 10
else :
score *= self.church_coeff
elif 'viewpoint' in elem.tags().values() :
elif 'viewpoint' in tag_values :
# viewpoints must count more
score = score * self.viewpoint_bonus
duration = 10
elif "museum" in elem.tags().values() or "aquarium" in elem.tags().values() or "planetarium" in elem.tags().values():
elif "museum" in tag_values or "aquarium" in tag_values or "planetarium" in tag_values:
duration = 60
else:
duration = 5
# finally create our own landmark object
landmark = Landmark(

27
backend/src/utils/test.py Normal file
View File

@ -0,0 +1,27 @@
from OSMPythonTools.overpass import Overpass, overpassQueryBuilder
overpass = Overpass()
query = overpassQueryBuilder(
bbox = (45.7300, 4.7900, 45.8000, 4.8600),
elementType = ['way'],
# selector can in principle be a list already,
# but it generates the intersection of the queries
# we want the union
selector = '"historic"="building"',
includeCenter = True,
out = 'body'
)
res = overpass.query(query)
# for elem in res.elements() :
elem = res.elements()[1]
tags = elem.tags()
test = elem.tag('sgehs')
print(test)