Страница 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
можете подсказать может в новом мапинфо появилась возможность сделать поиск минимальных путей на карте, если не сложно подскажите как