OSM รับระยะเวลาและเส้นทางจากเส้นทาง A ถึง B ใน Python

ฉันยังใหม่กับการทำงานกับแผนที่และอัลกอริธึมการค้นหา ขณะนี้ฉันใช้แพ็คเกจ geopy เพื่อรับระยะทางจาก Nominatim

from geopy.geocoders import Nominatim
from geopy.distance import vincenty

nom = Nominatim()
chicago = nom.geocode("chicago")
dallas = nom.geocode("dallas")
chicago_gps = (chicago.latitude, chicago.longitude)
dallas_gps = (dallas.latitude, dallas.longitude)
distance = vincenty(chicago_gps, dallas_gps).km
print('Distance in kms: {}'.format(distance))
print(chicago.raw)

เอาท์พุท

Distance in kms: 1294.7623005649557
{'lat': '41.8755546', 'osm_id': '122604', 'boundingbox': ['41.643919', '42.0230219', '-87.940101', '-87.5239841'], 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright', 'lon': '-87.6244212', 'place_id': '178038280', 'class': 'place', 'icon': 'https://nominatim.openstreetmap.org/images/mapicons/poi_place_city.p.20.png', 'osm_type': 'relation', 'importance': 0.29566190262222, 'display_name': 'Chicago, Cook County, Illinois, United States of America', 'type': 'city'}

ดังนั้นสำหรับแต่ละสถานที่ ฉันสามารถคำนวณระยะทางได้ ตอนนี้มีคำถามสองสามข้อ

  1. เป็นระยะทางของสายการบินหรือไม่? OSM ยังให้ระยะเวลาการเดินทางเหมือนกับที่ Google ทำหรือไม่
  2. ฉันจะขอเส้นทางได้อย่างไรหากฉันต้องการไปจาก "ชิคาโก" ถึง "ดัลลัส" แบบ google มีวิธีที่เราได้รับเส้นทางโดยตรงจาก OSM นอกเหนือจากการใช้ APIs MapQuest ฯลฯ หรือไม่
  3. เราจะใช้ Traffic Layer ในโมเดลของเราได้อย่างไร ฉันต้องการทรัพยากรที่ดีในเรื่องนั้น และหากมีการนำ Python ไปใช้ก็จะดีมาก

person muazfaiz    schedule 18.01.2018    source แหล่งที่มา


คำตอบ (1)


เป็นระยะทางของสายการบินหรือไม่?

ใช่ โปรดดูเอกสารประกอบทางภูมิศาสตร์เกี่ยวกับการคำนวณระยะทาง geopy ไม่รองรับการกำหนดเส้นทางจริงในขณะนี้

OSM ยังให้ระยะเวลาการเดินทางเหมือนที่ Google ทำหรือไม่

ใช่ ถ้าคุณใช้เราเตอร์จริง ดูที่เราเตอร์ออนไลน์ที่ใช้ OSM หลายๆ รายการ เช่น GraphHopper และ OSRM ให้คำแนะนำแบบเลี้ยวต่อเลี้ยว

ฉันจะขอเส้นทางได้อย่างไรหากฉันต้องการไปจาก "ชิคาโก" ถึง "ดัลลัส" แบบ google มีวิธีใดที่เราจะรับเส้นทางโดยตรงจาก OSM นอกเหนือจากการใช้ APIs MapQuest ฯลฯ

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

เราจะใช้ Traffic Layer ในโมเดลของเราได้อย่างไร ฉันต้องการทรัพยากรที่ดีในเรื่องนั้น และหากมีการนำ Python ไปใช้ก็จะดีมาก

ไม่สามารถช่วยคุณในเรื่องนั้นได้ ฉันจะเริ่มต้นด้วยการดูที่ http://opentraffic.io/ และ https://github.com/graphhopper/open-traffic-collection

person scai    schedule 19.01.2018
comment
ขอบคุณหรือคำตอบทีละขั้นตอน - person muazfaiz; 21.01.2018
comment
ดังนั้นการสร้างอินสแตนซ์หมายถึงการดาวน์โหลดข้อมูลทั้งหมดจาก OSM ไปยังเซิร์ฟเวอร์ของฉันเอง ตั้งค่าเซิร์ฟเวอร์และดำเนินการต่อจากที่นั่น ? - person muazfaiz; 22.01.2018
comment
ใช่. ทั้งสำหรับดาวเคราะห์ทั้งดวงหรือสำหรับพื้นที่/ประเทศเฉพาะที่คุณสนใจ - person scai; 22.01.2018