У меня есть 2750 городских центров в Бельгии. Мне нужно знать расстояния между каждыми 2 центрами города. Но это приводит к матрице 57 МБ, просто чтобы запомнить эти расстояния (даже маршруты), так что жутко масштабируется.Как GraphHopper обрабатывает точку на пересечениях шоссе?
Вместо этого, я рассматриваю использование пересечений Highway в качестве концентраторов. В основном, каждый город знает, что это близлежащие города, и это близлежащие хабы (= пересечение шоссе). Все хабы знают расстояние друг к другу.
Таким образом, расстояние от 1 города A до другого не-близлежащего города B, может быть рассчитано на расстоянии cityA -> hubX -> hubY -> cityB
. Поскольку в большинстве городов обычно есть 3 узла, мне может потребоваться рассмотреть все 9 комбинаций и взять кратчайший. Но в любом случае он должен масштабировать лучшую память.
Теперь проблема: Могу ли я описать пересечение шоссе как единую точку? Подумайте об этом: шоссе состоит из двух дорог (по одному в обоих направлениях), поэтому центр пересечения дорог имеет 4 дороги (даже не считая оружия).
Во-первых, почему идея не будет работать в моем конкретном случае (хотя они являются хорошим советом в противном случае): выход на диск слишком медленный (включая SSD). Расчет нескольких мс на расчёт слишком медленный во время решения (не во время предвычисления). Я пробовал 32-разрядные номера (поплавки также 32-разрядные), а 20-мегапиксельная локация использует почти 2 ГБ оперативной памяти: '(20k) ² * 4' просто таков. Я хочу увеличить до 100 тыс. Мест. –
Иерархия сокращений может не сработать в моем случае, поскольку узловые узлы не являются точками в моем наборе данных: точки - это центры городов, узлы узлов - связанные с шоссе. Так что листья ... –
...вычисление маршрутов и поиск последних общих узлов. Мне очень нравится эта идея :) Это просто не так просто реализовать. Но это избавляет меня от того, что я выбираю вручную: –