熱門文章

2012年8月30日 星期四

BigPlanet SQLite Database Merger v0.2


[BigPlanetSQLiteMerger v0.2 離線地圖資料庫合併程式]

[BigPlanetSQLiteMerger v0.2 更新細節]
  1. 升級 SQLite 函示庫為 sqlite-jdbc-3.7.2.jar,現在全面性支援 32 位元與 64 位元的各種作業系統包括 Linux、Mac、Windows。
  2. 合併時可取代舊的地圖圖檔 (tiles)。
  3. 合併時可更新 RMaps 獨有的 info 資料表內的 minzoom, maxzoom 欄位。 (感謝網友 wdshieh 指出 0.1 版程式問題)
  4. 預設 JVM (Java 虛擬機器) 可用最大記憶體改為 -Xmx1024MB。
  5. 預設每 10000 筆資料合併一次 。

[BigPlanetSQLiteMerger v0.2 快速上手]
  1. 下載 BigPlanetSQLiteMerger v0.2.zip 並解壓縮至某目錄下,例如 C:\BigPlanetSQLiteMerger\
  2. 將欲合併的兩個 SQLite (*.sqlitedb) 離線地圖資料庫移至 C:\BigPlanetSQLiteMerger\ 目錄內,也就是說和 BigPlanetSQLiteMerger.jar 位於同一個目錄。
  3. 將欲合併的兩個離線地圖資料庫改名為 source.sqlitedb 及 target.sqlitedb (或是更改 start.bat 與 start.sh)
  4. 開始將 source.sqlitedb 的內容合併至 target.sqlitedb 內。
    • Windows 使用者請點兩下執行 start.bat,Linux 及 Mac 使用者請執行 start.sh (記得設定執行權限)
    • 假如 source.sqlitedb 內有 10,000 個地圖圖檔,target.sqlitedb 內有 20,000 個地圖圖檔,而且這兩個資料庫共有 2000 個地圖圖檔重複,則執行 start.bat 或 start.sh 進行合併後,source.sqlitedb 內容不變,還是有 10,000 個地圖圖檔,target.sqlitedb 則會有 20,000+(10,000-2,000) = 28,000 個地圖圖檔。
    • 如果您需要保留合併前的 target.sqlitedb (內有 20,000 個地圖圖檔),則請在合併之前先備份 target.sqlitedb

[BigPlanetSQLiteMerger.jar v0.2 參數說明]
共三個參數,第三個為選擇性參數:sourceSQLiteDB targetSQLiteDB [BatchSize=10000]
---------------------------------------------- 
java -Xms64M -Xmx1024M -jar BigPlanetSQLiteMerger.jar source.sqlitedb target.sqlitedb 10000
----------------------------------------------
  • 以上指令將 source.sqlitedb 內容合併至 target.sqlitedb,預設每 10000 筆資料合併一次。
  • 一旦 BatchSize 設越大,理論上合併速度越快,但執行時需要用越多記憶體,所以必須調整此參數 -Xmx1024M,此參數表示 JVM (Java 虛擬機器) 最多使用 1024 MB 的記憶體,若這個數字不夠大,就有可能出現 Out Of Memory (記憶體不足) 的錯誤。

[BigPlanetSQLiteMerger.jar v0.2 執行過程]
以下為執行 start.bat
java -Xms64M -Xmx1024M -jar BigPlanetSQLiteMerger.jar Google.Maps.Taiwan.sqlitedb Google.Maps.Japan.sqlitedb 10000
後,Windows 的命令提示字元 (Console) 顯示的內容。
======================================
=     BigPlanetSQLiteMerger v0.2     =
=  Powered by Dr. TYT's Android Map  =
=  http://android-map.blogspot.com/  =
======================================
--------------------------------------
Google.Maps.Taiwan.sqlitedb: 690672 KB
Google.Maps.Japan.sqlitedb: 1170577 KB
--------------------------------------
Total 195295 map tiles in Google.Maps.Taiwan.sqlitedb
adding map tiles 1~10000 of total 195295
adding map tiles 10001~20000 of total 195295
adding map tiles 20001~30000 of total 195295
adding map tiles 30001~40000 of total 195295
adding map tiles 40001~50000 of total 195295
adding map tiles 50001~60000 of total 195295
adding map tiles 60001~70000 of total 195295
adding map tiles 70001~80000 of total 195295
adding map tiles 80001~90000 of total 195295
adding map tiles 90001~100000 of total 195295
adding map tiles 100001~110000 of total 195295
adding map tiles 110001~120000 of total 195295
adding map tiles 120001~130000 of total 195295
adding map tiles 130001~140000 of total 195295
adding map tiles 140001~150000 of total 195295
adding map tiles 150001~160000 of total 195295
adding map tiles 160001~170000 of total 195295
adding map tiles 170001~180000 of total 195295
adding map tiles 180001~190000 of total 195295
adding map tiles 190001~195295 of total 195295
Total 407.031 seconds to add/replace 195295 map tiles into Google.Maps.Japan.sqlitedb
--------------------------------------
Google.Maps.Taiwan.sqlitedb: 690672 KB
Google.Maps.Japan.sqlitedb: 1860343 KB
--------------------------------------

8 則留言:

  1. 版主:
    想請問一下我在Rmaps下匯入KML後,POI旁的說明和敘述都變很淡幾乎看不到,請問該如何設定

    回覆刪除
  2. 我是WIN7X64的總是出現Unable to access jarfile BigPlanetSQLiteMerger.jar
    請問要怎樣解決@@?

    回覆刪除
    回覆
    1. BigPlanetSQLiteMerger v0.2.zip 解壓縮後的目錄路徑不能有空格,請檢查看看是不是這個原因。

      刪除
  3. 作者已經移除這則留言。

    回覆刪除
    回覆
    1. 那就是 JDK 或 JRE 版本問題,我 Win7 x64 裝 32-bit JDK 使用正常。

      刪除
  4. 版主:
    我有2個OruxMaps的database想合併, 可以做一個OruxMaps SQLiteMerger嗎?
    database file名稱是OruxMapsImages.db.

    感謝

    回覆刪除
    回覆
    1. 檔名是甚麼一點也不重要,重要的是OruxMaps使用的資料庫內的欄位格式是否與 BigPlanetTrack SQLite 或 RMaps SQLite 格式相同。
      Anyway, 沒空寫 OruxMaps SQLiteMerger

      刪除
  5. Is source (.java) available for extending?

    回覆刪除