GraphHopper は、Apache License 2.0 に基づいてリリースされた、高速でメモリ効率の高いルーティング エンジンです。 Java ライブラリまたはスタンドアロン Web サーバーとして使用して、2 つ以上の地点間のルートの距離、時間、ターンバイターンの指示、および多くの道路属性を計算できます。この「A-to-B」ルーティングを超えて、「道路へのスナップ」、等時性計算、モバイル ナビゲーションなどをサポートします。 GraphHopper はデフォルトで OpenStreetMap と GTFS データを使用し、他のデータ ソースもインポートできます。
私たちはオープンなコミュニティを持っており、誰でも歓迎します。あなたの問題、使用例をお知らせください。あるいは、単にご挨拶をさせてください。コミュニティガイドラインをご覧ください。
すべての質問はフォーラムに寄せられます。フォーラムには、開発者、モバイルの使用、マップ マッチング コンポーネントに特化したサブセクションもあります。 Stackoverflow で答えを検索することもできます。
バグの発見と修正、ドキュメントや翻訳の改善などのトピックについては、貢献ガイドをお読みください。貢献を始めるのに適した最初の号も用意されています。
まず、GraphHopper Maps を試し、ドキュメントを読み、Maps UI を含む GraphHopper をローカルにインストールします。
Java API の変更については、変更ログ ファイルを参照してください。
GraphHopper Maps UI と Web サービスをローカルにインストールするには、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
しばらくすると、「Server - Started」というログ メッセージが表示され、http://localhost:8989/ にアクセスすると、ベルリンの地図が表示されます。地図上で右クリックしてルートを作成できるはずです。
昇格ガイドや展開ガイドなどを含むドキュメントを参照してください。
master
ブランチからコミュニティによって作成された Docker イメージは、ここにあります (現在は毎日)。詳細については、Dockerfile を参照してください。
GraphHopper の道路ルーティング機能の動作を確認するには、GraphHopper Maps にアクセスしてください。
GraphHopper Maps はオープンソースのユーザー インターフェイスであり、ここで見つけることができます。このオープン ソース ルーティング エンジン、またはルーティング API、ルート最適化 API (jsprit ベース)、高速マトリックス API、および住所検索 (フォトン ベース) を提供する GraphHopper Directions API を使用できます。 Photon プロジェクトは、GraphHopper GmbH によってもサポートされています。 GraphHopper Directions API に加えて、さまざまなプロバイダーのマップ タイルが使用されます (デフォルトは Omniscale)。
これらはすべて、暗号化された接続を介してドイツのサーバーから無料で利用でき、プライベートなルート計画を体験できます。
始めましょう
ナビゲーション Android クライアントで利用できる Web サービスがあります。
オフライン ルーティングは正式にはサポートされなくなりましたが、Android は Java のほとんどをサポートしているため、引き続き機能するはずです。 Android デモを含むバージョン 1.0 を参照してください。また、iOS のデモを含む iOS フォークのプル リクエストも参照してください。
等時線を使用して、特定の移動モードで到達可能なエリアを計算し、視覚化します。
http://localhost:8989/maps/isochrone でデバッグ ユーザー インターフェイスを試し、 /isochrone
および/spt
エンドポイントが動作していることを確認できます。
GPX トレースを道路にスナップするためのマップ マッチング サブプロジェクトがあります。
GraphHopper は、ダイクストラ、A *
およびその双方向バリアントなど、いくつかのルーティング アルゴリズムをサポートしています。さらに、Contraction Hierarchies (CH) を非常に簡単に使用できるようになります。これをスピードモードと呼びます。この CH の準備がない場合、これをフレキシブル モードと呼びます。
スピード モードでは、非常に高速かつ軽量 (RAM が少ない) の応答が得られ、ヒューリスティックは使用されません。ただし、事前定義された車両プロファイルのみが可能であり、この追加の CH の準備には時間とリソースがかかります。
次に、準備にさらに多くの時間とメモリを必要とするハイブリッド モードがありますが、リクエストごとのプロパティの変更やトラフィック データの統合などに関しては、はるかに柔軟です。さらに、このハイブリッド モードはスピード モードよりも遅くなりますが、フレキシブル モードよりは一桁速く、1 つのリクエストに使用する RAM の量が少なくなります。
準備があれば、リクエスト時にすべてのモードを切り替えることができます。
技術的な詳細については、こちらをご覧ください。
Apache ライセンスを選択したのは、クローズド ソースであっても、GraphHopper を製品に簡単に組み込めるようにするためです。 GraphHopper は急速に進化しているため、変更をコントリビュートすることをお勧めします。
OpenStreetMap は GraphHopper によって直接サポートされています。 OpenStreetMap からの素晴らしいデータがなければ、GraphHopper はまったく不可能です。他の地図データにはカスタム インポート手順が必要です。陸地測量、ESRI や Navteq などのシェープファイルなどを参照してください。
GraphHopper は Java で書かれており、正式には Linux、Mac OS X、Windows 上で動作します。
次のスニペットを使用して、OpenStreetMap サポートを備えた GraphHopper を Java アプリケーションに埋め込みます。
< dependency >
< groupId >com.graphhopper</ groupId >
< artifactId >graphhopper-core</ artifactId >
< version >[LATEST-VERSION]</ version >
</ dependency >
すぐに使い始めるには、サンプル アプリケーションを参照してください。
GraphHopper は、Java の知識 (高レベルおよび低レベルの API) があればカスタマイズできますが、Java の知識がなくてもカスタム モデルを使用してカスタマイズできます。
Web モジュールでは、HTTP 経由で GraphHopper にクエリを実行し、帯域幅の使用量を可能な限り削減するコードを提供します。そのために、効率的なポリライン エンコーディング、Ramer-Douglas-Peucker アルゴリズム、および単純な GZIP サーブレット フィルターを使用します。
クライアント側では、Java および JavaScript クライアントを提供します。
GraphHopper は、インターネットにアクセスせずに、Java アプリケーションのデスクトップ上でも実行されます。デバッグ目的で、GraphHopper はベクター タイル、つまりブラウザーでの道路網の視覚化を生成できます (#1572 を参照)。また、ツール モジュールの MiniGraphUI を介して、より低レベルの Swing ベースの UI が提供されます。これを使用して行われたいくつかの視覚化をここで参照してください。デスクトップ向けの高速で実稼働可能な地図視覚化は、mapsforge または Mapsforge vtm を介して実装できます。