使用MySQL Spatial Extensions 找出圓內的點
在透過緯度和經度決定使用者位置的場景中,常見的任務是檢索一定半徑內附近的旗幟。使用 MySQL 的空間擴展,可以對地理空間資料執行鄰近查詢。
用於圓查詢的空間函數
雖然MySQL 最初缺乏用於緯度/經度距離計算的空間函數,MySQL 5.7 的發布引入了對此類計算的地理空間支持。對於圓形鄰近查詢,可以使用 ST_Distance_Sphere 函數。
SELECT * FROM flags WHERE ST_Distance_Sphere(coordinates, ST_GeomFromText('POINT(latpoint longpoint)')) < 100;
在此查詢中,座標表示包含地理空間點的列,而 latpoint 和 longpoint 是使用者位置的緯度和經度值。圓的半徑以公尺為單位指定。
替代方法
在MySQL 5.7 之前,用戶可以採用替代方法:
用法範例
假設一個有「座標」的「標誌」表格作為幾何point 列,以下查詢擷取使用者 100m範圍內的所有標誌location:
SELECT * FROM flags WHERE ST_Distance_Sphere(coordinates, ST_GeomFromText('POINT(42.81 -70.81)')) < 100;
結論
MySQL 的空間擴展為地理空間資料的高效鄰近查詢提供了強大的工具,包括基於緯度找出圓內點的能力和經度位置。
以上是如何使用 MySQL Spatial Extension 有效率地找出圓內的點?的詳細內容。更多資訊請關注PHP中文網其他相關文章!