低速バージョン(空間インデックスなし):
SELECT *
FROM mytable
WHERE MBRIntersects(mypolygon, LineString(Point(@X - @distance, @Y - @distance), Point(@X + @distance, @Y + @distance))
空間インデックスを利用するには、テーブルを非正規化して、各ポリゴンの頂点が独自のレコードに格納されるようにする必要があります。
次に、SPATIAL INDEX
を作成します 頂点の座標を含むフィールドで、次のクエリを発行します:
SELECT DISTINCT polygon_id
FROM vertices
WHERE MBRContains(vertex, LineString(Point(@X - @distance, @Y - @distance), Point(@X + @distance, @Y + @distance))
UTM
を保存すると、作業がはるかに簡単になります。 緯度と経度ではなく、データベース内の座標。