2009-08-02 5 views
0

Ich versuche, einige Netzwerkanalyse für einen Client zu tun. Die bereitgestellte Straßennetz-GIS-Schicht ist von schlechter Qualität; daher muss ich auf Google Maps zurückgreifen, um mir den kürzesten Weg zwischen 200 Punkten zu geben, um Zeit- und Entfernungsmatrizen zwischen jedem Punkt zu erzeugen.Suche nach kürzesten Wegen mit Google Maps für eine große Anzahl von Knoten

Gibt es eine Möglichkeit, die Ebene als eine Menge von KML-Punkten einzugeben, um die Ergebnisse der Entfernung und Zeit zwischen diesen Punkten zu erhalten?

Wenn dies über die API möglich ist, haben Sie Hinweise oder Vorschläge zum Schreiben eines solchen Skripts?

node_1, node_2, distance, travel_time 
node_n, node_m, distance, travel_time 

Antwort

2

Ich werde das ganze Skript für Sie nicht schreiben, aber dies kann mit dem Karten-API erfolgen:

EDIT das ideale Endergebnis wäre eine CSV-Datei in der folgenden Form sein. Aufmachen the maps sandbox und fügen Sie die onGDirectionsLoad Funktion:

alert(gdir.getDistance().meters); 

Sie können die Dokumentation here - ein getDuration() ist ebenfalls verfügbar. Dann müssen Sie nur eine neue Anfrage ausgeben, nachdem Sie fertig sind, und erhalten Anweisungen für jedes Paar von Start- und Endpunkt.

Beachten Sie jedoch, dass wenn Sie planen, 200 * 200 Pfade zu erhalten, google möglicherweise entscheiden, Sie zu einem bestimmten Zeitpunkt zu begrenzen. Verwenden Sie diese Methode auf eigenes Risiko und mit einer Verzögerung zwischen den Anfragen.

Beachten Sie auch, dass googles builtin KML support nicht unterstützt, Ihnen die Liste der Punkte zu geben - das macht Sinn, da der Client nur die haben kann, die gerade auf dem Bildschirm sind. Möglicherweise müssen Sie Ihren eigenen KML-Loader schreiben, wenn Sie KML als Eingabeformat verwenden möchten. Oder verwenden Sie ein einfacheres Format wie in this example.

+0

Sind Ihnen andere Möglichkeiten bekannt, wie ich eine Entfernungsmatrix erstellen kann? – dassouki