Найти центр группы координат в PostgreSQL - PullRequest
0 голосов
/ 09 августа 2010

У меня есть база данных отелей Postgres 8.3, каждая из которых имеет связанную долготу и широту, сохраненную как точку, и курорт, сохраненный как идентификатор курорта. Я бы хотел найти центральную или среднюю точку курорта.

Я могу сделать это с помощью простого запроса:

select 
avg(lat_long[0]) as latitude, 
avg(lat_long[1]) as longitude,
resort_id
from accomm 
group by resort_id

Однако в базе данных есть некоторые неверные данные, например, возможно, есть американский отель, зарегистрированный на европейском курорте. Очевидно, что при простом усреднении эти данные будут означать, что результаты неточны.

Как я могу рассчитать среднее квартальное значение или подобный метод для фильтрации этих неверных данных? В настоящее время в моей таблице около 30 000 строк.

Ответы [ 2 ]

1 голос
/ 09 августа 2010

Все ли ваши отели в Соединенных Штатах? Мне кажется, что было бы легче создать ограничивающий прямоугольник и просто игнорировать любые комбинации широты и лонг, которые находятся за пределами этого диапазона.

Самый большой недостаток - это то, что он не очень точный. По сути, вы можете исключить местоположения в Европе, но что-то на границе США и Канады, вероятно, не будет исключено ...

0 голосов
/ 09 августа 2010

Я бы порекомендовал разбить вашу карту на сетку квадратов разумного размера (как Google делает на картах Google, вам нужен уровень масштабирования около 7-9, я думаю) и рассчитать положение сетки для каждой точки (вы получите простое целое число X и Y позиция). Вы можете получить количество очков в каждом квадрате и игнорировать квадраты с 1-2 очками. Или вы можете использовать центр квадрата с большинством точек в качестве тестового центра и рассчитать расстояние до каждой точки в группе (это будет очень быстро в координатах XY сетки), игнорируя точки, которые находятся за пределами разумного расстояния от нее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...