前言
除了前一天有提到的關聯式資料庫具有地理空間函式庫,使用Key-Value的資料庫例如MongoDB也支援一些空間運算子,在不同應用場合可能會用到,就來嘗試看看。
本文是參加鐵人賽的文章,同步發表於 “2018鐵人賽-30天打造我的WebGIS系列”
安裝
安裝Mongodb的方法:
- Windows可以直接下載安裝檔
- Mac有Howbrew可以使用Howbrew:
1 | brew update |
然後就完成了。
啟動
啟動Mongodb1
Mongod
修改資料庫存放的路徑1
mongod --dbpath ~/mongo_test
基本操作
進入資料庫操作1
mongo
顯示資料庫清單1
2show dbs
//ironman
進入ironman這個資料庫1
use ironman
顯示資料庫的collections1
2show collection
//test
在test中query所有資料1
db.test.find({})
空間搜尋
首先匯入一份具有空間資訊的資料:1
db.test.save({name:"前鎮高中網球場", city:"高雄市", geom:[120.318735,22.589452]})
建立空間索引,在2d的索引部分分為2dsphere與2d1
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,又需要一些基本的空間資料運算,可以參考!