Funktion zum Ermitteln der Entfernung zwischen Städten

9

Ich arbeite mit Google Text & Tabellen und möchte eine Tabelle mit folgendem Formular erstellen:

Punkt A Punkt B Kilometerstand
Los Angeles Miami 292100
Palo Alto San Francisco 90

In der Tabelle Mileagewird automatisch berechnet. Ich suche "Distanz gefahren", nicht "in Luftlinie".

Gibt es in Google Spreadsheets eine Funktion, die dies ermöglicht?

Nick Heiner
quelle
Mit zunehmender Entfernung verringert sich der Unterschied zwischen "Fahrstrecke" und "Krähenflug" entsprechend. In jedem Fall werden sie sich wahrscheinlich nicht um mehr als ein paar Prozent unterscheiden.
1
Das scheint eine ziemlich kühne Behauptung zu sein, Cowboy. Wollen Sie damit sagen, dass das Fahren von Portland nach Atlanta ungefähr die gleiche Kilometerleistung ist wie das Fliegen? Ich glaube nicht.
Landon Kuhn
1
@pnuts stimmte zu, und ich werde meinen 4 Jahre alten Kommentar nicht verteidigen :)
Landon Kuhn
Rosarch, warum besuchen Sie Webanwendungen nach 4 Jahren Abwesenheit nicht erneut und überprüfen Sie alle netten Antworten, die Sie auf Ihre Frage erhalten haben?
Jacob Jan Tuinstra

Antworten:

9

Mit dem folgenden kleinen Code können Sie den Abstand zwischen zwei Punkten abrufen.

Code

function getDirection(city1, city2, unit) {
  var directions = Maps.newDirectionFinder()
    .setOrigin(city1).setDestination(city2)
    .setMode(Maps.DirectionFinder.Mode.DRIVING)
    .getDirections();
  var d = directions.routes[0].legs[0].distance.text;

  var distance, value = d.split(" ")[0].replace(",", ""), text = d.split(" ")[1];
  if(text == unit) {
    distance = value;
  } else if(text == "km" && unit == "mi") {
    distance = value / 1.6;
  } else {
    distance = value * 1.6;
  }
  return Math.round(distance);
}

Erklärt

Die MAPs-API, die auf dem Google Apps-Skript aufbaut, erhält die erste Richtung ( Routen [0] ) zwischen Ursprung und Ziel . Der zurückgegebene Wert wird aus Kommas entfernt und als Ganzzahl analysiert.

Bildschirmfoto

Geben Sie hier die Bildbeschreibung ein

Hinweis

Die zurückgegebene Entfernung kann entweder in Kilometern oder Meilen angegeben werden . Ich habe auch die Berechnung für "Luftlinie" (in Meilen) hinzugefügt.

Fügen Sie das Skript unter Extras> Skripteditor in die Tabelle ein. Drücken Sie die Bug-Taste im Skript-Editor und Sie sind unterwegs!

Beispiel

Ich habe eine Beispieldatei für Sie erstellt: Fahrstrecke ermitteln

Verweise

Jacob Jan Tuinstra
quelle
1
Es sieht so aus, als ob die Formel im Beispieldokument nicht mehr konsistent funktioniert. Könnte jemand es bitte bearbeiten, damit es funktioniert? Ich weiß nichts über Skripte (mehr als Kopieren und Einfügen) und würde mich über Ihre Hilfe freuen! Ich suche nur die Fahrstrecke zwischen den Postleitzahlen. Danke!
Melissa
3

In Google Spreadsheets:

=importXML("http://mapquestapi.com/directions/v1/route?  
  key=YOUR_KEY_HERE&outFormat=xml&from=" & A2 & "&to=" 
  & B2,"//response/route/distance")

Wo A2ist der Ursprung und B2ist das Ziel.

Sie müssen einen API-Schlüssel von mapquest erhalten und den Wert YOUR_KEY_HEREdurch diesen ersetzen .

Neil McGuigan
quelle
1
Wie erhalten Sie den API-Schlüssel?
Jacob Jan Tuinstra
1
@ JacobJanTuinstra developer.mapquest.com
Neil McGuigan
Neil, du lebst !! Danke, dass du das geteilt hast.
Jacob Jan Tuinstra
+1 Anscheinend elegante Lösung, MapQuest ist jedoch etwas mies. Beim Versuch, den mir angegebenen Schlüssel zu verwenden, wurde folgende Fehlermeldung angezeigt: "Dieser Schlüssel ist für diesen Dienst nicht autorisiert. Wenn Sie keinen Schlüssel haben, können Sie einen kostenlosen Schlüssel erhalten, indem Sie sich unter developer.mapquest.com registrieren ."
Nick Bolton
1

Das funktioniert bei mir:

=importXML("http://maps.googleapis.com/maps/api/distancematrix/xml?&origins="& <point.A> & "&destinations=" & <point.B>; "//distance/value")

Dies ergibt die gefahrene Entfernung zwischen <point.A>und <point.B>in Metern (laut Google Maps natürlich).

Waldir Leoncio
quelle
Das ist toll! Wie wäre es mit der Luftlinie Entfernung?
Dustin Kirkland
0

Ich glaube nicht, dass es eine eingebaute Excel-Funktion oder -Erweiterung gibt, um dies zu tun.

Vielleicht möchten Sie diese Source Forge-Seite besuchen : http://zips.sourceforge.net/

  • Es bietet einen CSV-Datensatz zum Konvertieren von Postleitzahlen in Lat / Long (vermutlich Mittelpunkt)
  • Es bietet Excel-Code zur Berechnung der "Krähenfliegen" -Distanz zwischen zwei Lat / Long-Koordinaten. (und enthält äquivalenten Code für Java, PHP und Python.

Die Excel-Funktion ist

=IF(SIN(Lat1) * SIN(Lat2) + COS(Lat1) * COS(Lat2) * COS(Long1 - Long2) > 1,
  RadiusofEarth * ACOS(1), RadiusofEarth *
  ACOS(SIN(Lat1) * SIN(Lat2) + COS(Lat1) * COS(Lat2) * COS(Long1-Long2)))

Auf der Seite wird darauf hingewiesen, dass die Winkel im Bogenmaß angegeben werden müssen und dass Excel über eine Konvertierungsfunktion von Grad zu Bogenmaß verfügt:

=RADIAN(degrees)

Sofern nicht jemand anderes eine bessere Antwort hat, sollte dies Ihnen ohne zu viel Arbeit das bringen, was Sie wollen.

Jacob Jan Tuinstra
quelle
ja, aber was ist mit der gefahrenen Strecke anstatt "in Luftlinie"?
1
Dies ist erheblich schwieriger und erfordert Kenntnisse über alle Straßen, wie dies bei Mapquest, Google Earth, Streets & Trips (oder MapPoint) der Fall ist. Ich weiß nicht, ob eine dieser Apps eine geeignete API hat.
... Wenn Sie andererseits nach einer groben und fertigen Annäherung für eine relativ begrenzte Anzahl von Städten suchen, können Sie nach Fahrentfernungstabellen suchen, die in Fahrkarten und Atlanten ziemlich häufig vorkommen. Das Replizieren dieses Datenstils in Excel und das Erstellen einer Suche zum Abrufen von Standortpaaren ist in Excel durchaus möglich. Wenn das anspricht, antworten Sie und ich werde eine Funktion dafür ausarbeiten.
1
OP verwendet Google Spreadsheets.
Jacob Jan Tuinstra
+1 wegen der interessanten Formel, aber ich denke, dies zu verwenden ist wahrscheinlich unpraktisch.
Nick Bolton
-1

Google Developers bietet ein sehr robustes Skript für kartenbezogene Funktionen in Google Sheets, das ich verwendet habe und das mir sehr gut gefallen hat. Vollständige Anweisungen finden Sie auch auf der Webseite.

talker90
quelle
1
Könnten Sie bitte einige der wichtigsten Punkte der "vollständigen Anweisungen" zusammenfassen? Die Antworten sollten eigenständig sein und nicht von externen Quellen abhängen (obwohl mir klar ist, dass es weniger wahrscheinlich ist, dass eine Google-Website verschwindet). Vielen Dank!
Jonsca
-2

Ich bin mit den APIs nicht vertraut genug, um Ihnen genau zu sagen, wie das geht, aber ich würde denken, dass es mit der Google Maps-API möglich wäre .

Google Maps kann natürlich über die API Anweisungen von einem Punkt zum anderen bereitstellen. Es wäre kompliziert, aber möglich, die Standorte aus der Tabelle über die API zu routen und Wegbeschreibungen abzurufen, die Ihnen eine Fahrstrecke zwischen Städten geben würden.

Jared Harley
quelle