0

MySQL GIS と Spatial Extensions を使用しています。

緯度、経度、半径で記述された「円形」の領域を持つテーブルがあります。

緯度と経度で定義された特定のポイントを含む地域のすべての行を取得するクエリが必要です。「円形」の領域は交差する可能性があるため、ポイントは複数の領域に存在する可能性があります。

4

1 に答える 1

0

私は解決策を思いついたので、それについて意見を述べるためにここに投稿したいと思います。上記のテーブル構造は、挿入ごとに緯度と経度を使用して作成された新しい列 "location POINT" を追加することで、わずかに変更されていることに注意してください。

CREATE PROCEDURE GetRequestsAroundLocation( IN lat DOUBLE, 
                                            IN lon DOUBLE )
BEGIN
  SET @answerLocation = GeomFromText( CONCAT( 'POINT( ', lat, ' ', lon, ' )' ) );

  SELECT id, token, latitude, longitude FROM Request 
  WHERE answerId = -1 AND 
        Intersects( @answerLocation, 
                    GeomFromText( CONCAT( 'POLYGON((', latitude - radius, ' ', longitude - radius, ',', 
                                                       latitude + radius, ' ', longitude - radius, ',', 
                                                       latitude + radius, ' ', longitude + radius, ',', 
                                                       latitude - radius, ' ', longitude + radius, ',', 
                                                       latitude - radius, ' ', longitude - radius, '))' ) ) ) AND 
        SQRT( POW( ABS( lat - latitude ), 2 ) + POW( ABS( lon - longitude ), 2 ) ) < radius;  
END //          
于 2010-06-30T08:01:29.760 に答える