4

Osmdroid と Graphhoper を組み合わせて都市部でのオフライン ルーティングを実現するアプリケーションを作成しようとしています。Open Street Maps から osm ファイルをエクスポートし、そのファイルを pbf に変換しました。問題は、Graphhoper が Android デバイスでは使用できない java.xml.stream を使用して pbf ファイルを解析しようとするため、アプリケーションが pbf ファイルのロードに失敗することです。これは、pbf ファイルをロードするために使用している関数です。

    public void setRouting(){
    File dir = new File(Environment.getExternalStorageDirectory(),"osmdroid");
    File osmFile=new File(dir,"offline-map.osm.pbf");

    if(!osmFile.exists()){
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setMessage("File doesn't exist").setTitle("Error");
        AlertDialog dialog = builder.create();
        dialog.show();
        return;
    }


    GraphHopper hopper = new GraphHopper().forMobile();
    hopper.setEncodingManager(encodingManager);
    hopper.setGraphHopperLocation(getApplicationContext().getFilesDir().getPath());
    hopper.setOSMFile(osmFile.getAbsolutePath());
    hopper.setCHShortcuts("fastest");
    hopper.importOrLoad();
}

私は、osm を ghz に変換できることを知っています (私の場合はこれが機能します): https://github.com/graphhopper/graphhopper/blob/0.3/docs/android/index.md しかし、これを実行することはできません:

./graphhopper.sh import <your-osm-file>    

Windows OS で。

Graphhopper を含めるために Maven を使用していません。jar を libs フォルダーに挿入しました。

osm ファイルをプロジェクトにインポートして、オフライン ルーティングを実現するにはどうすればよいですか?

私はついにこれを解決することができました。

これが私がやった方法です

  1. Apache Maven をダウンロード
  2. インストール手順 - Windows セクションまで下にスクロールし、maven のインストール手順に従います
  3. 環境ユーザー変数 MAVEN_HOME を設定します。つまり、C:\Program Files\Apache Software Foundation\apache-maven-3.2.1 です。(M2_HOME と同じ値を使用することが重要です)
  4. Graphopper git をローカル マシンのgitにクローンするか、レポジトリを zip としてダウンロードし、ローカル ディスクのどこかに展開します。
  5. Cygwinをダウンロードしてインストールする
  6. Cygwin を実行する
  7. $ cd /cygdrive/
  8. ルート タイプ「ls」に配置され、コンピューター上のすべてのドライブが表示されます
  9. 自分自身を Graphhopper git root に配置します。つまり、c:\git\graphopper の場合: $ cd c $ cd git $ cd graphhoper

10. filename.osm ファイルをGraphhoper git root にコピーします。 11. $ ./graphhopper.sh import filename.osm 12. Graphopper git root フォルダーに filename-gh というフォルダーがあり、すべてが含まれています。あなたが必要です。13. そのフォルダーをモバイル デバイスにコピーします。 14. 次のようなものを使用できます。File ghDir=new File(dir.getAbsolutePath(),"filename-gh");

hopper = new GraphHopper().forMobile();
hopper.setCHShortcuts("fastest");
hopper.load(ghDir.getAbsolutePath());

グラフホッパーを初期化する

さらに2つのヒント。Graphopper jar (graphhopper-0.3-SNAPSHOT.jar) がない場合は、以下を使用して作成できます。 $ ./graphhopper.sh build filename.osm 新しい jar は core/target/ フォルダーにあります。

ここからダウンロードできる trove-3.0.3.jar が必要です。zip から trove-3.0.3.jar をプロジェクトの libs フォルダーに追加するだけです。

何も忘れていないことを願っています:)

4

1 に答える 1

3

Android で xml/pbf をインポートすることはできません (まだ)。Windows を使用しているので、 cygwin を介してインポートを実行する方法に関するドキュメントを参照してください。

于 2014-05-26T23:43:20.077 に答える