2017-10-06 54 views
0

我的最終目標是讓地圖數據(離線,因爲我會自己定製它)顯示在應用程序(Android)中。我可以讓osmdroid在網上加載地圖,我試圖弄清楚如何下載和顯示離線地圖。我下載了MOBAC(Mobile Atlas Creator)並將數據導出爲SQLite格式,當我查看它時,我意識到瓷磚以圖像格式(PNG)保存。使用osmdroid離線使用地圖數據

我想要做的是將數據導入到手機中,以便稍後在搜索引擎或路由算法等算法中使用它,所以我需要「節點」和「方式」(就像我從他們那裏得到的那樣)原始的OSM XML),將它們導入到手機中並將其可視化,以便稍後將此數據用於我想要開發的算法。基本上,MAPS.ME做了什麼。我認爲將XML轉換爲SQLite並不困難,因爲一個簡單的腳本可以實現它,但是,如何從該自定義SQLite數據庫生成拼貼圖?或者,有沒有辦法以更合適的方式下載數據以完成我打算做的事情?

謝謝。

回答

0

從原始Openstreetmap數據渲染應用程序中的圖塊會造成計算繁重且效率低下。我會建議使用您導出的圖像拼貼來進行可視化表示。

除了瓷磚之外,您還應該導出數據集,以便在應用程序中獲得所需的功能。您不需要Openstreetmap中的所有數據,因此您應該確定需要的內容並構建自定義導出(有用於處理和過濾Openstreetmap數據的工具和庫。我使用pyosmium進行了一些過濾和處理,但還有其他一些。)例如,您可以使用要搜索的POI構建自定義數據庫。

路由是另一章。你可以自己實現它,但這是一個非常複雜的任務。有java library called Graphopper可以爲你做數據提取(從Openstreetmap)和離線路由。他們也有一個在線API,但可以使其完全脫機工作(我爲一個應用程序做過)。嘗試查看源代碼,因爲您可以看到多麼複雜的主題路由。最後說明:從Graphopper導出的數據包含沿路線上的一些POI的信息。有可能通過它的java API搜索一些東西,但我還沒有調查過。

+0

有趣。我還沒有考慮過將數據庫與瓦片和另一個與POI結合在一起。關於路由,你覺得這有多困難?難道不是簡單地實現像A *這樣的算法? – kuonb

+0

@kuonb我認爲挑戰將是從openstreetmap數據構建一個評分圖。它可以肯定地完成,但它需要對osm數據結構有深入的瞭解(maily [tags](https://wiki.openstreetmap.org/wiki/Map_Features)可能會影響路由)。評分本身可能會非常棘手。這基本上是Graphopper庫的功能。但如果你真的瞭解它,我想你可以試試看。我認爲這在經濟上不可行,但取決於你的具體項目和限制。 –