Berfungsi untuk menemukan jarak antar kota

9

Saya bekerja dengan Google Documents dan ingin membuat spreadsheet dari formulir berikut:

Point A Point B Mileage
Los Angeles Miami 292100
Palo Alto San Francisco 90

Dalam spreadsheet, Mileagedihitung secara otomatis. Saya mencari "didorong jarak", bukan "saat burung gagak terbang".

Apakah ada fungsi di Google Spreadsheets yang dapat melakukan ini?

Nick Heiner
sumber
Dengan meningkatnya jarak, perbedaan antara "jarak mengemudi" dan "penerbangan berkokok" akan berkurang. Bagaimanapun mereka mungkin tidak akan berbeda lebih dari beberapa persen.
1
itu sepertinya klaim yang cukup berani, koboi. apakah Anda mengatakan bahwa mengemudi dari portland ke atlanta kira-kira sama dengan terbang? saya kira tidak.
Landon Kuhn
1
@nuts setuju, dan saya tidak akan membela komentar saya yang berumur 4 tahun :)
Landon Kuhn
Rosarch, mengapa Anda tidak mengunjungi kembali Aplikasi Web setelah 4 tahun absen dan meninjau semua jawaban bagus yang Anda terima pada pertanyaan Anda?
Jacob Jan Tuinstra

Jawaban:

9

Dengan potongan kecil kode berikut, Anda dapat mengambil jarak antara dua titik.

Kode

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

Dijelaskan

API MAP, dibangun di atas Google Apps Script, akan mendapatkan arah pertama ( rute [0] ) antara asal dan tujuan . Nilai yang dikembalikan dilucuti dari koma dan diurai sebagai bilangan bulat.

Tangkapan layar

masukkan deskripsi gambar di sini

Catatan

Jarak yang dikembalikan bisa dalam kilometer atau mil . Saya telah menambahkan perhitungan untuk "saat burung gagak terbang" juga (dalam mil).

Tambahkan skrip di bawah Alat> Editor skrip di spreadsheet. Tekan tombol bug di editor skrip dan Anda sedang bepergian !!

Contoh

Saya telah membuat file contoh untuk Anda: dapatkan jarak mengemudi

Referensi

Jacob Jan Tuinstra
sumber
1
Sepertinya rumus dalam dokumen contoh tidak lagi berfungsi secara konsisten. Bisakah seseorang mengeditnya untuk membuatnya berfungsi? Saya tidak tahu apa-apa tentang penulisan skrip (lebih dari menyalin dan menempel) dan saya akan sangat membantu Anda! Yang saya cari hanyalah jarak mengemudi antara kode pos. Terima kasih!
Melissa
3

Di Google Spreadsheets:

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

dimana A2asal dan B2tujuannya.

Anda harus mendapatkan kunci API dari mapquest dan ganti nilainya YOUR_KEY_HEREdengan itu.

Neil McGuigan
sumber
1
Bagaimana Anda mendapatkan kunci API?
Jacob Jan Tuinstra
1
@JacobJanTuinstra developer.mapquest.com
Neil McGuigan
Neil, hidupmu !! Terima kasih telah membagikannya.
Jacob Jan Tuinstra
+1 Tampaknya solusi yang elegan, namun MapQuest sedikit payah. Saya mendapatkan kesalahan ini ketika mencoba menggunakan kunci yang saya berikan: "Kunci ini tidak diotorisasi untuk layanan ini. Jika Anda tidak memiliki kunci, Anda dapat memperoleh kunci gratis dengan mendaftar di developer.mapquest.com ."
Nick Bolton
1

Inilah yang bekerja untuk saya:

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

Ini akan menghasilkan jarak yang didorong antara <point.A>dan <point.B>dalam meter (tentu saja, menurut Google Maps).

Waldir Leoncio
sumber
Ini bagus! Bagaimana dengan jarak terbang seperti burung gagak?
Dustin Kirkland
0

Saya tidak berpikir ada built in fungsi Excel, atau ekstensi, untuk melakukan ini.

Anda mungkin ingin memeriksa halaman Forge Forge ini: http://zips.sourceforge.net/

  • Ini menyediakan dataset CSV untuk mengonversi Kode Pos ke Lat / Panjang (titik pusat mungkin)
  • Ini menyediakan kode Excel untuk menghitung jarak "crow lalat" antara dua koordinat lat / panjang. (dan termasuk kode yang setara untuk Java, PHP dan Python.

Fungsi Excel adalah

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

Halaman mencatat bahwa sudut harus dalam radian dan bahwa Excel memiliki fungsi konversi derajat ke radian:

=RADIAN(degrees)

Kecuali orang lain memiliki jawaban yang lebih licin, ini akan memberi Anda apa yang Anda inginkan tanpa terlalu banyak bekerja.

Jacob Jan Tuinstra
sumber
ya, tapi bagaimana dengan jarak yang didorong bukannya "seperti burung gagak terbang"?
1
Itu jauh lebih sulit dan akan membutuhkan pengetahuan tentang semua jalan raya, seperti yang dilakukan di Mapquest, Google Earth, Streets & Trips (atau MapPoint). Saya tidak tahu apakah ada dari aplikasi ini yang memiliki API yang sesuai.
... di sisi lain, jika Anda mencari perkiraan kasar dan siap untuk sejumlah kota yang cukup terbatas, Anda bisa mencari tabel jarak mengemudi yang cukup umum dalam mengemudi peta dan atlas. Replikasi gaya data di Excel dan membangun pencarian untuk mengambilnya untuk pasangan lokasi tentu layak dilakukan di Excel. Jika itu menarik, balas dan saya akan bisa menjalankan fungsi untuk itu.
1
OP menggunakan Google Spreadsheets.
Jacob Jan Tuinstra
+1 karena rumus yang menarik, namun saya pikir menggunakan ini mungkin tidak praktis.
Nick Bolton
-1

Google Developers menawarkan skrip yang sangat kuat untuk fungsi terkait peta di Google Sheets yang saya gunakan dan saya sangat nikmati. Instruksi lengkap ada di halaman web juga.

pembicara 90
sumber
1
Bisakah Anda merangkum beberapa poin utama dari "instruksi lengkap," tolong? Jawaban harus berdiri sendiri dan tidak bergantung pada sumber eksternal (meskipun saya menyadari bahwa kemungkinan besar situs Google akan hilang). Terima kasih!
jonsca
-2

Saya tidak cukup akrab dengan API untuk memberi tahu Anda dengan tepat bagaimana melakukan ini, tetapi saya pikir itu akan mungkin menggunakan Google Maps API .

Google Maps, tentu saja, dapat memberikan arahan dari satu titik ke titik lainnya melalui API mereka. Ini akan rumit, tetapi mungkin untuk merutekan lokasi dari spreadsheet melalui API dan mendapatkan petunjuk arah mengemudi, yang akan memberi Anda jarak mengemudi antar kota.

Jared Harley
sumber