added OSM api

This commit is contained in:
2024-05-23 12:20:32 +02:00
committed by Remy Moll
parent ddc6073fbb
commit 175cf3e350
3 changed files with 64 additions and 18 deletions

View File

@@ -0,0 +1,52 @@
from OSMPythonTools.api import Api
from OSMPythonTools.overpass import Overpass
from dataclasses import dataclass
# Defines the landmark class (aka some place there is to visit)
@dataclass
class Landmark :
name : str
attractiveness : int
id : int
# Converts a OSM id to a landmark
def add_from_id(id: int, score: int) :
try :
s = 'way/' + str(id) # prepare string for query
obj = api.query(s) # object to add
except :
s = 'relation/' + str(id) # prepare string for query
obj = api.query(s) # object to add
return Landmark(obj.tag('name:fr'), score, id) # create Landmark out of it
# take a lsit of tuples (id, score) to generate a list of landmarks
def generate_landmarks(ids_and_scores: list) :
L = []
for tup in ids_and_scores :
L.append(add_from_id(tup[0], tup[1]))
return L
api = Api()
l = (7515426, 70)
t = (5013364, 100)
n = (201611261, 99)
a = (226413508, 50)
m = (23762981, 30)
ids_and_scores = [t, l, n, a, m]
landmarks = generate_landmarks(ids_and_scores)
for obj in landmarks :
print(obj)

View File

@@ -1,15 +1,9 @@
from scipy.optimize import linprog
import numpy as np
from scipy.linalg import block_diag
from dataclasses import dataclass
# Defines the landmark class (aka some place there is to visit)
@dataclass
class Landmark :
name : str
attractiveness : int
loc : tuple
# landmarks = [Landmark_1, Landmark_2, ...]
# Convert the solution of the optimization into the list of edges to follow. Order is taken into account
def untangle(resx: list) :