Геоданные

Геоданные

20 февраля 2025 г.

Главная сложность этого проекта, конечно, поиск и сбор данных. Здесь расскажу про геоданные: железнодорожную сеть, станции и маршруты.

Весь этот сайт начался с небольшого локального упражнения: мне было интересно реализовать какую-то карту, используя данные OpenStreetMap. Если вкратце и упрощенно, OSM - это открытая база геоданных о всей планете. Открытая в том смысле, что любой человек может внести в нее изменения, как в Википедию. Когда-то я начал с того, что добавил туда контур и информацию о своем доме. OSM используется в сотнях приложений и на сотнях сайтов. Например, в Organic Maps, одном из самых популярных приложений для оффлайн-карт и навигации.

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

Железнодорожная сеть

Есть много способов получить информацию из OSM. Самым простым и наглядным является Overpass API. Немного разобравшись в языке запросов, можно добыть практически что угодно. Запрос для железнодорожной сети Грузии такой:

[out:json][timeout:25];
( area[name="საქართველო"]; )->.searchArea;
nwr["railway"="rail"]["usage"!="industrial"]["service"!="spur"]["service"!="yard"]["service"!="siding"](area.searchArea);
out geom;

В нем я отфильтровал типы путей, не используемых для пассажирского сообщения. Раньше я зачем-то выполнял этот запрос при каждом просмотре страницы, но теперь сырые данные от Overpass просто хранятся в проекте и загружаются почти мгновенно. Обновления там происходят не часто.

Маршруты

Маршрут - это более сложная сущность, чем железнодорожная сеть, которая по сути просто разветвленная линия на карте. Маршруты состоят из нескольких железнодорожных линий, которые соединяют несколько станций, а также из информации о самом маршруте: название, продолжительность, обслуживающая организация и так далее. В OSM есть специальный тип данных для таких сущностей - отношение.

Большая часть маршрутов уже была добавлена в OSM, но большинство из них требовали актуализации. Получилось так, что для использования данных из OSM мне пришлось сначала их туда добавить и отредактировать (об этом расскажу в другом посте). В конечном итоге, при клике на маршрут на карте сайт делает запрос в Overpass и показывает на карте линии и станции полученного отношения.

Станции

Со станциями было проще всего. Я беру все маршруты, забираю из них список станций с их названиями и координатами, и отображаю на карте.

Получается такая карта, которая уже сама по себе имеет ценность, наглядно показывая куда вообще можно доехать на поезде: Карта Большие ветки без станций на юге и востоке Грузии частично используются для грузового сообщения, но действующих пассажирских станций там нет.