Построение графа дорог Нижнего Тагила на основе данных проекта OpenStreetMap
- Список смежности
- Список рёбер
- Визуализация графа
- Матрица смежности (7.5 GiB)
- git clone https://github.com/magauran/RoadGraph
- cd RoadGraph/
- pod install
- open RoadGraph.xcworkspace
- ⌘R
-
Получение карты города в формате .osm (OpenStreetMap XML)
-
Парсинг xml-файла при помощи библиотеки SWXMLHash
- Оставляем только пути с тегами
"motorway"
,"motorway_link"
,"trunk"
,"trunk_link"
,"primary"
,"primary_link"
,"secondary"
,"secondary_link"
,"tertiary"
,"tertiary_link"
,"unclassified"
,"road"
и"residential"
.
- Оставляем только пути с тегами
-
Подготовка графа:
- Все вершины сохраняем в Dictionary<String, OSMNode>.
- Все рёбра сохраняем в Set<OSMNode>.
- Для каждой вершины находим и сохраняем "соседние" вершины.
- Удаляем все изолированные вершины.
-
Сохранение списка смежности и списка рёбер в формате .csv
-
Визуализация графа
- Преобразовываем координаты из географической системы координат в прямоугольную.
- Преобразовываем координаты в систему координат рисунка.
- Генерируем svg-файла (либо svg + html).
- Отображаем html-файла в WKWebView.