Гость
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как группировать гео-координаты? / 25 сообщений из 29, страница 1 из 2
21.08.2019, 13:32
    #39852102
Лебедкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как группировать гео-координаты?
Есть таблица, с полем типа POINT (или GEOMETRY) содержащем географические координаты точек.
Нужно вывести все точки, сгруппировав при этом близлежащие точки (например, расстояние между которыми не превышает 10 метров)
...
Рейтинг: 0 / 0
21.08.2019, 15:13
    #39852161
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как группировать гео-координаты?
Неопределённое задание.

АБ - 8 метров, группа.
БВ - 8 метров, группа.
АВ - 16 метров, не группа...

А что должно получиться? что - группа по всему массиву из 3 точек?
...
Рейтинг: 0 / 0
21.08.2019, 15:22
    #39852171
Лебедкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как группировать гео-координаты?
да, в этом случае это все одна группа.
...
Рейтинг: 0 / 0
21.08.2019, 15:32
    #39852180
Лебедкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как группировать гео-координаты?
На практике, мои географические объекты обычно находятся островками, по несколько точек в одном месте, а расстояния между островками значительно превышают расстояния внутри островков. Поэтому мне надо выявить эти островки группировкой.
...
Рейтинг: 0 / 0
21.08.2019, 15:56
    #39852192
Лебедкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как группировать гео-координаты?
Например так это выглядит графически.
...
Рейтинг: 0 / 0
21.08.2019, 16:00
    #39852195
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как группировать гео-координаты?
Лебедкинэто все одна группа.Сфига бы? если в этой группе есть пары точек, не удовлетворяющие условию?
ЛебедкинНа практике, мои географические объекты обычно находятся островками, по несколько точек в одном месте, а расстояния между островками значительно превышают расстояния внутри островков. Поэтому мне надо выявить эти островки группировкой.Это называется "кластеризация". Термин, вполне пригодный для поиска.
См. напр. https://mapserver.org/mapfile/cluster.html
...
Рейтинг: 0 / 0
21.08.2019, 16:02
    #39852197
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как группировать гео-координаты?
А в простейшем виде тут даже геометрия не нужна. Просто группировать по округлённым координатам, округляя до значения как минимум вдвое больше размера кластера, но вдвое меньше расстояния между кластерами (оптимум - ср. геометрическое между макс. диаметром кластера и мин. расстоянием между кластерами).
...
Рейтинг: 0 / 0
21.08.2019, 16:13
    #39852204
Лебедкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как группировать гео-координаты?
А как координаты округлять?
есть какая то встроенная функция?
...
Рейтинг: 0 / 0
21.08.2019, 16:16
    #39852209
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как группировать гео-координаты?
Координата - это обычное число. Какие могут быть проблемы с её округлением?
...
Рейтинг: 0 / 0
21.08.2019, 16:25
    #39852220
Лебедкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как группировать гео-координаты?
AkinaЛебедкинэто все одна группа.Сфига бы? если в этой группе есть пары точек, не удовлетворяющие условию?

Это задача логистики. Курьер между группами точек едет на машине, а близлежащие точки он может пройти пешком, оставив машину на стоянке. 10 метров - это (условно) то расстояние, которое он максимально готов пройти от точки до точки. Но если расстояние между крайними точками превышает этот порог, но между ними есть еще одна точка, то курьер, обходя их все равно идет пешком.
...
Рейтинг: 0 / 0
21.08.2019, 16:28
    #39852223
Лебедкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как группировать гео-координаты?
AkinaКоордината - это обычное число. Какие могут быть проблемы с её округлением?
Координата - это 2 числа Х, Y (или долгота и широта). Отдельно каждое число округлять, а потом создавать из них новую координату. так?
...
Рейтинг: 0 / 0
21.08.2019, 16:42
    #39852241
Агнец за бортом
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как группировать гео-координаты?
Лебедкин,

Просто группировать по округленным координатам.
...
Рейтинг: 0 / 0
21.08.2019, 20:07
    #39852355
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как группировать гео-координаты?
ЛебедкинЭто задача логистики. Курьер между группами точек едет на машине, а близлежащие точки он может пройти пешком, оставив машину на стоянке. 10 метров - это (условно) то расстояние, которое он максимально готов пройти от точки до точки. Но если расстояние между крайними точками превышает этот порог, но между ними есть еще одна точка, то курьер, обходя их все равно идет пешком.
Приехали... ну до чего ж все любят напустить туману столько, что за ним ни фига не видать, а факт наличия важных для задачи сведений воспринимают как хороший повод поиграть в партизана...

Это уже задача обхода графа, а не кластеризация.
...
Рейтинг: 0 / 0
21.08.2019, 22:06
    #39852396
Лебедкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как группировать гео-координаты?
Сначала надо отделить места, которые объезжает на машине от тех которые пешком обходит, а уже потом по "крупным" точкам можно обход графа (прокладку маршрута) делать.
...
Рейтинг: 0 / 0
21.08.2019, 23:24
    #39852420
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как группировать гео-координаты?
ЛебедкинНапример так это выглядит графически. Попробуйте координаты точек привести к адресам ближайших домов. Тогда сгруппировать по адресу будет легко.
...
Рейтинг: 0 / 0
22.08.2019, 08:23
    #39852481
Лебедкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как группировать гео-координаты?
miksoftПопробуйте координаты точек привести к адресам ближайших домов. Тогда сгруппировать по адресу будет легко.
Может так получится, что около группы точек несколько зданий, тогда непонятно к какому именно дому их привязывать. Если к ближайшему, то точки из одной группы могут оказаться привязанными к разным домам.
Я теперь думаю, просто округлять надо координаты, как мне тут подсказали.
...
Рейтинг: 0 / 0
22.08.2019, 08:40
    #39852484
Лебедкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как группировать гео-координаты?
В округлении мне только не нравится возможность возникновения такой ситуювины:

Черным нарисовал узлы округления, т.е. точки с круглыми координатами. Красным - точки которые мы пытаемся группировать. В данном случае красные точки округлятся до разных узлов и попадут в разные группы.
...
Рейтинг: 0 / 0
22.08.2019, 08:56
    #39852491
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как группировать гео-координаты?
Лебедкин,

Попробуйте округлять в одну сторону. Вниз, например.
...
Рейтинг: 0 / 0
22.08.2019, 09:08
    #39852496
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как группировать гео-координаты?
vkleЛебедкин,

Попробуйте округлять в одну сторону. Вниз, например.не поможет.
Для контрпримера сдвиньте на картинке сетку черных точек на полшага по горизонтали и по вертикали.
...
Рейтинг: 0 / 0
22.08.2019, 09:11
    #39852498
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как группировать гео-координаты?
ЛебедкинmiksoftПопробуйте координаты точек привести к адресам ближайших домов. Тогда сгруппировать по адресу будет легко.
Может так получится, что около группы точек несколько зданий, тогда непонятно к какому именно дому их привязывать. Если к ближайшему, то точки из одной группы могут оказаться привязанными к разным домам.вот и правильно, что к разным.
Потому что в реальных условиях на местности подъезд к этим домам может осуществляться даже с разных улиц.
Это уже надо брать граф дорог и сливать на нем близкие узлы.
...
Рейтинг: 0 / 0
22.08.2019, 09:13
    #39852501
Лебедкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как группировать гео-координаты?
miksoftvkleЛебедкин,

Попробуйте округлять в одну сторону. Вниз, например.не поможет.
Для контрпримера сдвиньте на картинке сетку черных точек на полшага по горизонтали и по вертикали.
Если округлять в одну сторону, тогда проблема будет а такой ситуации.
...
Рейтинг: 0 / 0
22.08.2019, 09:19
    #39852508
Лебедкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как группировать гео-координаты?
miksoftвот и правильно, что к разным.
Потому что в реальных условиях на местности подъезд к этим домам может осуществляться даже с разных улиц.
Это уже надо брать граф дорог и сливать на нем близкие узлы.
Нет, не правильно! Проблему проезда по дорогам сейчас в расчет не берем. Задача только в корректной группировке точек на произвольной системе координат.
...
Рейтинг: 0 / 0
22.08.2019, 09:40
    #39852519
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как группировать гео-координаты?
Точки - узлы. Пути между ними - рёбра. Расстояние (или время) - стоимость. Задача - поиск пути обхода графа минимальной стоимости. Решай.

Если всё же прёт кластеризовать... Ради любопытства посмотри, как выглядит распределение расстояний от одной наудачу взятой точки до остальных. Получишь как минимум бимодальное, а скорее мультимодальное распределение. Так вот - все точки в первой моде и есть точки кластера.
...
Рейтинг: 0 / 0
22.08.2019, 09:44
    #39852521
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как группировать гео-координаты?
Лебедкин10 метров - это (условно) то расстояние, которое он максимально готов пройти от точки до точки.Если есть пороговое расстояние, то прямо от него и можно плясать.
Берёте случайную точку, желательно крайнюю, например, самую северную. Находите все точки в радиусе 10 метров. От них - ещё точки в радиусе 10 метров. Когда новые точки закончатся, объявляете найденное множество группой, исключает его из исходного множества. И повторяете сначала до полного исчерпания исходного множества.
...
Рейтинг: 0 / 0
22.08.2019, 09:58
    #39852528
Лебедкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как группировать гео-координаты?
AkinaЕсли всё же прёт кластеризовать... Ради любопытства посмотри, как выглядит распределение расстояний от одной наудачу взятой точки до остальных. Получишь как минимум бимодальное, а скорее мультимодальное распределение. Так вот - все точки в первой моде и есть точки кластера.
Ой!! бимодальное... мульитимодальное…. - я таких слов пугаюсь :) мне нужно сначала матчасть подучить.


miksoftЕсли есть пороговое расстояние, то прямо от него и можно плясать.
Берёте случайную точку, желательно крайнюю, например, самую северную. Находите все точки в радиусе 10 метров. От них - ещё точки в радиусе 10 метров. Когда новые точки закончатся, объявляете найденное множество группой, исключает его из исходного множества. И повторяете сначала до полного исчерпания исходного множества.
А вот этот алгоритм интуитивно понятен, пожалуй подойдет, попробуем его реализовать.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как группировать гео-координаты? / 25 сообщений из 29, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]