1

我试图在一个 15 码的正方形内对相似的值进行分组(因此是特定的值)。

这是通过获取纬度/经度值,减去或添加另一个值来完成的,如果此条件大于/小于该值,则分组

我已经通过使用以下代码从我的 mySQL DB 中选择数据来尝试使用 PHP:

$summarisedData = mysql_query("SELECT P_ID,COUNT(*) 
FROM road_awareness 
WHERE 
(
  (
     (
     LAT - '$value[LAT]' < (0.006858/69) 
     AND 
     LAT - '$value[LAT]' > (-0.006858/69)
     ) 
  OR 
     (
     LAT + '$value[LAT]' < (0.006858/69) 
     AND 
     LAT + '$value[LAT]' > (-0.006858/69) 
     )
   ) 
AND
 (
    (
    LON - '$value[LON]' < 0.006858/(cos($lat*M_PI/180)*69) 
    AND 
    LON - '$value[LON]' > -0.006858/(cos($lat*M_PI/180)*69)
    )
  OR 
    (
    LON + $value[LON]' < 0.006858/(cos($lat*M_PI/180)*69) 
    AND 
    LON + '$value[LON]' > -0.006858/(cos($lat*M_PI/180)*69)
    )
  )
)
GROUP BY LAT, LON");

这段代码非常hacky,有很多重复的代码,我不确定它是否正确。将不胜感激任何帮助。

4

1 回答 1

0

可能最好在每条记录中预先计算一些“扇区”值(每个 15 平方码),road_awareness而不是在查询确定哪个扇区落在您的 $value[LAT]/$value[LON] 并按扇区选择之前。

于 2013-02-21T22:23:57.677 回答