|
Как группировать гео-координаты?
|
|||
---|---|---|---|
#18+
Есть таблица, с полем типа POINT (или GEOMETRY) содержащем географические координаты точек. Нужно вывести все точки, сгруппировав при этом близлежащие точки (например, расстояние между которыми не превышает 10 метров) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2019, 13:32 |
|
Как группировать гео-координаты?
|
|||
---|---|---|---|
#18+
Неопределённое задание. АБ - 8 метров, группа. БВ - 8 метров, группа. АВ - 16 метров, не группа... А что должно получиться? что - группа по всему массиву из 3 точек? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2019, 15:13 |
|
Как группировать гео-координаты?
|
|||
---|---|---|---|
#18+
да, в этом случае это все одна группа. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2019, 15:22 |
|
Как группировать гео-координаты?
|
|||
---|---|---|---|
#18+
На практике, мои географические объекты обычно находятся островками, по несколько точек в одном месте, а расстояния между островками значительно превышают расстояния внутри островков. Поэтому мне надо выявить эти островки группировкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2019, 15:32 |
|
Как группировать гео-координаты?
|
|||
---|---|---|---|
#18+
Например так это выглядит графически. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2019, 15:56 |
|
Как группировать гео-координаты?
|
|||
---|---|---|---|
#18+
Лебедкинэто все одна группа.Сфига бы? если в этой группе есть пары точек, не удовлетворяющие условию? ЛебедкинНа практике, мои географические объекты обычно находятся островками, по несколько точек в одном месте, а расстояния между островками значительно превышают расстояния внутри островков. Поэтому мне надо выявить эти островки группировкой.Это называется "кластеризация". Термин, вполне пригодный для поиска. См. напр. https://mapserver.org/mapfile/cluster.html ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2019, 16:00 |
|
Как группировать гео-координаты?
|
|||
---|---|---|---|
#18+
А в простейшем виде тут даже геометрия не нужна. Просто группировать по округлённым координатам, округляя до значения как минимум вдвое больше размера кластера, но вдвое меньше расстояния между кластерами (оптимум - ср. геометрическое между макс. диаметром кластера и мин. расстоянием между кластерами). ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2019, 16:02 |
|
Как группировать гео-координаты?
|
|||
---|---|---|---|
#18+
А как координаты округлять? есть какая то встроенная функция? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2019, 16:13 |
|
Как группировать гео-координаты?
|
|||
---|---|---|---|
#18+
Координата - это обычное число. Какие могут быть проблемы с её округлением? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2019, 16:16 |
|
Как группировать гео-координаты?
|
|||
---|---|---|---|
#18+
AkinaЛебедкинэто все одна группа.Сфига бы? если в этой группе есть пары точек, не удовлетворяющие условию? Это задача логистики. Курьер между группами точек едет на машине, а близлежащие точки он может пройти пешком, оставив машину на стоянке. 10 метров - это (условно) то расстояние, которое он максимально готов пройти от точки до точки. Но если расстояние между крайними точками превышает этот порог, но между ними есть еще одна точка, то курьер, обходя их все равно идет пешком. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2019, 16:25 |
|
Как группировать гео-координаты?
|
|||
---|---|---|---|
#18+
AkinaКоордината - это обычное число. Какие могут быть проблемы с её округлением? Координата - это 2 числа Х, Y (или долгота и широта). Отдельно каждое число округлять, а потом создавать из них новую координату. так? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2019, 16:28 |
|
Как группировать гео-координаты?
|
|||
---|---|---|---|
#18+
Лебедкин, Просто группировать по округленным координатам. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2019, 16:42 |
|
Как группировать гео-координаты?
|
|||
---|---|---|---|
#18+
ЛебедкинЭто задача логистики. Курьер между группами точек едет на машине, а близлежащие точки он может пройти пешком, оставив машину на стоянке. 10 метров - это (условно) то расстояние, которое он максимально готов пройти от точки до точки. Но если расстояние между крайними точками превышает этот порог, но между ними есть еще одна точка, то курьер, обходя их все равно идет пешком. Приехали... ну до чего ж все любят напустить туману столько, что за ним ни фига не видать, а факт наличия важных для задачи сведений воспринимают как хороший повод поиграть в партизана... Это уже задача обхода графа, а не кластеризация. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2019, 20:07 |
|
Как группировать гео-координаты?
|
|||
---|---|---|---|
#18+
Сначала надо отделить места, которые объезжает на машине от тех которые пешком обходит, а уже потом по "крупным" точкам можно обход графа (прокладку маршрута) делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2019, 22:06 |
|
Как группировать гео-координаты?
|
|||
---|---|---|---|
#18+
ЛебедкинНапример так это выглядит графически. Попробуйте координаты точек привести к адресам ближайших домов. Тогда сгруппировать по адресу будет легко. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2019, 23:24 |
|
Как группировать гео-координаты?
|
|||
---|---|---|---|
#18+
miksoftПопробуйте координаты точек привести к адресам ближайших домов. Тогда сгруппировать по адресу будет легко. Может так получится, что около группы точек несколько зданий, тогда непонятно к какому именно дому их привязывать. Если к ближайшему, то точки из одной группы могут оказаться привязанными к разным домам. Я теперь думаю, просто округлять надо координаты, как мне тут подсказали. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2019, 08:23 |
|
Как группировать гео-координаты?
|
|||
---|---|---|---|
#18+
В округлении мне только не нравится возможность возникновения такой ситуювины: Черным нарисовал узлы округления, т.е. точки с круглыми координатами. Красным - точки которые мы пытаемся группировать. В данном случае красные точки округлятся до разных узлов и попадут в разные группы. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2019, 08:40 |
|
Как группировать гео-координаты?
|
|||
---|---|---|---|
#18+
Лебедкин, Попробуйте округлять в одну сторону. Вниз, например. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2019, 08:56 |
|
Как группировать гео-координаты?
|
|||
---|---|---|---|
#18+
vkleЛебедкин, Попробуйте округлять в одну сторону. Вниз, например.не поможет. Для контрпримера сдвиньте на картинке сетку черных точек на полшага по горизонтали и по вертикали. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2019, 09:08 |
|
Как группировать гео-координаты?
|
|||
---|---|---|---|
#18+
ЛебедкинmiksoftПопробуйте координаты точек привести к адресам ближайших домов. Тогда сгруппировать по адресу будет легко. Может так получится, что около группы точек несколько зданий, тогда непонятно к какому именно дому их привязывать. Если к ближайшему, то точки из одной группы могут оказаться привязанными к разным домам.вот и правильно, что к разным. Потому что в реальных условиях на местности подъезд к этим домам может осуществляться даже с разных улиц. Это уже надо брать граф дорог и сливать на нем близкие узлы. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2019, 09:11 |
|
Как группировать гео-координаты?
|
|||
---|---|---|---|
#18+
miksoftvkleЛебедкин, Попробуйте округлять в одну сторону. Вниз, например.не поможет. Для контрпримера сдвиньте на картинке сетку черных точек на полшага по горизонтали и по вертикали. Если округлять в одну сторону, тогда проблема будет а такой ситуации. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2019, 09:13 |
|
Как группировать гео-координаты?
|
|||
---|---|---|---|
#18+
miksoftвот и правильно, что к разным. Потому что в реальных условиях на местности подъезд к этим домам может осуществляться даже с разных улиц. Это уже надо брать граф дорог и сливать на нем близкие узлы. Нет, не правильно! Проблему проезда по дорогам сейчас в расчет не берем. Задача только в корректной группировке точек на произвольной системе координат. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2019, 09:19 |
|
Как группировать гео-координаты?
|
|||
---|---|---|---|
#18+
Точки - узлы. Пути между ними - рёбра. Расстояние (или время) - стоимость. Задача - поиск пути обхода графа минимальной стоимости. Решай. Если всё же прёт кластеризовать... Ради любопытства посмотри, как выглядит распределение расстояний от одной наудачу взятой точки до остальных. Получишь как минимум бимодальное, а скорее мультимодальное распределение. Так вот - все точки в первой моде и есть точки кластера. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2019, 09:40 |
|
Как группировать гео-координаты?
|
|||
---|---|---|---|
#18+
Лебедкин10 метров - это (условно) то расстояние, которое он максимально готов пройти от точки до точки.Если есть пороговое расстояние, то прямо от него и можно плясать. Берёте случайную точку, желательно крайнюю, например, самую северную. Находите все точки в радиусе 10 метров. От них - ещё точки в радиусе 10 метров. Когда новые точки закончатся, объявляете найденное множество группой, исключает его из исходного множества. И повторяете сначала до полного исчерпания исходного множества. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2019, 09:44 |
|
Как группировать гео-координаты?
|
|||
---|---|---|---|
#18+
AkinaЕсли всё же прёт кластеризовать... Ради любопытства посмотри, как выглядит распределение расстояний от одной наудачу взятой точки до остальных. Получишь как минимум бимодальное, а скорее мультимодальное распределение. Так вот - все точки в первой моде и есть точки кластера. Ой!! бимодальное... мульитимодальное…. - я таких слов пугаюсь :) мне нужно сначала матчасть подучить. miksoftЕсли есть пороговое расстояние, то прямо от него и можно плясать. Берёте случайную точку, желательно крайнюю, например, самую северную. Находите все точки в радиусе 10 метров. От них - ещё точки в радиусе 10 метров. Когда новые точки закончатся, объявляете найденное множество группой, исключает его из исходного множества. И повторяете сначала до полного исчерпания исходного множества. А вот этот алгоритм интуитивно понятен, пожалуй подойдет, попробуем его реализовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2019, 09:58 |
|
|
start [/forum/topic.php?fid=47&fpage=32&tid=1829008]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 10ms |
total: | 152ms |
0 / 0 |