GraphHopper เป็นเครื่องมือกำหนดเส้นทางที่รวดเร็วและมีประสิทธิภาพหน่วยความจำ เปิดตัวภายใต้ Apache License 2.0 สามารถใช้เป็นไลบรารี Java หรือเว็บเซิร์ฟเวอร์แบบสแตนด์อโลนเพื่อคำนวณระยะทาง เวลา คำแนะนำแบบเลี้ยวต่อเลี้ยว และคุณลักษณะของถนนจำนวนมากสำหรับเส้นทางระหว่างจุดสองจุดขึ้นไป นอกเหนือจากการกำหนดเส้นทาง "A-to-B" นี้แล้ว ยังรองรับ "snap to road", การคำนวณ Isochrone, การนำทางบนมือถือ และอื่นๆ อีกมากมาย GraphHopper ใช้ข้อมูล OpenStreetMap และ GTFS เป็นค่าเริ่มต้น และสามารถนำเข้าแหล่งข้อมูลอื่นได้เช่นกัน
เรามีชุมชนที่เปิดกว้างและยินดีต้อนรับทุกคน แจ้งให้เราทราบปัญหาของคุณ กรณีการใช้งาน หรือเพียงแค่ทักทาย โปรดดูหลักเกณฑ์ของชุมชนของเรา
คำถามทั้งหมดไปที่ฟอรัมของเรา ซึ่งเรามีส่วนย่อยโดยเฉพาะสำหรับนักพัฒนา การใช้งานมือถือ และส่วนประกอบการจับคู่แผนที่ของเรา คุณยังสามารถค้นหา Stackoverflow เพื่อหาคำตอบได้
อ่านคู่มือการมีส่วนร่วมของเราสำหรับข้อมูลในหัวข้อต่างๆ เช่น การค้นหาและแก้ไขข้อบกพร่อง และปรับปรุงเอกสารหรือการแปลของเรา! นอกจากนี้เรายังมีประเด็นแรกที่ดีในการเริ่มต้นมีส่วนร่วม
ในการเริ่มต้น คุณสามารถลองใช้ GraphHopper Maps อ่านเอกสารของเรา และติดตั้ง GraphHopper รวมถึง Maps UI ในเครื่อง
ดูไฟล์บันทึกการเปลี่ยนแปลงสำหรับการเปลี่ยนแปลง Java API
หากต้องการติดตั้ง GraphHopper Maps UI และบริการเว็บในเครื่อง คุณต้องมี JVM (>= Java 17) และทำ:
wget https://repo1.maven.org/maven2/com/graphhopper/graphhopper-web/10.0/graphhopper-web-10.0.jar
https://raw.githubusercontent.com/graphhopper/graphhopper/10.x/config-example.yml
http://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf
java -D " dw.graphhopper.datareader.file=berlin-latest.osm.pbf " -jar graphhopper * .jar server config-example.yml
หลังจากนั้นครู่หนึ่ง คุณจะเห็นข้อความบันทึกว่า 'เซิร์ฟเวอร์ - เริ่มต้นแล้ว' จากนั้นไปที่ http://localhost:8989/ และคุณจะเห็นแผนที่ของกรุงเบอร์ลิน คุณควรจะสามารถคลิกขวาบนแผนที่เพื่อสร้างเส้นทางได้
ดูเอกสารประกอบที่มี เช่น คู่มือการยกระดับและคู่มือการปรับใช้
สามารถดูอิมเมจ Docker ที่สร้างโดยชุมชนจากสาขา master
ได้ที่นี่ (ปัจจุบันเป็นรายวัน) ดู Dockerfile สำหรับรายละเอียดเพิ่มเติม
หากต้องการดูคุณลักษณะการกำหนดเส้นทางถนนของ GraphHopper โปรดไปที่ GraphHopper Maps
GraphHopper Maps เป็นอินเทอร์เฟซผู้ใช้แบบโอเพ่นซอร์ส ซึ่งคุณสามารถพบได้ที่นี่ สามารถใช้กลไกการกำหนดเส้นทางโอเพ่นซอร์สนี้หรือ GraphHopper Directions API ซึ่งให้บริการ Routing API, Route Optimization API (อิงจาก jsprit), Matrix API ที่รวดเร็ว และการค้นหาที่อยู่ (อิงตามโฟตอน) โครงการโฟตอนยังได้รับการสนับสนุนจาก GraphHopper GmbH นอกจากนี้ GraphHopper Directions API ยังมีการใช้ไทล์แผนที่จากผู้ให้บริการหลายราย โดยค่าเริ่มต้นจะเป็น Omniscale
ทั้งหมดนี้ให้บริการฟรีผ่านการเชื่อมต่อที่เข้ารหัสและจากเซิร์ฟเวอร์เยอรมัน - เพื่อประสบการณ์การวางแผนเส้นทางที่ดีและเป็นส่วนตัว!
เริ่มต้นเลย
มีบริการเว็บที่ไคลเอนต์ Android นำทางของเราสามารถใช้งานได้
การกำหนดเส้นทางออฟไลน์ไม่ได้รับการสนับสนุนอย่างเป็นทางการอีกต่อไป แต่ควรยังคงใช้งานได้เนื่องจาก Android รองรับ Java ส่วนใหญ่ ดูเวอร์ชัน 1.0 พร้อมการสาธิต Android และดูคำขอดึงของ iOS fork รวมถึงการสาธิตสำหรับ iOS
ใช้ไอโซโครนเพื่อคำนวณและแสดงภาพพื้นที่ที่สามารถเข้าถึงได้สำหรับโหมดการเดินทางบางโหมด
คุณสามารถลองใช้อินเทอร์เฟซผู้ใช้ดีบักได้ที่ http://localhost:8989/maps/isochrone เพื่อดูการทำงานของจุดสิ้นสุด /isochrone
และ /spt
มีโปรเจ็กต์ย่อยการจับคู่แผนที่เพื่อบันทึกเส้นทาง GPX สู่ถนน
GraphHopper รองรับอัลกอริธึมการกำหนดเส้นทางหลายอย่าง เช่น Dijkstra และ A *
และตัวแปรแบบสองทิศทาง นอกจากนี้ยังช่วยให้คุณใช้ Contraction Hierarchies (CH) ได้อย่างง่ายดายมาก เราเรียก โหมดความเร็ว นี้ว่า หากไม่มีการเตรียม CH เราจะเรียกมันว่า โหมดยืดหยุ่น
โหมดความเร็วมาพร้อมกับการตอบสนองที่รวดเร็วและเบามาก (RAM น้อยกว่า) และไม่ใช้การวิเคราะห์พฤติกรรม อย่างไรก็ตาม สามารถทำได้เฉพาะโปรไฟล์ยานพาหนะที่กำหนดไว้ล่วงหน้าเท่านั้น และการเตรียม CH เพิ่มเติมนี้ต้องใช้เวลาและทรัพยากรมาก
นอกจากนี้ยังมี โหมดไฮบริด ซึ่งต้องใช้เวลาและหน่วยความจำมากขึ้นในการเตรียมการ แต่จะมีความยืดหยุ่นมากกว่ามากในการเปลี่ยนแปลงคุณสมบัติตามคำขอ หรือเช่น การบูรณาการข้อมูลการรับส่งข้อมูล นอกจากนี้ โหมดไฮบริดนี้ยังช้ากว่าโหมดความเร็ว แต่เป็นลำดับความสำคัญที่เร็วกว่าโหมดยืดหยุ่น และใช้ RAM น้อยกว่าสำหรับคำขอเดียว
หากมีการเตรียมการอยู่ คุณสามารถสลับระหว่างโหมดทั้งหมดได้ตามเวลาที่ร้องขอ
อ่านเพิ่มเติมเกี่ยวกับรายละเอียดทางเทคนิคได้ที่นี่
เราเลือก Apache License เพื่อให้ง่ายสำหรับคุณในการฝัง GraphHopper ในผลิตภัณฑ์ของคุณ แม้กระทั่งแหล่งปิด เราขอแนะนำให้คุณสนับสนุนการเปลี่ยนแปลงของคุณ เนื่องจาก GraphHopper มีการพัฒนาอย่างรวดเร็ว
OpenStreetMap ได้รับการสนับสนุนโดยตรงจาก GraphHopper หากไม่มีข้อมูลที่น่าทึ่งจาก OpenStreetMap GraphHopper คงเป็นไปไม่ได้เลย ข้อมูลแผนที่อื่นๆ จะต้องมีขั้นตอนการนำเข้าแบบกำหนดเอง ดูเช่น Ordnance Survey, Shapefile เช่น ESRI หรือ Navteq
GraphHopper เขียนด้วยภาษา Java และทำงานอย่างเป็นทางการบน Linux, Mac OS X และ Windows
ฝัง GraphHopper พร้อมการรองรับ OpenStreetMap ลงในแอปพลิเคชัน Java ของคุณผ่านตัวอย่างต่อไปนี้:
< dependency >
< groupId >com.graphhopper</ groupId >
< artifactId >graphhopper-core</ artifactId >
< version >[LATEST-VERSION]</ version >
</ dependency >
ดูแอปพลิเคชันตัวอย่างของเราเพื่อเริ่มต้นอย่างรวดเร็ว
คุณสามารถปรับแต่ง GraphHopper ด้วยความรู้ Java (ด้วย API ระดับสูงและต่ำ) และโดยไม่ต้องใช้ความรู้ Java โดยใช้โมเดลที่กำหนดเอง
ด้วยโมดูลเว็บ เราจัดเตรียมโค้ดเพื่อสืบค้น GraphHopper ผ่าน HTTP และลดการใช้แบนด์วิดท์ให้มากที่สุด เพื่อสิ่งนั้น เราใช้การเข้ารหัสโพลีไลน์ที่มีประสิทธิภาพ อัลกอริธึม Ramer–Douglas–Peucker และตัวกรองเซิร์ฟเล็ต GZIP แบบธรรมดา
ฝั่งไคลเอ็นต์ เรามีไคลเอ็นต์ Java และ JavaScript
GraphHopper ยังทำงานบนเดสก์ท็อปในแอปพลิเคชัน Java ที่ไม่มีอินเทอร์เน็ต เพื่อวัตถุประสงค์ในการแก้ไขจุดบกพร่อง GraphHopper สามารถสร้างไทล์เวกเตอร์ได้ เช่น การแสดงภาพเครือข่ายถนนในเบราว์เซอร์ (ดู #1572) นอกจากนี้ UI แบบสวิงระดับต่ำยังมีให้ผ่าน MiniGraphUI ในโมดูลเครื่องมือ ดูการแสดงภาพบางส่วนที่ทำได้ที่นี่ การแสดงภาพแผนที่ที่รวดเร็วและพร้อมใช้งานจริงสำหรับเดสก์ท็อปสามารถนำไปใช้ผ่าน mapforge หรือ mapforge vtm