##MySQL的Geom實在很不成才
MySQL的Geom實在很不成才,OpenGIS規範了這麼多function,就連這麼基本的Distance他都沒實做,跟postgress相比,真的是差了很多,然而系統都是在MySQL上,要移轉資料庫工程實在浩大,還是屈就於MySQL的淫威之下來解決問題。廢話不多說,來看一下如何創建geom欄位。
###建立、修改geom
這裡用到最重要的function是 GeomFromText, 以下例子都是用最常用到的POINT來做說明
查詢落在bounding box裏頭的地標
這裡用到最重要的function是intersects,用來判斷兩個geom是否相集合,我們透過計算將bounding box的轉成polygon來做查詢
###查詢落在bounding box裏的地標, 並計算距離
這裡用到兩點距離公式直接計算距離
但是單位是經緯度,求出經緯度兩點的點距離人類無法理解,經緯度的座標轉換公式有點繁雜,可以參考經緯度轉換TWD97,在大部分的需求,距離只是一個大概的數字即可。
###神秘的1/111111
在中低緯度的地區(例如台灣),可以用這個參數來做很rough的經緯度/ 公尺轉換,例如:我要計算距離經度121.5 距離1000公尺的經度:121.5 + (1/111111 * 1000) = 121.509
因此,我們將上面的SQL做點小修改,乘上一個111111的參數,即可知道距離,當然也可以做排序囉。
###參考資料: