Función para encontrar la distancia entre ciudades

9

Estoy trabajando con Google Docs y quiero crear una hoja de cálculo de la siguiente forma:

Punto A Punto B Kilometraje
Los Angeles Miami 292100
Palo Alto San Francisco 90

En la hoja de cálculo, Mileagese calcula automáticamente. Estoy buscando "distancia conducida", no "como vuela el cuervo".

¿Hay alguna función en las hojas de cálculo de Google que pueda hacer esto?

Nick Heiner
fuente
A medida que aumenta la distancia, la diferencia entre "distancia de conducción" y "vuelo de cuervo" disminuirá en consecuencia. En cualquier caso, probablemente no diferirán en más de un pequeño porcentaje.
1
eso parece un reclamo bastante audaz, vaquero. ¿Estás diciendo que conducir de Portland a Atlanta es aproximadamente el mismo kilometraje que volar? No lo creo.
Landon Kuhn
1
@pnuts estuvo de acuerdo, y no voy a defender mi comentario de 4 años :)
Landon Kuhn
Rosarch, ¿por qué no vuelves a visitar las aplicaciones web después de 4 años de ausencia y revisas todas las buenas respuestas que recibiste sobre tu pregunta?
Jacob Jan Tuinstra

Respuestas:

9

Con el siguiente fragmento de código, puede recuperar la distancia entre dos puntos.

Código

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);
}

Explicado

La API de MAP, construida sobre el script de Google Apps, obtendrá la primera dirección ( rutas [0] ) entre el origen y el destino . El valor devuelto se elimina de la coma y se analiza como un entero.

Captura de pantalla

ingrese la descripción de la imagen aquí

Nota

La distancia devuelta puede ser en kilómetros o millas . También agregué el cálculo para "como vuela el cuervo" (en millas).

Agregue el guión en Herramientas> Editor de guiones en la hoja de cálculo. ¡Presiona el botón de error en el editor de scripts y listo!

Ejemplo

He creado un archivo de ejemplo para usted: obtenga la distancia de conducción

Referencias

Jacob Jan Tuinstra
fuente
1
Parece que la fórmula en el documento de muestra ya no funciona de manera consistente. ¿Podría alguien editarlo para que funcione? ¡No sé nada sobre las secuencias de comandos (más que copiar y pegar) y me encantaría su ayuda! Todo lo que busco es la distancia de conducción entre los códigos postales. ¡Gracias!
Melissa el
3

En las hojas de cálculo de Google:

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

donde A2está el origen y B2es el destino.

Debe obtener una clave API de mapquest y reemplazar el valor YOUR_KEY_HEREcon ella.

Neil McGuigan
fuente
1
¿Cómo se obtiene la clave API?
Jacob Jan Tuinstra 01 de
1
@JacobJanTuinstra developer.mapquest.com
Neil McGuigan
Neil, estas vivo !! Gracias por compartir eso.
Jacob Jan Tuinstra 01 de
+1 Solución aparentemente elegante, sin embargo, MapQuest es un poco pésimo. Recibí este error al intentar usar la clave que me dieron: "Esta clave no está autorizada para este servicio. Si no tiene una clave, puede obtener una clave gratuita registrándose en developer.mapquest.com ".
Nick Bolton el
1

Esto es lo que funciona para mí:

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

Esto producirá la distancia recorrida entre <point.A>y <point.B>en metros (según Google Maps, por supuesto).

Waldir Leoncio
fuente
¡Esto es genial! ¿Qué tal la distancia de las moscas del cuervo?
Dustin Kirkland
0

No creo que haya una función o extensión de Excel integrada para hacer esto.

Es posible que desee consultar esta página de Source Forge: http://zips.sourceforge.net/

  • Proporciona un conjunto de datos CSV para convertir códigos postales a Lat / Long (punto central presumiblemente)
  • Proporciona el código Excel para calcular la distancia de las "moscas del cuervo" entre dos coordenadas lat / long. (e incluye código equivalente para Java, PHP y Python.

La función de Excel es

=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)))

La página señala que los ángulos deben estar en radianes y que Excel tiene una función de conversión de grados a radianes:

=RADIAN(degrees)

A menos que alguien más tenga una respuesta más ingeniosa, esto debería darle lo que desea sin demasiado trabajo.

Jacob Jan Tuinstra
fuente
sí, pero ¿qué pasa con la distancia recorrida en lugar de "mientras el cuervo vuela"?
1
Eso es considerablemente más difícil y requeriría el conocimiento de todas las carreteras, como se hace en Mapquest, Google Earth, Streets & Trips (o MapPoint). No sé si alguna de estas aplicaciones tiene una API adecuada.
... por otro lado, si estaba buscando una aproximación aproximada y aproximada para un número bastante limitado de ciudades, podría buscar las tablas de distancia de conducción que son bastante comunes en mapas y atlas de conducción. Replicar ese estilo de datos en Excel y construir una búsqueda para recuperarlos para pares de ubicaciones es ciertamente factible en Excel. Si eso apela, responda y podría elaborar una función para ello.
1
OP utiliza hojas de cálculo de Google.
Jacob Jan Tuinstra 01 de
+1 debido a la fórmula interesante, sin embargo, creo que usar esto probablemente no sea práctico.
Nick Bolton el
-1

Google Developers ofrece una secuencia de comandos muy robusta para funciones relacionadas con mapas en Hojas de cálculo de Google que utilicé y realmente disfruté. Las instrucciones completas también están en la página web.

talker90
fuente
1
¿Podría resumir algunos de los puntos clave de las "instrucciones completas", por favor? Las respuestas deben ser independientes y no depender de fuentes externas (aunque me doy cuenta de que es menos probable que un sitio de Google desaparezca). ¡Gracias!
jonsca
-2

No estoy lo suficientemente familiarizado con las API para decirle exactamente cómo hacerlo, pero creo que sería posible usar la API de Google Maps .

Google Maps, por supuesto, puede proporcionar direcciones de un punto a otro a través de su API. Sería complicado, pero posible enrutar las ubicaciones desde la hoja de cálculo a través de la API y obtener instrucciones de manejo, lo que le daría una distancia de conducción entre ciudades.

Jared Harley
fuente