Pomalá verze (bez prostorových indexů):
SELECT *
FROM mytable
WHERE MBRIntersects(mypolygon, LineString(Point(@X - @distance, @Y - @distance), Point(@X + @distance, @Y + @distance))
Chcete-li využít prostorové indexy, musíte denormalizovat svou tabulku tak, aby každý vrchol polygonu byl uložen ve vlastním záznamu.
Poté vytvořte SPATIAL INDEX
na pole, které obsahuje souřadnice vrcholů a zadejte tento dotaz:
SELECT DISTINCT polygon_id
FROM vertices
WHERE MBRContains(vertex, LineString(Point(@X - @distance, @Y - @distance), Point(@X + @distance, @Y + @distance))
Věci budou mnohem snazší, pokud uložíte UTM
souřadnice ve vaší databázi, nikoli zeměpisná šířka a délka.