1、資料庫內在支援gis(地理資訊系統)
mysql: 目前只有myisam引擎是支援gis的,innodb在5.7版本中才支援空間索引。myisam這個引擎
不支援事務、外來鍵,而且是表鎖。適合讀為主,不適合寫操作。而且如果單獨建一張表的話,那每次都要與
現有的表聯合查詢返回tag的地點,效率多少會有些影響,而且也不確定django是否支援innodb與myisam
引擎聯合查詢。(目前用的innodb引擎)
其它資料庫:mongodb和postgresql都是支援gis的,前者沒有仔細研究,後者在gis方面很強大,
但目前還不考慮切換資料庫。
3、自己開發
考慮有兩種方案,
(1) 資料庫儲存地點的經緯度,查詢附近的地點時,用球面兩點間距離公式計算並排序。
為了提高效率,還可以將其儲存成儲存過程。
(2)將經緯度轉為一維資料geohash,這樣可以在geohash上用加索引,而且用like語句
可實現查詢。不過要至少呼叫6條like語句,而且不能實現任意距離的搜尋,只能搜尋幾個距離
範圍內的地點。
目前,公司負責開發的產品需求並不需要精確搜尋,從時間成本、效能兩方面考察這些方案,最好的兩個方案是
比較合適的。最終選定geohash方案
GEO資料探勘(2) GEO資料庫
geo全稱 gene expression omnibus geo資料庫起先只是為表達晶元資料準備的,後期納入了各種ngs組學資料,文章裡面會給出資料位址,gse id號,由此我們就可以進入geo資料庫,進而了解它!如gse84498 一篇文章可以有乙個或者多個gse資料集,乙個gse裡面可以有乙個...
利用Redis的GEO功能,實現位置查詢
業務需求 專案中有需求要根據圖上繪製的路徑搜尋某半徑範圍內所有的裝置。解決思路 利用高德地圖繪製的路線,可以取得路線上所有點位的經緯度。根據redis的geo功能,將所有裝置的經緯度寫入redis,然後根據點位經緯度和搜尋半徑,通過redis提供的方法即可查詢出在此範圍內的所有裝置。1 redis ...
GEO型別的命令
geo是redis的高階資料結構。geo儲存的元素是經度緯度和名字,是用來計算半徑範圍內有哪些之前已經儲存的值。主要有以下命令 geoadd geodist geohash geopos georadius georadiusbymember把乙個或多個經緯度位址新增到key中。已經存在的元素再次新...