Поиск кратчайшего расстояния на графе дорог. Протестируйте
- SS_Rebelious
- Гуру
- Сообщения: 1304
- Зарегистрирован: 24 фев 2009, 16:51
- Репутация: 99
- Ваше звание: GIS pro-fan
- Откуда: Lahti / Газ-ПУТИНбург
- Контактная информация:
Re: Поиск кратчайшего расстояния на графе дорог. Протестируй
То что в хелпе написано - понятно. Нужно просто дополнить информацией о том, как настраивать плагин.
Look for something long enough, and you will find it. Look for something without understanding, and it will find you...
"All paid jobs absorb and degrade the mind." Aristotle
If you take 1 step towards freedom it'll take 2 steps towards you!
"All paid jobs absorb and degrade the mind." Aristotle
If you take 1 step towards freedom it'll take 2 steps towards you!
-
- Гуру
- Сообщения: 2627
- Зарегистрирован: 29 мар 2007, 14:12
- Репутация: 34
- Откуда: Ukraine
Re: Поиск кратчайшего расстояния на графе дорог. Протестируй
Эй, какая заморозка? Тут 1.7.4 скоро будет с исправлениями. Ткни меня в коммит, попробую перенести. Или сам сделай. Это же багфикс, если правильно понимаю, а не новый функционал.stopa85 писал(а):Она исправлена в 1.8, в 1.7 этого нельзя делать из-за "заморзки" кода.
Re: Поиск кратчайшего расстояния на графе дорог. Протестируй
Причины бага две:
1. Сначала я использовал сбалансированные деревья с ключом QgsPoint. Однако они памяти едять в квадрате больше простых массивов (об этом я как-то раньше не задумывался, пока в своп не ушел
).
2. У SS_Rebelious - особенность работы QgsSpatialIndex, пример жуткой регрессии.
Поэтому я переписал почти весь плагин. Появился QgsGraph вместо std::map< std::map< ... > >, библиотека network_analysis вместо utils.h, Стратегии назначения свойств ребрам графа вместо зашитого кода. Топологическая толерантность реализована совсем по другому (и рассчитана только на исправление ошибок округления. Которые иногда в 1е-8, а иногда 1е-4)
Можешь считать меня лентяем, но нужен 49-й pull request. Сойдет за баг-фикс?
UPD: Не можно конечно смержить, а потом подрезать библиотеку network-analysis, но кода, свеженького там будет ого-го.
1. Сначала я использовал сбалансированные деревья с ключом QgsPoint. Однако они памяти едять в квадрате больше простых массивов (об этом я как-то раньше не задумывался, пока в своп не ушел

2. У SS_Rebelious - особенность работы QgsSpatialIndex, пример жуткой регрессии.
Поэтому я переписал почти весь плагин. Появился QgsGraph вместо std::map< std::map< ... > >, библиотека network_analysis вместо utils.h, Стратегии назначения свойств ребрам графа вместо зашитого кода. Топологическая толерантность реализована совсем по другому (и рассчитана только на исправление ошибок округления. Которые иногда в 1е-8, а иногда 1е-4)
Можешь считать меня лентяем, но нужен 49-й pull request. Сойдет за баг-фикс?
UPD: Не можно конечно смержить, а потом подрезать библиотеку network-analysis, но кода, свеженького там будет ого-го.
Re: Поиск кратчайшего расстояния на графе дорог. Протестируй
Я думаю это называется рефатроринг.Voltron писал(а): Это же багфикс, если правильно понимаю, а не новый функционал.
-
- Интересующийся
- Сообщения: 34
- Зарегистрирован: 19 дек 2011, 20:24
- Репутация: 0
- Откуда: Москва
Re: Поиск кратчайшего расстояния на графе дорог. Протестируй
Удалил сообщение...
Последний раз редактировалось Pifagoroff 27 дек 2011, 00:20, всего редактировалось 1 раз.
-
- Гуру
- Сообщения: 2627
- Зарегистрирован: 29 мар 2007, 14:12
- Репутация: 34
- Откуда: Ukraine
Re: Поиск кратчайшего расстояния на графе дорог. Протестируй
Ого. Как говорится, внушает. Завтра попробую засунуть в 1.7, о результатах отпишусь.stopa85 писал(а):Можешь считать меня лентяем, но нужен 49-й pull request. Сойдет за баг-фикс?
------------------------------8< поскипано ------------------------------
UPD: Не можно конечно смержить, а потом подрезать библиотеку network-analysis, но кода, свеженького там будет ого-го.
Рефакторинг-рефакторингом, но и баги же там исправлялись.stopa85 писал(а):Я думаю это называется рефатроринг.
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9129
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 748
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Поиск кратчайшего расстояния на графе дорог. Протестируй
Pifagoroff, мне кажется достаточно уже критиковать RoadGraph, ошибки в OSM - не его проблема.
пристегивайтесь, турбулентность прямо по курсу
Re: Поиск кратчайшего расстояния на графе дорог. Протестируй
Баги исправлялись везде.Voltron писал(а):Рефакторинг-рефакторингом, но и баги же там исправлялись.
А вот с этим
Без рефакторинга ничего не сделаешь.1. Сначала я использовал сбалансированные деревья с ключом QgsPoint. Однако они памяти едять в квадрате больше простых массивов (об этом я как-то раньше не задумывался, пока в своп не ушел).
2. У SS_Rebelious - особенность работы QgsSpatialIndex, пример жуткой регрессии.
-
- Гуру
- Сообщения: 2627
- Зарегистрирован: 29 мар 2007, 14:12
- Репутация: 34
- Откуда: Ukraine
Re: Поиск кратчайшего расстояния на графе дорог. Протестируй
К сожалению, в 1.7 исправления не войдут из-за значитеьных изменений в коде, это позиция релиз-менеджера.
Re: Поиск кратчайшего расстояния на графе дорог. Протестируй
Ну... как бы само-собой.К сожалению, в 1.7 исправления не войдут из-за значитеьных изменений в коде, это позиция релиз-менеджера.
- Aleksandr Dezhin
- Активный участник
- Сообщения: 244
- Зарегистрирован: 03 фев 2010, 10:47
- Репутация: 14
- Откуда: Москва
Re: Поиск кратчайшего расстояния на графе дорог. Протестируй
Возможно я что-то не понял, но судя по скриншоту модуль умеет считать корректное расстояние для слоев в WGS84, там показано число и время близкие к реальности. У меня же на слое в WGS84 получается какая-то петрушка - длина все равно в градусах похоже. Переключение СК проекта на меркатор конечно частинчно решает проблему, но может быть прикрутить то, что делали для вычисления длин на геоиде и глобусе?
- Aleksandr Dezhin
- Активный участник
- Сообщения: 244
- Зарегистрирован: 03 фев 2010, 10:47
- Репутация: 14
- Откуда: Москва
Re: Поиск кратчайшего расстояния на графе дорог. Протестируй
И еще мне кажется была бы полезна возможность указать "стоимость" прохождения ребра в явном виде, наряду со временем и дистанцией. Я сейчас занимаюсь штукой, которая на на основании osm-файла генерирует корректный роутинговый граф с запретами поворотов и прочими плюшками. Соответственно расширением я пользуюсь, чтобы посмотреть получающийся граф и поэкспериментировать с ним (потом он будет в pgrouting загружен). Расчет стоимости прохождения там получается довольно сложный, и не хочется его пересчитывать в условную скорость.
Re: Поиск кратчайшего расстояния на графе дорог. Протестируй
Перепроецирование на лету пробовали включать?Возможно я что-то не понял, но судя по скриншоту модуль умеет считать корректное расстояние для слоев в WGS84, там показано число и время близкие к реальности. ...
Сейчас я имею почти готовый surface-cost-analysis (скриншот). И я обдумываю как бы свой road graph и эту хрень объединить единым интерфейсом.И еще мне кажется была бы полезна возможность указать "стоимость" прохождения ребра в явном виде, наряду со временем и дистанцией. ...
Лучшее что мне приходит в голову это дать пользователю возможность задавать произвольное количество критериев на любой вкус. Крутятся такие варианты:
- "Использовать длину" - просто дистанция,
- "Использовать значение того поля" - предвычисленная стоимость без привязки к дистанции,
- "Длину умножить на значение этого поля" - аналог стоимости,
- "Длину разделить на значение этого поля" - аналог скорости.
Соответственно на растрах вместо "значения этого поля" будет "значение пикселя такого-то слоя".
Пропадет простота, но зато появиться универсальность.
...
Делов то осталось на печенюшку. Надо просто сесть и сделать... а пока могу предложить только консоль python'а
- Aleksandr Dezhin
- Активный участник
- Сообщения: 244
- Зарегистрирован: 03 фев 2010, 10:47
- Репутация: 14
- Откуда: Москва
Re: Поиск кратчайшего расстояния на графе дорог. Протестируй
Ага, заработалоstopa85 писал(а):Перепроецирование на лету пробовали включать?Возможно я что-то не понял, но судя по скриншоту модуль умеет считать корректное расстояние для слоев в WGS84, там показано число и время близкие к реальности. ...

- Aleksandr Dezhin
- Активный участник
- Сообщения: 244
- Зарегистрирован: 03 фев 2010, 10:47
- Репутация: 14
- Откуда: Москва
Re: Поиск кратчайшего расстояния на графе дорог. Протестируй
Еще вот какая проблема есть: экспортируем проложенный маршрут во временный слой.
1) В аттрибутике этого слоя нет ни длины, ни времени
2) Если удалить этот слой из проекта без сохранения, то при удалении qgis валиться с сегфолтом.
1) В аттрибутике этого слоя нет ни длины, ни времени
2) Если удалить этот слой из проекта без сохранения, то при удалении qgis валиться с сегфолтом.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя