Skip to content
forked from trolleway/osmot

Preprocessor for make public transit maps from Openstreetmap data

License

Notifications You must be signed in to change notification settings

seizethedata/osmot

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

=====

Скрипт для создания карт маршрутов общественного транспорта по данным Openstreetmap.

sample map cropped Примеры карт: https://www.flickr.com/search/?user_id=trolleway&tags=osmot&sort=date-posted-desc

Так, пишем в readme по-русски, потому что по общественному транспорту данных в OSM мало, нужно больше местны.

Тут находится скрипт, который подготавливает сырые данные формата OSM так что по ним можно построить карту маршрутов трамваев, троллейбусов, автобусов. Так же прилагаются скрипты, которые выкачивают сырые данные, и выдают конечную картинку в png.

Скрипт тестировался под Windows и Ubuntu. И он в них работает. Вам потребуется PostGIS, osm2pgsql, и какой-нибудь рендер наподобие QGIS или Mapnik.

Использование под Windows:

Вы ставите СУБД PostgreSQL с плагином PostGIS. Всё это выполняется через обычный менеджер установки. Заходите на сервер СУБД стандартной программой PgAdmin, создаёте новую базу с расширением PostGIS. Клонируете / скачиваете этот репозиторий. В папке scripts лежит несколько разных примеров скриптов, которые выкачивают и обрабатывают Москву и Питер. Указываете там в конфиге логин и пароль к базе. Ставите osm2pgsql. Вот это самое сложное под винду, надо его искать. Рекомендуется импортировать с ключами --slim -E 3857 Запускаете скрипт. Он выкачивает транспорт города через Overpass, грузит в базу, и создаёт в ней 2 таблицы с геометриями: линии с подписями со стрелочками, и конечные пункты. Дальше это нужно рендрить, есть разные способы:

  • Открыть эти таблицы из PostGIS в NextGIS QGIS. Стили прилагаются. Можно распечатать картинку на принтере на работе.
  • В QGIS нарезать тайлы в модуле Qtiles, и загрузить тайловый слой в NextGIS Mobile на Android. Вы будете иметь карту маршрутов "в поле".
  • Поставить Tilemill (объявлен устаревшим) или сырой Mapnik. Рендрить в нём маршруты и красивую подложку. Написать на питоне скрипты, которые рендрят их по-очереди, и накладывают. Пример такого скрипта - в папке с Курском.
  • Показывать маршруты в вебе через NextGIS Web. Получается красиво. Демки прямо сейчас нет.

Инструкция:

  • Создайте новую базу данных PostGIS.
createdb osmot
psql -U username -d osmot -c "CREATE EXTENSION postgis;"

Запуск примера

Укажите в файле scripts/sample/main.py параметры доступа к базе данных, и запустите

python scripts/sample/main.py

Скрипт создаст две дополнительные таблицы в базе: "terminals_export", и "planet_osm_routes". planet_osm_routes - это копия таблицы planet_osm_ways, в которой добавлено поле с подписями маршрутов. Если его выводить на экран подписью линий (TextSymbolizer), то оно будет правильно указывать направление односторонних маршрутов.

Теперь у вас есть база данных PostGIS. Далее вы можете приступать к рендерингу картинок в программе картографического рендеринга, таких как QGIS, TileMill, Mapnik, Geoserver. Я использую QGIS и TileMill. Посмотрите примеры карт: http://www.flickr.com/photos/trolleway/tags/osmot/ В QGIS вы можете добавить в проект слои terminals_export, planet_osm_routes и назначить им qml-стили, которые находятся в styles/qml.

Получение osm-файла с маршрутами в osmfilter

  • Отфильтруйте дамп в osmfilter, так что бы в нём остались лишь троллейбусные релейшены. Для текущей версии скрипта обязательно, что бы маршруты не выходили за границу дампа.
    ./osmfilter RU-MOS.osm --keep= --keep-relations="route=trolleybus" --out-osm >RU-MOS_filtered.osm

Так же вы можете использовать программу osmosis с похожим синтаксисом.

Получение osm-файла с маршрутами через Overpass API

Фрагмент python-кода для использования в скриптах

def download_osm():
    import urllib
    #Ивановский троллейбус
    urllib.urlretrieve ('''http://overpass.osm.rambler.ru/cgi/interpreter?data=relation["route"="trolleybus"](56.917998496857315,40.89179992675781,57.06780339266955,41.119422912597656);(._;>;);out meta;''', "data.osm")

Ручной способ получения osm-файла с использованием JOSM

  • Установите плагин Mirrored Download
  • Установите в настройках сервер Rambler
  • Скачайте всё в интересующем городе по запросу [route=trolleybus]
  • Включите панель Relations, выделите все отношения с типом "Маршрут"
  • Скажите "Скачать всех участников",
  • Сохраните файл как .osm

About

Preprocessor for make public transit maps from Openstreetmap data

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • QML 61.5%
  • Python 37.9%
  • CartoCSS 0.6%