其中一個更新爲mysql表中的字段的值是類型'point'的'位置'。mysql空間字段
當我們選擇字段
select *,AsText(location) from somtable
如何我們在腳本中使用這個領域?我們需要找到兩點之間的半徑或距離。
其中一個更新爲mysql表中的字段的值是類型'point'的'位置'。mysql空間字段
當我們選擇字段
select *,AsText(location) from somtable
如何我們在腳本中使用這個領域?我們需要找到兩點之間的半徑或距離。
通常,您需要將兩個位置之間的距離作爲另一個字段返回,而不是位置,因爲這是點本身而不是距離。喜歡的東西: 例如:
$sql = 'SELECT *, (3959 * acos(cos(radians(' . $lat1 . ')) * cos(radians(location.lat)) * cos(radians(location.lng) - radians(' . $lng1 . ')) + sin(radians(' . $lat1 . ')) * sin(radians(location.lat)))) AS distanceFromUser FROM somtable WHERE....';
但如果你是一個點的數據類型滾動,然後使用一些MySQL的空間功能來代替。其中一個受歡迎的是MBRContains。這使得您的查詢是這樣的:
select * from somtable where
MBRContains(
GeomFromText('Polygon((swLat swLon, neLat swLon, neLat neLon, swLat neLon, swLat swLon))'), location);
其他座標指定一個邊界框,其中您的位置點必須存在。所以在第二種情況下,你只是在框內返回點數。在第一種情況下,您將距離返回到表中的每個點。
此鏈接可以爲半徑的具體例子:
http://howto-use-mysql-spatial-ext.blogspot.in/2007/11/using-circular-area-selection.html
它建立在@ dRocking的MBRContains的例子,還說明了如何建立從給定的點的多邊形。
看到這個問題:http://stackoverflow.com/questions/2411528/query-points-within-a-given-radius-in-mysql – Johan