1

15ヤード四方の範囲内で同様の値をグループ化しようとしています(したがって、特定の値)。

これは、緯度/経度の値を取得し、それに別の値を減算または加算することによって行われます。この条件が値よりも大きい/小さい場合は、グループ化します。

次のコードを使用してmySQLDBからデータを選択することにより、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");

このコードは非常にハッキーで、重複したコードがたくさんあり、それが正しいかどうかはわかりません。助けていただければ幸いです。

4

1 に答える 1

0

クエリの前よりも、各レコードの「セクター」値(それぞれ15ヤード四方)を事前に計算してroad_awareness、どのセクターが$ value [LAT] / $ value [LON]に該当するかを判断し、セクターごとに選択する方がよい場合があります。

于 2013-02-21T22:23:57.677 に答える