Size: a a a

2021 March 18

В

Вячеслав in PostGIS
fr1
как ещё один вариант разбей путь на 100м отрезки и ищи ближайшую точку для другого, если она ближе чем определённая длинна, то считаем что отрезки похожи. хотя могут быть казусы с реками по середине
спасибо за идею, но,  наверное, время выполнения вырастет в разы, а запрос в реальном времени выполняется
источник

В

Вячеслав in PostGIS
просто думаю, мб что-то не так именно в моей логике рассчета, есть какие-либо нюансы постгиса
источник

f

fr1 in PostGIS
если по одной дороге, то можно просто получить пересечение
источник

f

fr1 in PostGIS
но вообще если время критично, можно стоит анализировать просто точки загрузки/разгрузки, если рядом проходит маршрут, то брать его. ведь всё равно как он шёл к этой точке рядом или нет
источник

В

Вячеслав in PostGIS
fr1
если по одной дороге, то можно просто получить пересечение
я сначала пытался просто пересечение получить, получается хрень, т.к линии не всегда точно нарисованы
источник

f

fr1 in PostGIS
это как так, откуда тогда линии?
источник

В

Вячеслав in PostGIS
LINESTRING(0 0, 1 1, 2 1, 2 2)
вот такой формат
источник

AB

Anton [az09@osm] Bel... in PostGIS
fr1
но вообще если время критично, можно стоит анализировать просто точки загрузки/разгрузки, если рядом проходит маршрут, то брать его. ведь всё равно как он шёл к этой точке рядом или нет
а теперь представь, что сравнить нужно трамваи и автобусы ;-р
у них остановки будут в разных местах, а маршруты почти совпадать. ну по крайней мере в Магнитогорске таких полно
источник

В

Вячеслав in PostGIS
да, это не вариант, заказчику нужно именно процент насколько 2 линии похожи друг на друга
источник

f

fr1 in PostGIS
Anton [az09@osm] Belichkov
а теперь представь, что сравнить нужно трамваи и автобусы ;-р
у них остановки будут в разных местах, а маршруты почти совпадать. ну по крайней мере в Магнитогорске таких полно
для них как раз легко, нужна близость остановок, а как он едет вообще побоку
источник

f

fr1 in PostGIS
Вячеслав
LINESTRING(0 0, 1 1, 2 1, 2 2)
вот такой формат
данные откуда, причём тут формат.
источник

f

fr1 in PostGIS
Вячеслав
да, это не вариант, заказчику нужно именно процент насколько 2 линии похожи друг на друга
можно сравнивать ,
проехать на севере 100 метров
проехать на сз 47 метров и тд
и сверять насколько совпадают направления
источник

В

Вячеслав in PostGIS
fr1
данные откуда, причём тут формат.
линии заказчики сами рисуют в JS редакторе на базе leaflet
источник

f

fr1 in PostGIS
в rtklib так сравнивают треки, из центра просто звезда, показывающая, насколько они отличаются в расстояниях
источник

f

fr1 in PostGIS
Вячеслав
линии заказчики сами рисуют в JS редакторе на базе leaflet
это отстой :(
источник

В

Вячеслав in PostGIS
fr1
это отстой :(
да)
источник

f

fr1 in PostGIS
типа такого
источник

f

fr1 in PostGIS
Вячеслав
да)
но тогда какое тут реалтайм, если он маршрут рисует 10 минут
источник

f

fr1 in PostGIS
а с буферами надо не их пересечение, а сколько буфер одной дороги накрывает другую дорогу. т.е. надо из второй дороги вырезать этот буфер и посмотреть сколько от дороги осталось
источник

Аa

Александр Петров aka... in PostGIS
Вячеслав
Есть маршрут А и маршрут Б, пытаюсь определить процент, насколько процентов один маршрут дублирует другой, маршруты хранятся в бд в поле типа geography, в виде линии, было принято дублированность как отношения площади пересечения буферов линий двух маршрутов к длине одного из них.
Полученный результат не устраивает, т.к сравнивал длины двух похожих маршрутов, по длинам у них совпадение на 85%, а по моей формуле получается 98, да и даже визуально видно, что похожи они менее чем на 98%
st_buffer(route_line, 25) as route_line_buffer
(st_area(ST_Intersection((select route_line_buffer
                                      from unprepared_lines where  id = 565
                                      order by route_group_length desc
                                      limit 1), route_line_buffer)) / st_area((select route_line_buffer
                                      from unprepared_lines where  id = 565
                                      order by route_group_length desc
                                      limit 1)) * 100)::integer as duplication_percent,
Проверьте отношение площади пересечения к площади каждого буфера. Потом выбирайте наименьшее значение из двух
источник