Obtenez les coordonnées géographiques exactes le long d'un itinéraire complet, Google Maps ou OpenStreetMap

supposons que j'ai une route définie d'une ville à l'autre. A partir de L'API GoogleMaps, je peux récupérer une route entre les deux. Cependant, L'itinéraire retourné de Google est un itinéraire de conduite qui inclut des géo-coordonnées seulement aux endroits où il ya une autre étape dans une étape (par exemple, où je dois tourner d'une autoroute à une autre).

ce dont j'ai besoin, c'est de géo-localisations (lat/long) sur toute la route, à des intervalles précis (par exemple, tous les 1/4 de mille ou 100m).

Existe-t-il un moyen d'y parvenir via les Services API / web de Google Maps?

ou la base de données OpenStreetMap serait-elle le moyen de le faire?

salutations, Madeleine.

23
demandé sur Madeleine P. Vincent 2013-05-23 14:19:30

4 réponses

OSRM vous donne des routes avec des géométries de routes telles qu'elles sont dans la base de données OpenStreetMap. Par exemple, vous pouvez obtenir la route comme GPX (et post-traiter ce fichier si vous voulez). Ce serait semblable à la suivante:

GET http://router.project-osrm.org/viaroute?hl=en&loc=47.064970,15.458470&loc=47.071100,15.476760&output=gpx

Lire la suite:OSRM API docs.

22
répondu tyr 2013-05-23 13:57:27

c'est simplement google.cartographie.DirectionsService().route (la) méthode. Vous devez passer la demande de service et ensuite un rappel qui s'exécute à la fin de la demande de service.

https://developers.google.com/maps/documentation/javascript/directions

5
répondu Marlio 2013-08-15 16:16:58

puisque la réponse acceptée est périmée et ne fonctionne plus, voici comment tous les noeuds le long d'une route peuvent être interrogés en utilisant le service de route Project OSRM.

étant donné un nombre arbitraire de paires lon,lat. Par exemple, les trois suivants (à Berlin):

  • 13.388860, 52.517037
  • 13.397634, 52.529407
  • 13.428555, 52.523219

le service de route calcule le plus rapide route entre ces points et il est possible de retourner tous les noeuds le long de la route en utilisant la requête suivante:

http://router.project-osrm.org/route/v1/driving/13.388860,52.517037;13.397634,52.529407;13.428555,52.523219?alternatives=false&annotations=nodes

renvoie une réponse json contenant les ID des noeuds de tous les noeuds le long de la route. Le résultat devrait ressembler à quelque chose comme ceci:

{
  "routes": [
    {
      ...
      "legs": [
        {
          "annotation": {
            "nodes": [
              2264199819,
              2045820592,
              21487242,
              ...
    ]
 }

pour recevoir les coordonnées lat, lon des noeuds OverpassAPI peut être utilisé.

[out:json];
(
   node(264199819);
   node(...);
   node(...);
   ...
);
(._;>;);
out;

voici un exemple de demande utilisant overpass-turbo: http://overpass-turbo.eu/s/toe

2
répondu user2350644 2017-11-28 19:30:46

ajoutant à la réponse de Marlio.

Vous pouvez utiliser L'API GoogleMaps Directions elle-même. Pour un donné d'origine et de destination, dans le JSON de sortie, recherchez les éléments suivants:

"polyline" : {
  "points" : ""
}

Vous pouvez utiliser un décodeur pour obtenir les coordonnées de la polyligne.: https://github.com/emcconville/google-map-polyline-encoding-tool Ou. vous pouvez utiliser le paquet googleway en R pour décoder de même. https://cran.r-project.org/web/packages/googleway/googleway.pdf

Je ne sais pas comment régler la résolution à votre niveau désiré.Mais la résolution dans la sortie API est vraiment bonne.

0
répondu Adithya Ajith 2017-05-29 09:54:04