鐵人賽Day 26- 在資料庫中操作空間資料-MongoDB

web
  1. 1. 前言
  2. 2. 安裝
  3. 3. 啟動
  4. 4. 基本操作
  5. 5. 空間搜尋
  6. 6. 後記

前言

除了前一天有提到的關聯式資料庫具有地理空間函式庫,使用Key-Value的資料庫例如MongoDB也支援一些空間運算子,在不同應用場合可能會用到,就來嘗試看看。

本文是參加鐵人賽的文章,同步發表於 “2018鐵人賽-30天打造我的WebGIS系列”

安裝

安裝Mongodb的方法:

  • Windows可以直接下載安裝檔
  • Mac有Howbrew可以使用Howbrew:
1
2
brew update
brew install mongodb

然後就完成了。

啟動

啟動Mongodb

1
Mongod

修改資料庫存放的路徑

1
mongod --dbpath ~/mongo_test

基本操作

進入資料庫操作

1
mongo

顯示資料庫清單

1
2
show dbs
//ironman

進入ironman這個資料庫

1
use ironman

顯示資料庫的collections

1
2
show collection
//test

在test中query所有資料

1
db.test.find({})

空間搜尋

首先匯入一份具有空間資訊的資料:

1
db.test.save({name:"前鎮高中網球場", city:"高雄市", geom:[120.318735,22.589452]})

建立空間索引,在2d的索引部分分為2dsphere與2d

1
db.test.ensureIndex({geom:"2dsphere"})

建立好空間索引,我們就可以使用Mongodb的地理空間函式操作囉!
例如使用\$near進行距離查詢

1
db.test.find({geom: {$near:[120.319,22.588] , $maxDistance:1000 }})

後記

Mongodb的空間運算子還包含了\$geoIntersects跟$geoWithin等,MongoDB這些基本的空間運算子滿方便的,如果需要使用NoSQL或是Key-Value DB,又需要一些基本的空間資料運算,可以參考!