Дорога osmnx, соединяющая два города, не идентифицирована (отсутствующий узел границы) - PullRequest
0 голосов
/ 25 июня 2019

У меня есть алгоритм Dijsktra, который я применяю к графику, который я получаю из открытой карты улиц. Работает нормально с одним графиком.

Но когда я составляю график двух соседних городов, один и тот же алгоритм не находит пути между графиками ... Я заметил, что дорога, соединяющая два города, не была идентифицирована какой-либо осмидой. : - /

Я что-то пропустил?

class Pathfinding(nx.MultiDiGraph):

    def __init__(self, incomin_graphe_data = None, **attr):
        nx.MultiDiGraph.__init__(self,incomin_graphe_data,**attr)

    def dijsktra(self,depart,final):

        inf = float("inf")
        F ,ds, s= set(), None ,None
        D = {i: inf for i in self.nodes}
        D[ depart ] = 0
        pred = {}
        priority_queue = [(0 , depart)]

        while s != final:

            ds, s = heapq.heappop(priority_queue)
            F.add(s)
            for y in self.neighbors(s):    

                w = self[s][y][0]['lenght']
                dy = ds + w

                if y not in F :
                    if D[y] > dy :
                        D[y] = dy
                        heapq.heappush(priority_queue,(dy,y))
                        pred[y] = s

        path = [s]
        while s != depart:
            s = pred[s]
            path.append(s)
        return path

Я использую Dijkstra, и следующий граф типов - MultiDiGraph.

add_Aubervilliers = "Aubervilliers, France" 
Graphe_Aubervilliers = ox.graph_from_place(add_Aubervilliers, network_type='drive')

add_Saint_denis = " Saint denis, France "
Graphe_Saint_denis = ox.graph_from_place(add_Saint_denis, network_type = "drive") 
Graph_Paris_Auber = nx.compose_all([ Graphe_Saint_denis, Graphe_Aubervilliers ])

Я тоже пробовал со следующим командиром

add_Saint_denis = " Saint denis, France "
Graphe_Saint_denis = ox.graph_from_adress(add_Saint_denis, infrastructure='way['highway']') 

Но это дает ту же проблему ... Я что-то пропустил?

...