GraphHopper adalah mesin perutean yang cepat dan hemat memori yang dirilis di bawah Lisensi Apache 2.0. Ini dapat digunakan sebagai perpustakaan Java atau server web mandiri untuk menghitung jarak, waktu, petunjuk belokan demi belokan, dan banyak atribut jalan untuk rute antara dua titik atau lebih. Di luar perutean "A-ke-B" ini, ia mendukung "snap to road", penghitungan Isochrone, navigasi seluler, dan banyak lagi. GraphHopper menggunakan data OpenStreetMap dan GTFS secara default dan juga dapat mengimpor sumber data lain.
Kami memiliki komunitas terbuka dan menyambut semua orang. Beri tahu kami masalah Anda, kasus penggunaan, atau sekadar menyapa. Silakan lihat pedoman komunitas kami.
Semua pertanyaan masuk ke forum kami di mana kami juga memiliki subbagian khusus untuk pengembang, penggunaan seluler, dan komponen pencocokan peta kami. Anda juga dapat mencari jawaban di Stackoverflow.
Baca panduan kontribusi kami untuk informasi tentang topik seperti menemukan dan memperbaiki bug serta meningkatkan dokumentasi atau terjemahan kami! Kami juga memiliki masalah pertama yang bagus untuk memulai kontribusi.
Untuk memulai, Anda dapat mencoba GraphHopper Maps, membaca dokumentasi kami dan menginstal GraphHopper termasuk UI Maps secara lokal.
Lihat file changelog untuk Perubahan Java API.
Untuk menginstal GraphHopper Maps UI dan layanan web secara lokal Anda memerlukan JVM (>= Java 17) dan lakukan:
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
Setelah beberapa saat Anda melihat pesan log dengan 'Server - Dimulai', lalu buka http://localhost:8989/ dan Anda akan melihat peta Berlin. Anda seharusnya bisa mengklik kanan pada peta untuk membuat rute.
Lihat dokumentasi yang berisi misalnya panduan ketinggian dan panduan penerapan.
Gambar Docker yang dibuat oleh komunitas dari cabang master
dapat ditemukan di sini (saat ini setiap hari). Lihat Dockerfile untuk lebih jelasnya.
Untuk melihat fitur perutean jalan GraphHopper beraksi, silakan buka GraphHopper Maps.
GraphHopper Maps adalah antarmuka pengguna sumber terbuka, yang dapat Anda temukan di sini. Ia dapat menggunakan mesin perutean sumber terbuka ini atau GraphHopper Directions API, yang menyediakan API Perutean, API Pengoptimalan Rute (berdasarkan jsprit), API Matriks cepat, dan pencarian alamat (berdasarkan foton). Proyek foton juga didukung oleh GraphHopper GmbH. Selain GraphHopper Directions API, ubin peta dari berbagai penyedia digunakan, dengan defaultnya adalah Omniscale.
Semua ini tersedia secara gratis, melalui koneksi terenkripsi dan dari server Jerman - untuk pengalaman perencanaan rute yang menyenangkan dan pribadi!
Mulailah
Ada layanan web yang dapat digunakan oleh klien Android navigasi kami.
Perutean offline tidak lagi didukung secara resmi tetapi masih berfungsi karena Android mendukung sebagian besar Java. Lihat versi 1.0 dengan demo Android dan lihat juga permintaan tarik fork iOS ini termasuk demo untuk iOS.
Gunakan isochrones untuk menghitung dan memvisualisasikan area yang dapat dijangkau untuk mode perjalanan tertentu.
Anda dapat mencoba antarmuka pengguna debug di http://localhost:8989/maps/isochrone untuk melihat titik akhir /isochrone
dan /spt
beraksi.
Ada subproyek pencocokan peta untuk mengambil jejak GPX ke jalan.
GraphHopper mendukung beberapa algoritma perutean, seperti Dijkstra dan A *
serta varian dua arahnya. Selain itu, ini memungkinkan Anda untuk menggunakan Contraction Hierarchies (CH) dengan sangat mudah. Kami menyebutnya mode kecepatan ; tanpa persiapan CH ini, kami menyebutnya mode fleksibel .
Mode kecepatan hadir dengan respons yang sangat cepat dan ringan (RAM lebih sedikit) serta tidak menggunakan heuristik. Namun, hanya profil kendaraan yang telah ditentukan sebelumnya yang dapat dilakukan dan persiapan CH tambahan ini memakan waktu dan sumber daya.
Lalu ada mode hybrid yang juga memerlukan lebih banyak waktu dan memori untuk persiapannya, namun jauh lebih fleksibel dalam mengubah properti per permintaan atau misalnya mengintegrasikan data lalu lintas. Selain itu, mode hibrid ini lebih lambat dibandingkan mode kecepatan, namun lebih cepat dibandingkan mode fleksibel dan menggunakan lebih sedikit RAM untuk satu permintaan.
Jika persiapannya ada, Anda dapat beralih di antara semua mode pada waktu permintaan.
Baca lebih lanjut tentang detail teknisnya di sini.
Kami memilih Lisensi Apache untuk memudahkan Anda menyematkan GraphHopper di produk Anda, bahkan sumber tertutup. Kami menyarankan Anda berkontribusi kembali pada perubahan Anda, karena GraphHopper berkembang dengan cepat.
OpenStreetMap didukung langsung oleh GraphHopper. Tanpa data luar biasa dari OpenStreetMap, GraphHopper tidak akan mungkin terjadi sama sekali. Data peta lainnya memerlukan prosedur impor khusus, lihat misalnya Ordnance Survey, Shapefile seperti ESRI atau Navteq.
GraphHopper ditulis dalam Java dan secara resmi berjalan di Linux, Mac OS X dan Windows.
Sematkan GraphHopper dengan dukungan OpenStreetMap ke dalam aplikasi Java Anda melalui cuplikan berikut:
< dependency >
< groupId >com.graphhopper</ groupId >
< artifactId >graphhopper-core</ artifactId >
< version >[LATEST-VERSION]</ version >
</ dependency >
Lihat contoh aplikasi kami untuk memulai dengan cepat.
Anda dapat menyesuaikan GraphHopper dengan pengetahuan Java (dengan API tingkat tinggi dan rendah) dan juga tanpa pengetahuan Java menggunakan model khusus.
Dengan modul web, kami menyediakan kode untuk menanyakan GraphHopper melalui HTTP dan mengurangi penggunaan bandwidth sebanyak mungkin. Untuk itu kami menggunakan pengkodean polyline yang efisien, algoritma Ramer–Douglas–Peucker, dan filter servlet GZIP sederhana.
Di sisi klien, kami menyediakan klien Java dan JavaScript.
GraphHopper juga berjalan di Desktop dalam aplikasi Java tanpa akses internet. Untuk keperluan debugging GraphHopper dapat menghasilkan ubin vektor, yaitu visualisasi jaringan jalan di browser (lihat #1572). UI berbasis Swing tingkat rendah juga disediakan melalui MiniGraphUI di modul alat, lihat beberapa visualisasi yang dilakukan dengannya di sini. Visualisasi peta yang cepat dan siap produksi untuk Desktop dapat diimplementasikan melalui Mapsforge atau Mapsforge vtm.