Расстояние между 2 ТОЧКАМИ в Postgis в srid 4326 в метрах

Это, вероятно, простой вопрос, но я не очень хорошо разбираюсь в PostGIS и не разбираюсь во всем этом до конца.

Обычно у меня есть таблица ( узлов ) со столбцом ТОЧКА ( точка ). Я создал индекс для этого столбца

create index nodes__points on nodes using gist (point)

Столбец был создан с помощью

select addgeometrycolumn('nodes', 'points', 'POINT', 4326, 2)

. Я использую srid 4326, потому что я добавляю данные в форме (широта, долгота). (т.е. система координат, в которой положение Дублина, Ирландия, широта = 53,353, долгота = -6,264 (которую я добавил с помощью GeomFromText ('POINT (-6,264 53,535)') )).

Для каждой точки я хочу найти все точки, которые находятся примерно в пределах 1 км прямоугольника с центром в этой точке (так selcet a.id, count (*) из узлов как a, узлов как b, где SOME_DISTANCE_FUNCTION_HERE (a .point, b.point, 1000) group by a.id; Это не обязательно должно быть точным, это просто грубая геристическая цифра.1 км bbox в порядке, 1 км круг в порядке. Это не обязательно должно быть ровно 1 км, просто такой порядок.

ST_Distance / ST_DWithin / и т. Д. все используют единицы измерения SRID, которые для 4326 / WGS64 - градусы (таким образом, 1 = 1 градус широты / долготы). Но я хочу использовать счетчики.

Я попробовал ST_distance_sphere и st_dwithin , которые могут использовать счетчики, но если я это сделаю, объяснение показывает, что индекс не используется.

Как я могу получить примерно то, что хочу, и использовать географический индекс?

ОБНОВЛЕНИЕ : Это в PostgreSQL 9.1 и PostGIS 2.0 svn build.

20
задан Soviut 19 February 2017 в 08:45
поделиться