Страница 1 из 1
Поиск минимальных путей на карте дорог
Добавлено: 25 дек 2011, 00:21
dreamer2057
Здравствуйте!
Расположил на карте mapinfo точками столицы штатов США, хочу сделать дорогу между ними, чтобы в последствии из visual studio по средствам C# искать минимальный путь между двумя столицами, к примеру.
Вот вопрос возник, когда стал рисовать дороги линиями и полилиниями, а то ли я делаю. Не могу просто себе представить в виде чего нарисовать дорогу и как это сделать, чтобы потом можно было применить, допустим, алгоритм Дейкстры.
Могу на данный момент только так себе дорогу представить: полилинии соединяющие каждую точку между собой в виде дороги, причем 1 полилиния обязательно из одной точки в другую, объяснить сложно, нарисую :
А должно быть вот так я думаю:
Подскажите как правильно реализовать дороги с возможностью дальнейшего расчета минимальных путей по ним. Совсем новичек в mapinfo.
СПАСИБО заранее.
Re: Поиск минимальных путей на карте дорог
Добавлено: 25 дек 2011, 02:45
Boris
В обычных ГИС дороги рисуют полилиниями - 1 дорога (полотно, если дорога односторонняя; бывает вариант все дороги двумя линиями, односторонние - одной). Для целей поиска кратчайших расстояний, дороги должны быть преобразованы в направленный граф.
В мапинфо такой алгоритм отсутствует - есть только его обрубок - расстановка точек в местах пересечения полилиний. Делает какой-то утилитой.
В любом алгоритме предварительной обработки - результат один: каждый сегмент дороги (кусок от одного перекрестка до другого или кусок однородной дороги) должен стать отдельным объектом полилинией - с направлением и временем, затрачиваемым на его прохождение.
Re: Поиск минимальных путей на карте дорог
Добавлено: 25 дек 2011, 21:57
dreamer2057
Спасибо. Решил сделать как на втором рисунке. Поместил на карту перекрестки (точки - с одним свойством id - это будет номер
вершины графа потом), дороги (полилинии и линии-
Свойства: Две колонки говорят о том
из какого перекрестка
в какой идет дорога, то есть из какой вершины нашего будущего графа в какую и Колонка длина, то есть
длина ребра графа в будущем).
Теперь вопрос как получить эти данные из visual studio. Знаю что есть метод интеграции eval. Им и пользоваться пытаюсь:
Код: Выделить всё
var stroke = mapinfo.Eval("Select * From towns");
Однако он не срабатывает...
Говорит какая то синтаксическая ошибка. Если вместо Eval написать Do то Do выполнится.
Что не так?
Re: Поиск минимальных путей на карте дорог
Добавлено: 25 дек 2011, 23:25
dreamer2057
Разобрался, этот код работает:
Код: Выделить всё
mapinfo.Do("Fetch first from towns");
do
{
var stroke = mapinfo.Eval("towns.Name");
Cmb_From.Items.Add(stroke);
Cmb_To.Items.Add(stroke);
mapinfo.Do("Fetch next from towns");
} while (mapinfo.Eval("EOT(towns)") == "F");
Заполняю ComboBox'ы значениями из таблиц
Re: Поиск минимальных путей на карте дорог
Добавлено: 26 дек 2011, 01:11
Boris
У меня есть класс MapInfo для VB 6.0 - не уверен, что он подойдет для NET, но если нужно - поделюсь.
Re: Поиск минимальных путей на карте дорог
Добавлено: 28 дек 2011, 01:38
dreamer2057
А что он может ?:) Лишним не будет, я думаю.
У меня встал вопрос: Как изменять стили линий, полилиний.
Вот такой код набросал:
Код: Выделить всё
mapinfo.Do("Dim myO As Object, myPen As Pen");
mapinfo.Do("Fetch first from roads");
mapinfo.Do("myO = roads.obj");
mapinfo.Do("myPen = MakePen(1, 2, rgb(0,0,255))");
mapinfo.Do("Alter Object myO Info objectinfo(myO,2), myPen");
mapinfo.Do("Update selection Set obj = myO");
mapinfo.Do("Alter Object myO Info objectinfo(myO,2), myPen");
Не работает: "Преобразовать данные не удалось."
Что то не так написал?
Re: Поиск минимальных путей на карте дорог
Добавлено: 28 дек 2011, 02:55
dreamer2057
Разобрался, кажется
Путём замены
Код: Выделить всё
mapinfo.Do("Alter Object myO Info objectinfo(myO,2), myPen");
на
Код: Выделить всё
mapinfo.Do("Alter Object myO Info 2, myPen")
Re: Поиск минимальных путей на карте дорог
Добавлено: 09 фев 2012, 13:18
thegeo
Могу предложить готовую программу на МВ.
http://depositfiles.com/files/x6uxnr6bc
Re: Поиск минимальных путей на карте дорог
Добавлено: 25 авг 2016, 18:47
maratenok
можете подсказать может в новом мапинфо появилась возможность сделать поиск минимальных путей на карте, если не сложно подскажите как