Я не могу найти много документации по этому вопросу. Каков самый простой способ создать базу данных/таблицу для postgres, поддерживающих такой запрос, как эта таблица SELECT * FROM WHERE distance (POINT (0,0), table.location) < = 1000m; Где POINT (0,0) и table.location должна быть пара широты/долготы, а 1000 м - 1000 метров. И как мне следует индексировать эту таблицу? Спасибо.postgres пространственное индексирование
3
A
ответ
5
поддержка PostgreSQL индексы на выражениях, а также в частных индексов, вероятно, можно смешать их.
Это просто случайное предположение, я не знаю, если это работает, но дать ему попробовать:
CREATE INDEX foobar ON table (distance(POINT(0,0), location))
WHERE distance(POINT(0,0), location) <= 1000;
http://www.postgresql.org/docs/9.0/interactive/indexes-expressional.html
http://www.postgresql.org/docs/9.0/interactive/indexes-partial.html
2
Вы изучали Postgis и contrib/earthdistance?
http://www.postgresql.org/docs/9.0/interactive/earthdistance.html
Имейте в виду, что Земля не является плоской , В общем случае такие контурные расчеты не будут хорошо работать. – skalee