使用MySQL 空間擴充在圓內定位點
背景
MySQL允許空間擴充使用者操作和分析儲存在MySQL 資料庫中的空間資料。一項常見任務是識別位於給定圓內的點。這種情況在基於位置的服務和地理空間分析等應用中經常遇到。
使用MySQL 距離函數取得緯度和經度
已棄用的資訊:
問題原指出不支援緯度和經度距離計算。然而,這些資訊已經過時了。從 MySQL 5.7 開始,空間擴展支援使用緯度和經度座標定義的點之間的歐幾里德距離計算。
範例實作
使用 MySQL 空間選擇圓內的點擴展,您可以使用 ST_Distance() 函數。此函數計算兩點之間的距離(以公尺為單位)。透過圍繞使用者位置建立半徑為 100 公尺的虛擬圓,並檢查「標誌」座標與圓中心之間的距離是否在此半徑內,您可以過濾圓內的點。
以下是一個範例查詢:
SELECT id, name, ST_Distance(coordinates, ST_PointFromGeoJSON('{ "type": "Point", "coordinates": [<user_longitude>, <user_latitude>] })) AS distance_in_meters FROM flags HAVING distance_in_meters <p>此查詢擷取 100 公尺半徑圓內的所有“標誌”,依其鄰近程度排序到使用者的位置。 </p> <p><strong>附加說明:</strong></p> <ul> <li>透過檢查 SHOW 中是否有「空間」項目來確保您的 MySQL 版本支援空間擴展VARIABLES 輸出。 </li> <li>空間索引可以顯著提高空間操作的查詢效能。考慮在「座標」列上建立空間索引。 </li> <li>對於涉及非歐幾里德距離計算的更複雜場景,您可能需要使用支援球形計算的其他工具或外部函式庫。 </li> </ul></user_latitude></user_longitude>
以上是如何使用 MySQL Spatial Extension 找出圓內的點?的詳細內容。更多資訊請關注PHP中文網其他相關文章!