Bedste datingsider i danmark Viborg

В качестве визуальной подложки карты в программе формируется изображение, получаемое из тайлов с сервера Open Street Map.

Так же возможна загрузка изображения тайлов с серверов Google Map, Яндекс Карты и некоторых других.

Дороги ранга —1 – это маленькие участки дорог во дворах. И ранг 3 – это собственно те дороги, по которым и происходит основное движение в маршруте.

bedste datingsider i danmark Viborg

Слой дорог будем хранить в следующих таблицах:-Линииcreate table Feature(OSM_ID int not null, -ID из карты Open Street Map street Name varchar(max), -Название улицы Geometry varbinary(max), -Полилиния в бинарном формате x1 float, -долгота нулевой точки полилинии y1 float, -широта нулевой точке полилинии x2 float, -долгота последней точки полилинии y2 float, -широта последней точки полилинии oneway int default(0), -признак одностороннего движения: 0 – двустороннее 1- одностороннее движение HIGHWAY varchar(250), -Атрибут из Open Street Map num Poins int, -Число точек в полилинии constraint pk_Feature primary key (OSM_ID) on [primary]) on [primary]GO -Точки линииcreate table Points(id int identity(1,1), OSM_ID int not null, -ID полилинии num Point int, -Номер точки в полилинии Weight float, -Расстояние от точки до начала полилинии в километрах num Vertex int, -Номер вешины графа x float, -Широта y float, -Долгота Rang int default(0), oneway int default(0), constraint pk_Points primary key (id) on [primary]) on [primary]GO-Вершины графаcreate table Vertex(num Vertex int identity(1,1), x float, y float, Weight float default(0), Weight1 float default(0), OSM_ID int default(0), OSM_ID1 int default(0), Parent int default(0), is Bad int default(0), Parent1 int default(0), is Bad1 int default(0), Rang int default(0), constraint pk_Vertex primary key (num Vertex) on [primary]) on [primary]GOПри загрузке файла в базу MS SQL заполняются только таблицы Feature и Points , причём поле num Vertex заполняется нулём, поскольку номера вершин графа ещё неизвестны. Для заполнения таблицы вершин используем следующий запрос:insert into Vertex (x, y)select distinct v.x, v.yfrom(select x1 x, y1 y from Feature (nolock)unionselect x2 x, y2 y from Feature (nolock)) v Ключевое слово distinct указывает на то, что в результирующем наборе данных будут только неповторяющиеся пары x и у.Если удалить вершины ранга —1, то связность графа не нарушится.Это приведёт к некоторому ухудшению маршрута, а именно исчезнут небольшие фрагменты в начале и конце маршрута. Определим следующее правило в поиске вершин в алгоритме Дейкстры, ближайших к заданной.Теперь загрузим в базу слой дорог для Москвы и посмотрим некоторую статистику по суммарной протяжённости и числу узлов в разрезе ранга точек.Ранг Число вершин3 - 91201 - 9490-1 - 55373Общее число вершин в графе – 73 983Ранг Длина в км.1 - 2487,645496973493 - 2950,38032315498-1 - 4438,31007080392То есть, мы видим, что доля числа узлов дорог service составляет более 70% .

Bedste datingsider i danmark Viborg

В данной заметке рассказывается о применении алгоритма Дейкстры нахождения кратчайшего маршрута по графу дорог из Open Street Map.Слой дорог брался из проекта Gis-Lab – “Данные Open Street Map по регионам РФ в форматах shape и OSM XML”. Оболочка программы написана на C#, слой дорог загружается в базу MS SQL Server 2005 (SQLEXPRESS), все алгоритмы реализованы в виде хранимых процедур на T-SQL.Поле Weight – длина в километрах вычисляется в программе на C# по формуле: Weight = Weight 111,11 * Math. Таким образом, мы получаем таблицу узлов графа, поле num Vertex таблицы Vertex содержит номер вершины, начиная с единицы. Для этого используем следующие запросы:update Points set num Vertex = 0update Pointsset Vertex = Vertexfrom Points inner join Vertex (nolock)on Points.x = Vertex.x and Points.y = Vertex.ydelete from Points where num Vertex = 0В первом запросе все номера вершин полагаются равными нулю.Во втором запросе номер вершины берётся из таблицы Vertex, вершина определяется по совпадению координат x, y в таблицах Points и Vertex.Перед написанием программы автор заметки попытался построить маршрут по слою дорог Москвы в QGIS с помощью модуля Road Graph ( В программе предпринята попытка исправить некоторые моменты работа этого модуля.

Первая попытка построить маршрут с помощью модуля Road Graph окончилась неудачно.То есть более 70% времени уйдёт на обсчёт заведомо неправильных маршрутов в попытке найти кратчайший маршрут, двигаясь по внутренним дорогам во дворах.Первый вариант решения состоит в том, что бы отбросить все вершины с рангом —1 и строить маршруты без них.В третьем запросе удаляются все точки, которые не являются перекрёстками.После выполнения всех запросов в таблицах Points и Vertex содержится граф.

Published

Add comment

Your e-mail will not be published. required fields are marked *