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

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

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

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

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

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

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

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

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

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

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


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


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