Operator odległości <->
działa dobrze między punktami i wielokątami.
Możesz zapytać w ten sposób:
SELECT b.*
FROM osm_buildings AS b
ORDER BY b.polygon <-> 'POINT(3.14 2.78)'::geometry
LIMIT 10;
Dzięki temu 10 budynków znajdujących się najbliżej tego punktu.
To zapytanie może używać indeksu na polygon
kolumna.