2009-08-02 6 views
0

J'essaie de faire une analyse de réseau pour un client. La couche SIG du réseau routier fournie est de mauvaise qualité; par conséquent, je dois recourir à Google Maps pour me fournir le chemin le plus court entre 200 points, pour produire des matrices de temps et de distance entre chaque point.Trouver les chemins les plus courts en utilisant google maps pour un grand nombre de nœuds

Y a-t-il un moyen de saisir la couche comme un ensemble de points KML pour obtenir des sorties de la distance et le temps entre ces points? Si cela est possible via l'API, avez-vous des conseils ou des suggestions sur la façon d'écrire un tel script?

EDIT le résultat final idéal serait un fichier CSV de la forme suivante:

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

Répondre

2

Je ne vais pas écrire le script entier pour vous, mais cela peut être fait avec l'API de cartes. Ouvrez the maps sandbox et ajouter à la fonction onGDirectionsLoad:

alert(gdir.getDistance().meters); 

Vous trouverez la documentation here - un getDuration() est également disponible. Ensuite, tout ce que vous devez faire est d'émettre une nouvelle requête une fois que vous avez terminé, en obtenant des directions pour chaque paire de points de départ et d'arrivée. Toutefois, notez que si vous prévoyez d'obtenir 200 * 200 chemins, google peut décider de vous limiter à un moment donné. Utilisez cette méthode à vos risques et périls et entre les demandes.

Notez également que le builtin KML support de Google ne semble pas prendre en charge la liste de points, ce qui est logique, car le client ne dispose peut-être que de ceux qui sont actuellement à l'écran. Vous devrez peut-être écrire votre propre chargeur KML si vous souhaitez utiliser KML comme format d'entrée. Ou utilisez un format plus simple, comme dans this example.

+0

Connaissez-vous d'autres façons de produire une matrice de distance? – dassouki

Questions connexes