ฟังก์ชั่นเพื่อค้นหาระยะทางระหว่างเมือง


9

ฉันทำงานกับ Google เอกสารและต้องการสร้างสเปรดชีตของแบบฟอร์มต่อไปนี้:

คะแนนสะสม A จุด B
Los Angeles Miami 292100
Palo Alto San Francisco 90

ในสเปรดชีตคำนวณMileageโดยอัตโนมัติ ฉันกำลังมองหา "ระยะทางที่ขับเคลื่อน" ไม่ใช่ "ในขณะที่อีกาบิน"

Google Spreadsheets มีฟังก์ชั่นที่สามารถทำได้หรือไม่?


เมื่อระยะทางเพิ่มขึ้นความแตกต่างระหว่าง "ระยะทางในการขับขี่" และ "การบินแบบอีกา" จะลดลงตามไปด้วย ไม่ว่าในกรณีใดพวกเขาอาจจะไม่แตกต่างกันเกินกว่าสองสามเปอร์เซ็นต์

1
ที่ดูเหมือนว่าการเรียกร้องคาวบอยสวย คุณกำลังพูดว่าการขับรถจากพอร์ตแลนด์ไปยังแอตแลนต้านั้นเป็นระยะทางใกล้เคียงกับการบินหรือไม่? ฉันไม่คิดอย่างนั้น
แลนดอนคุห์น

1
@pnuts เห็นด้วยและฉันไม่ได้จะปกป้องฉันแสดงความคิดเห็น 4 ปีเก่า :)
แลน Kuhn

Rosarch ทำไมคุณไม่กลับมาเยี่ยมชมเว็บแอปพลิเคชั่นอีกครั้งหลังจากที่หายไป 4 ปีและทบทวนคำตอบที่ดีทั้งหมดที่คุณได้รับจากคำถามของคุณ?
จาค็อบแจน Tuinstra

คำตอบ:


9

ด้วยรหัสชิ้นส่วนต่อไปนี้คุณสามารถดึงระยะห่างระหว่างจุดสองจุดได้

รหัส

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

อธิบาย

แผนที่ API, สร้างที่ด้านบนของ Apps Script ของ Google จะได้รับทิศทางแรก ( เส้นทาง [0] ) ระหว่างแหล่งกำเนิดและปลายทาง ค่าที่ส่งคืนจะถูกแยกออกจากเครื่องหมายจุลภาคและแยกเป็นจำนวนเต็ม

ภาพหน้าจอ

ป้อนคำอธิบายรูปภาพที่นี่

บันทึก

ระยะทางกลับสามารถเป็นได้ทั้งในกิโลเมตรหรือไมล์ ฉันได้เพิ่มการคำนวณสำหรับ "เป็นอีกาบิน" เช่นกัน (เป็นไมล์)

เพิ่มสคริปต์ภายใต้เครื่องมือ> เครื่องมือแก้ไขสคริปต์ในสเปรดชีต กดปุ่มบั๊กในเครื่องมือแก้ไขสคริปต์แล้วคุณจะไปได้เลย !!

ตัวอย่าง

ฉันสร้างไฟล์ตัวอย่างให้คุณแล้ว: ขับรถไปไกล ๆ

อ้างอิง


1
ดูเหมือนว่าสูตรในเอกสารตัวอย่างจะไม่ทำงานอย่างต่อเนื่อง มีคนช่วยแก้ไขเพื่อให้ใช้งานได้ไหม ฉันไม่รู้เกี่ยวกับการเขียนสคริปต์ (มากกว่าการคัดลอกและการวาง) และฉันจะรักความช่วยเหลือของคุณ! สิ่งที่ฉันกำลังมองหาคือระยะทางขับรถระหว่างรหัสไปรษณีย์ ขอบคุณ!
Melissa

3

ใน Google Spreadsheets:

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

A2แหล่งกำเนิดอยู่ที่ไหนและB2ปลายทาง

คุณต้องรับคีย์ API จาก mapquest และแทนที่ค่าYOUR_KEY_HEREด้วย


1
คุณจะรับรหัส API ได้อย่างไร
Jacob Jan Tuinstra

1
@JacobJanTuinstra developer.mapquest.com
Neil McGuigan

นีลคุณยังมีชีวิตอยู่ !! ขอบคุณสำหรับการแบ่งปัน
Jacob Jan Tuinstra

+1 วิธีแก้ปัญหาที่สง่างามอย่างเห็นได้ชัดอย่างไรก็ตาม MapQuest เป็นหมัดเล็กน้อย ฉันได้รับข้อผิดพลาดนี้เมื่อพยายามใช้รหัสที่ได้รับ: "คีย์นี้ไม่ได้รับอนุญาตสำหรับบริการนี้หากคุณไม่มีรหัสคุณสามารถขอรับรหัสฟรีได้โดยลงทะเบียนที่developer.mapquest.com "
Nick Bolton

1

นี่คือสิ่งที่ได้ผลสำหรับฉัน:

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

สิ่งนี้จะให้ระยะทางที่ขับเคลื่อนระหว่าง<point.A>และเป็น<point.B>เมตร (ตาม Google แผนที่แน่นอน)


มันเยี่ยมมาก! ระยะทางในการบินเป็นอย่างไร
ดัสตินเคิร์กแลนด์

0

ฉันไม่คิดว่ามีฟังก์ชั่น Excel หรือส่วนขยายในการทำเช่นนี้

คุณอาจต้องการดูหน้า Source Forge นี้: http://zips.sourceforge.net/

  • มันมีชุดข้อมูล CSV เพื่อแปลงรหัสไปรษณีย์เป็น Lat / Long (จุดกึ่งกลางสันนิษฐาน)
  • มันให้รหัส Excel ในการคำนวณระยะทาง "อีกาบิน" ระหว่างสองพิกัดละติจูด / ลองจิจูด (และรวมถึงรหัสเทียบเท่าสำหรับ Java, PHP และ Python

ฟังก์ชั่น Excel คือ

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

หน้าบันทึกว่ามุมจะต้องอยู่ในเรเดียนและ Excel มีฟังก์ชันการแปลงองศาเป็นเรเดียน:

=RADIAN(degrees)

ถ้าหากไม่มีใครมีคำตอบที่สั่นไหวคุณควรได้รับสิ่งที่คุณต้องการโดยไม่ต้องทำงานมากเกินไป


ใช่ แต่สิ่งที่เกี่ยวกับระยะทางขับเคลื่อนแทน "เป็นอีกาบิน"?

1
นั่นเป็นเรื่องยากมากและจะต้องมีความรู้เกี่ยวกับถนนทุกสายเช่นเดียวกับ Mapquest, Google Earth, Streets & Trips (หรือ MapPoint) ฉันไม่รู้ว่าแอพใด ๆ เหล่านี้มี API ที่เหมาะสมหรือไม่

... ในทางกลับกันหากคุณกำลังมองหาเมืองที่มีจำนวน จำกัด และพร้อมสำหรับการใช้งานที่ค่อนข้าง จำกัด คุณสามารถมองหาตารางระยะทางขับรถที่ค่อนข้างธรรมดาในแผนที่การขับขี่และแผนที่ การทำซ้ำรูปแบบของข้อมูลใน Excel และสร้างการค้นหาเพื่อดึงข้อมูลสำหรับคู่ของตำแหน่งเป็นไปได้อย่างแน่นอนใน Excel หากสิ่งนั้นสนใจตอบกลับและฉันจะสามารถใช้งานฟังก์ชันได้

1
OP ใช้ Google Spreadsheets
Jacob Jan Tuinstra

+1 เนื่องจากสูตรที่น่าสนใจ แต่ฉันคิดว่าการใช้สิ่งนี้อาจเป็นไปไม่ได้
Nick Bolton


-1

Google Developers เสนอสคริปต์ที่มีประสิทธิภาพมากสำหรับฟังก์ชั่นที่เกี่ยวข้องกับแผนที่ใน Google ชีตที่ฉันใช้และมีความสุขมาก คำแนะนำแบบเต็มอยู่บนหน้าเว็บเช่นกัน


1
คุณช่วยสรุปประเด็นสำคัญบางส่วนของ "คำแนะนำทั้งหมด" ได้ไหม คำตอบควรอยู่คนเดียวและไม่ได้ขึ้นอยู่กับแหล่งข้อมูลภายนอก (แม้ว่าฉันจะทราบว่ามีโอกาสน้อยที่ไซต์ Google จะหายไป) ขอบคุณ!
jonsca

-2

ฉันไม่คุ้นเคยเพียงพอกับ APIs ที่จะบอกว่าวิธีการทำเช่นนี้ แต่ฉันคิดว่ามันจะเป็นไปได้โดยใช้Google Maps API

แน่นอนว่า Google แผนที่สามารถให้เส้นทางจากจุดหนึ่งไปอีกจุดหนึ่งผ่าน API ของพวกเขา มันซับซ้อน แต่เป็นไปได้ที่จะกำหนดเส้นทางสถานที่จากสเปรดชีตผ่าน API และรับเส้นทางการขับขี่ซึ่งจะทำให้ระยะทางในการขับขี่ระหว่างเมืองต่าง ๆ


-2

คุณสามารถเขียนฟังก์ชั่นด้วยตัวเองซึ่งคล้ายกับมาโคร

http://www.google.com/google-ds/scripts/yourfirstscript.html

คุณสามารถค้นหาเอกสารฉบับเต็มได้ที่นี่

PS: ปัจจุบันยังไม่เปิดให้ใช้สคริปต์ Google Appsทั้งหมด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.