Запрос PostGis
Добавлено: 31 май 2016, 09:44
Доброго времени суток, ребят!
Пытаюсь решить такую задачу и что то не нахожу в PostGis такой функции, может надо как то самому сложными запросами сделать. В общем так, есть таблица с точками. Для начало выбираются точки с большой вероятностью из тех, что есть, затем надо их объединить, если они находятся близко.
ПРИМЕР
Определяем вероятность пожара с процентом вероятности больше 80%.
Нам выдало 10 точек с данными: id, температура, высота пикселя (км), ширина пикселя (км), вероятность, мощность, геометрия(точка,4326), дата получения.
Далее, допустим выбираем самую интенсивную точку:
Получаем одну точку. Вот теперь нужно то, чего я не могу сделать и не соображу как. Надо по идеи очертить вокруг точки зону, допустим радиусом в 4 км. Если точки, у которых вероятность больше 80% попадают в эту зону, исключить их из запроса. После того как это сделано, из оставшихся точек (по идеи самая интенсивная точка тоже уже должна выйти из списка) проделываем ту же процедуру, итак пока не уберем все точки.
Цель задачи: Делаю систему оповещения о пожарах и часто так бывает, что горячие точки находятся на расстоянии пары минут и чтобы бедному пользователю не прилетало 6-7 оповещений с почти одинаковыми координатами надо убрать близкие точки из них оставить только одну.
Если есть идеи как то реализовать подскажите, пожалуйста! Может это и не PostGis'ом делать, а на php написать, просто выбирать все точки с вероятностью более 80% и дальше уже какими то формулами вычислять это. Буду приветствовать все варианты решения такой задачи, но желательно сделать это на уровне БД.
Пытаюсь решить такую задачу и что то не нахожу в PostGis такой функции, может надо как то самому сложными запросами сделать. В общем так, есть таблица с точками. Для начало выбираются точки с большой вероятностью из тех, что есть, затем надо их объединить, если они находятся близко.
ПРИМЕР
Определяем вероятность пожара с процентом вероятности больше 80%.
Код: Выделить всё
SELECT * FROM hotspots where probability >80;
Далее, допустим выбираем самую интенсивную точку:
Код: Выделить всё
SELECT * FROM hotspots WHERE power=(SELECT MAX(power) FROM hotspots where probability >80);
Цель задачи: Делаю систему оповещения о пожарах и часто так бывает, что горячие точки находятся на расстоянии пары минут и чтобы бедному пользователю не прилетало 6-7 оповещений с почти одинаковыми координатами надо убрать близкие точки из них оставить только одну.
Если есть идеи как то реализовать подскажите, пожалуйста! Может это и не PostGis'ом делать, а на php написать, просто выбирать все точки с вероятностью более 80% и дальше уже какими то формулами вычислять это. Буду приветствовать все варианты решения такой задачи, но желательно сделать это на уровне БД.