Это, наверное, простой вопрос, но я не очень хорошо разбираюсь в PostGIS и не полностью понимаю все это.
В принципе у меня есть таблица (nodes) с столбцом POINT (point). Я создал индекс в этом столбце
create index nodes__points on nodes using gist (point)
Столбец был создан с помощью
select addgeometrycolumn('nodes', 'points', 'POINT', 4326, 2)
Я использую srid 4326, потому что добавляю данные, которые в форме (широта, долгота). (т.е. система координат, в которой позиция Дублина, Ирландия, равна lat = 53.353 lon = -6.264 (которую я добавил с помощью GeomFromText('POINT(-6.264 53.535)'))).
Для каждой точки я хочу найти все точки, расположенные примерно в пределах 1-километрового окна, расположенного в центре этой точки (так что selcet a.id, count(*) from nodes as a, nodes as b where SOME_DISTANCE_FUNCTION_HERE(a.point, b.point, 1000) group by a.id;. Это не должно быть точным, всего лишь грубой фигурой в стиле hueristic., кружок в 1 км в порядке. Он не должен быть точно в 1 км, только на порядок.
ST_Distance/ST_DWithin/etc. все используют единицы SRID, что для 4326/WGS64 - это градусы (так 1 = 1 градус долготы/долготы). Но я хочу использовать счетчики.
Я попробовал ST_distance_sphere и ST_DWithin, которые могут использовать счетчики, но если я это сделаю, explain показывает, что индекс не используется.
Как я могу получить примерно то, что хочу, и использовать географический индекс?
UPDATE. Это на PostgreSQL 9.1 и PostGIS 2.0 svn build.