cm_platon: я бы создал информационную "шину" для работы с такого рода информацией и записывал бы это в центральную базу "шины", чтобы потом из неё делать и сортировку и выгрузку, т.к. это бы Вам очень сильно упростило задачу с обменом данных в разнородных системах с конвертацией и преобразованием данных в одном месте.
samodum: " А если все сегменты неупорядочены? " - я имел ввиду: примыкающий отрезок пути к текущему с любой из сторон: присоединённые рёбра графа к текущему ребру.
"есть вариант C, когда нормаль не лежит ни на одном из отрезков, но при этом точка находится очень близко от пути":
samodum: т.е. суммируя (отрезок пути ограниченный двумя точками - ребро графа):
1. всегда смотрим текущий сегмент графа: текущее ребро и следующие рёбра за ним.
2. всегда опускаем нормаль от полученных координат на текущее и следующие рёбра графа
3. лимит глубины проверки: анализируем по возможной максимальной скорости и расстоянию
4. находим кратчайшую длину нормали, из всех нормалей, точки которых находятся на текущем или следующим за текущим (в графе) участках пути.
5. определяем минимальное путевое расстояние от последнего местоположения объекта до найденной кратчайшей точки нормали.
samodum: "как быть, если нормали к нескольким сегментам лежит на самих этих отрезках? Какой выбирать?" у которого ID больше, чем у предыдущего на 1-цу.
"Как быть, если нормали ко всем сегментам лежат за пределами отрезков? А какой-то сегмент надо всё равно выбрать."
Кратчайшее расстояние от конца точки нормали до последнего местоположения объекта и текущий (или следующий, по отношению к текущему) ID отрезка пути (ребра графа).
cm_platon: ну тут - согласен, если объём порции - в разумных пределах.
А откуда такие данные приходят, с JS-клиента (браузер) или какой-нить парсер на Node или phantom? (если ни секрет, конечно)
Почему вопрос такой: никогда не сталкивался с подобным, да еще и "динамично меняющимся"!
samodum: легко: связанные рёбра графа, вершинами которого являются эти точки. Нельзя перейти на любое ребро, если его ID не является текущим или следующим (по отношению к текущему). Текущее ребро - определяется последней позицией объекта на трэке.
inDeepCode: ))))) а кто сказал, что можно сравнивать продукт и технологии? Я привел линк на MongoDB, как на один из продуктов из подмножества технологий на noSQL, для примера, чтобы наглядно показать возможность выборки и сортировки данных, которую Вы отрицали. Угомонитесь уже!
inDeepCode: А кто сказал, что JSON только для front-end и где увидели тут Javascript? Вот так делается выборка на noSQL: metanit.com/nosql/mongodb/2.4.php
А судя по комменту - Вы не умеете не только делать выводы и конструктивно думать, но даже просто читать и писать)
samodum: При равном удалении объекта от соседних отрезков пути (длин нормалей: DE и DF), нужно посчитать расстояние от этих точек (E,F) к предыдущей отметке на отрезке пути - (для примера) точка C. Наименьшее расстояние из всех вариантов (CE меньше CF) - выбираем прямую a. Соответственно верной позицией будет точка E.
samodum: использовать B или C для отображения - выясняется по наличию точки отрезка пути на этой прямой. Т.е. в данном примере, точка конца отрезка нормали к прямой b не входит в отрезок пути. Выбираем C.
Если подобных C - несколько, тогда выбираем кратчайшую нормаль.
Остались еще вопросы?