iT邦幫忙

2023 iThome 鐵人賽

DAY 28
0
Mobile Development

Google Maps SDK for Android 與 GIS App 開發筆記系列 第 28

Day 28: 手機上的空間資料庫--Sptialite 介紹

  • 分享至 

  • xImage
  •  

https://upload.wikimedia.org/wikipedia/en/f/f1/SpatiaLite_logo.png

簡介

Spatialite 是基於 SQLite 所延伸的開源資料庫,由 Alessandro Furieri 開發。本質上跟普通的 SQLite 沒有太大的差異,一個檔案就是一個資料庫,且可執行資料的增刪修查。最大的差異在於 Spatialite 支援空間資料的讀取與運算。

根據官網的介紹,Spatialite 與 SQLite 的搭配,可讓使用者快速部署一個完整與強大的空間資料庫管理系統,相當於 PostgreSQL + PostGIS 的組合。

Spatialite 檔案讀取

如同前面介紹所提到的,因為 Spatialite 本質上仍是一個 SQLite 檔案,所以任何可以開啟 SQLite 檔案的軟體,理論上都可以使用,差別只是在於該軟體是否有支援 Spatialite 的相關方法。

QGIS

https://ithelp.ithome.com.tw/upload/images/20231011/20160271IbaTwK2fAB.png

  • QGIS 是著名的開源 GIS 軟體。
  • 支援 MacOS 與 Windows 雙平台。
  • 可將 Spatialite 以圖層方式加入,並檢視其屬性資料(資料表)。

Spatialite-GUI (最推薦)

https://ithelp.ithome.com.tw/upload/images/20231011/20160271vmTWPHVBqQ.png

如果您是 Windows 的使用者,可以使用 Spatialite-GUI 這套軟體來開啟。

  • Spatialite-GUI 是由官方所開發的 GUI 軟體。
  • 可查看 Spatialite 內的完整資料。
  • 可讀取 binanry 資料,轉成 WKT / Image / Vector 等。
  • 可執行增刪修查。
  • 可執行空間運算的 SQL 方法。
  • 僅限 Windows 平台。

不過要注意的是,GUI 所使用的 Spatialite 版本跟實際專案中使用的可能會有落差,不見得所有的空間運算方法都可以使用。

DB Browser for SQLite

https://ithelp.ithome.com.tw/upload/images/20231011/20160271xPN7TT7Qy0.png

https://sqlitebrowser.org/

  • 純 SQLite 讀取工具。
  • 支援 Windows 與 MacOS 雙平台。
  • 可查看 Spatialite 內的資料表,但無法讀取 binary 資料。
  • 可執行增刪修查。
  • 不可執行空間運算的 SQL 方法。

範例檔案

這裡提供一份 Spatialite 官方的範例檔案。來源是官方教學 spatialite-android-tutorial,有興趣的讀者可以透過下方連結,下載一份來看看。

https://bitbucket.org/moovida/spatialite-android-example/downloads/

以下是用 Spatialite-GUI 開啟的截圖:

https://ithelp.ithome.com.tw/upload/images/20231011/20160271g4DPYqSUGS.png

上圖左下角的視窗,就是讀取 Geometry 欄位的其中一個項目,除了可以看到空間資料轉成向量圖的結果外,還可以看到 SRID 與 Geometry 類型等資訊。

Spatialite-Android

https://ithelp.ithome.com.tw/upload/images/20231011/20160271m72wbf5YLV.png

介紹

Spatialite-Android 是由 U.S. Army Geospatial Center 所釋出的開源專案,讓開發者可以像操作普通 SQLite 一般,在 Android 專案中操作 Spatialite 的檔案。

官方版本

官方目前有釋出 3.0.14.3.0 兩種版本。

筆者之前有使用過的是 3.0.1 的版本,引用的方式如下:

  1. 將下載後的 spatialite-android-librarylibs 資料夾複製至你的專案中。(libs 內包含不同平台版本的 libjsqlite.so)
  2. src 內的 jsqlite 完整 API 類別們複製至你的專案中。
  3. 專案 sync 後就可以呼叫 jsqlite 的相關類別操作 Spatialite 。

筆者這段只簡單帶過,有需要更詳細操作說明的讀者,可以參考官方說明。下面將介紹比較好用的第三方版本

第三方版本

Github: sevar83/android-spatialite 是由 Svetlozar Kostadinov 所建立的開源專案,他將 4.3.0a 版本的 Spatialite 打包成套件,且優化了 Java 端的操作介面,整體使用起來更類似傳統的 SQLiteOpenHelper,在開發上相對無痛一些。因此這也是筆者比較推薦的版本。

明天將帶各位一起實際實作 Spatialite 的檔案操作,屆時也是使用這個第三方的版本。

參考資料

小結

以上就是今天對 Spatialite 這個空間資料庫的介紹。

明天將帶大家實際操作 Spatialite 在 Android 上的 CRUD,以及常見的 SQL functions。

明天見啦~/images/emoticon/emoticon08.gif


上一篇
Day 27: Android 上的 WKT 空間資料格式介紹與使用
下一篇
Day 29: android-spatialite 實作與常用的 Spatial SQL Functions
系列文
Google Maps SDK for Android 與 GIS App 開發筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言