Статьи

Скачиваем данные Overture Map Foundation: здания и POI вашего города

2024-06-24 07:42 Программирование Полезные ресурсы
Время прочтения: 4 минуты

💡 Сложность: подойдет для тех, кто совсем не знает Python, но нужно иметь представления о геоданных и их форматах
Когда фонд Overture Maps объявил, что предоставляет открытые данные на основе нескольких источников, в том числе миллионы точек интереса, а также здания, которых нет в OSM, это звучало перспективно. Изначально датасет был удобен только разработчикам, но недавно с ними стало удобно работать и обычным пользователям. Эта статья написана, чтобы подробнее разобраться с данными Overture Maps Foundation и показать легкий способ их скачать.

Апдейт на осень 2024 года: через некоторое время после этой статьи Overture сделали интерактивный инструмент для скачивания данных Overture Map Explorer. Он не отменяет всего, что написано в тексте ниже, но если вы ищете возможность скачать данные Overture, попробуйте и его :)

Что есть в этом тексте:

  • Что входит в данные Overture Map Foundation
  • Как скачать их с помощью overturemaps-py
  • Удобный пример с Google Colab — только подставьте координаты!
  • Неформальное сравнение открытых данных OMF с данными OpenStreetMap

Что входит в данные Overture Map Foundation

Мы уже рассказывали в отдельной статье про открытые данные Overture Map Foundation, но если вкратце, история такая: как-то несколько крупных компаний решили составить конкуренцию картографическим гигантам и собрать один большой датасет пространственных данных, чтобы не брать данные у Google или Apple для разработки своих приложений. И так как большая часть данных основана на OpenStreetMap, этот датасет должен быть открытым, чтобы не нарушать лицензию.
В получившемся наборе данных есть здания, дороги, точки интереса, административные границы и данные землепользования. Все данные делятся на отдельные датасеты по объектам, и у каждого своя лицензия и свои источники. Отчасти это OpenStreetMap, но есть и другие: Esri, Google Open Buildings, Daylight Map Distribution; ESA WorldCoverMeta*, Microsoft и другие. Подробнее про источники данных и лицензию каждого датасета читайте на этой странице документации.
Данные OMF были открыты всегда, но изначально их можно было добыть только в неудобном формате GeoParquet (то есть неудобном для всех, кто не разработчик). Но в этом году появился удобный инструмент overturemaps-py, и теперь данные можно достать в любом месте, где вы пользуетесь Python. Мы уже делали про него небольшую новость в соцсетях Картетики, но решили написать про это подробнее. Все-таки это открытые данные!

Даже если вы не умеете работать с Python, не бойтесь, к концу этого текста вы тоже сможете скачать данные Overture Maps Foundation :) Но вообще рекомендуем учить Python — он помогает не только добывать данные, но и обрабатывать их.

Как скачать данные Overture Map Foundation с overturemaps-py

Overturemaps-py помогает скачать любой датасет OMF на любой интересующий регион. Все просто: устанавливаем библиотеку, импортируем ее и пишем строку, где определяем ограничительную рамку и тип данных. Ниже пример от разработчиков, который дает скачать здания внутри определенной рамки в формате GeoJSON и сохранить их в файл "boston.geojson":
pip install overturemaps

$ overturemaps download --bbox=-71.068,42.353,-71.058,42.363 -f geojson --type=building -o boston.geojson

Параметры:

  • --bbox (необязательный) — ограничительная рамка. Если не указывать, будет загружен весь датасет, но на практике это имеет смысл только для наборов данных вроде "land_cover" и не подойдет для зданий, дорог или точек интереса.
  • -f (обязательный) — формат выхода: "geojson", "geojsonseq", "geoparquet"
  • --output/-o (необязательный) — локация выходного файла
  • --type/-t (обязательный) — тип данных, которые мы загружаем. Все возможные типы данных: 'locality', 'locality_area', 'administrative_boundary', 'building', 'building_part', 'division', 'division_area', 'place', 'segment', 'connector', 'infrastructure', 'land', 'land_cover', 'land_use', 'water'.
Пояснения про некоторые интересные типы данных:
  • building = здания
  • place = POI, то есть точки интереса (кафе, магазины, салоны и прочие заведения)
  • land_use = землепользование
  • segment = дороги
  • connector = пересечения и тупики дорожной сети
Чтобы определить нужные границы, не высчитывая координаты, разработчики предлагают использовать удобный инструмент bounding box от Klokantech. Выберите формат CSV и скопируйте их прямо в поле --bbox.
Так, в случае не зданий Бостона, а POI Саратова, получим:
$ overturemaps download --bbox=45.949,51.505,46.101,51.567 -f geojson --type=place -o saratov.geojson

Скачиваем данные через готовый блокнот в Google Colab

Не знаю, как вы, а я люблю работать в Google Colab. Да, он бывает неудобным, но это хороший способ начать работу с Python и не бояться кода. Все уже написано — остается только скопировать к себе и запускать, меняя отдельные параметры. Курс по Python у нас тоже проходит в Colab — в таком формате удобно знакомиться с кодом, запускать его, и постепенно менять код под свои задачи.
Чтобы поделиться удобным способом скачать данные Overture Maps Foundation, я сделала простенький блокнот в Colab. Вам нужен только гугл-аккаунт, а остальное просто — скопируйте его к себе на диск и меняйте код, подставляя свои координаты и тип объектов, и скачивайте GeoJSON-файлы.
После копирования запускаем первые две строки кода: установку и импорт библиотеки. В следующей строке подставляем координаты и тип данных. Чтобы все работало быстро, рекомендую ограничиться одним городом или даже его небольшой частью.
Выполняем. Через некоторое время зеленая галочка показывает, что код успешно выполнен, но файлы еще нужно добыть из бокового меню:

Все готово! Получаем файл GeoJSON с нужнми объектами.

Неформальное сравнение данных OMF и OpenStreetMap

После того, как данные скачаны, интересно посмотреть, что получилось. Добавив полученные файлы в QGIS, я пересохраняю их в формат GPKG, потому что GeoJSON — обменный формат, и лучше в нем не работать с данными.
Дисклеймер: ниже я сравниваю данные только для Уфы, потому что я здесь живу последние несколько лет и регулярно добавляю данные в OSM, а значит могу оценить полноту и свежесть данных. На научность не претендую, просто показываю аспекты, которые бросаются в глаза. Вопрос качества данных будет отличаться для каждого региона и для каждого типа задач. Если задумываетесь всерьез, использовать данные или нет, скачайте и проанализируйте их самостоятельно.

Сравниваем здания

Источники данных о зданиях в OMF: OpenStreetMap, Microsoft, Esri и Google Open Buildings. То есть к данным OSM здесь добавляются дополнительные данные, и очень заметно, что взято из OSM, а что нет. На рисунках ниже два датасета наложены друг на друга с разной прозрачностью, где OMF — синий, OSM — оранжевый, а их пересечение — бордовый.
В данных OMF зданий заметно больше. Если в районах с многоэтажками это не сильно играет роль, то рядом с частными домами есть множество построек, которых нет в OSM:
На рисунке ниже в данных OMF остались уже снесенные здания (синие), а в OSM данные поновее, снесенных зданий уже нет, и есть строящаяся многоэтажка (оранжевая). Но в целом данные обновлены.
Встречаются неверно определенные здания:
Если вам нужно иметь как можно больше зданий, в том числе будки и хозяйственные постройки — вам к OMF. То же самое и с районами, где в OSM просто нет никаких зданий - там данные OMF заполнят пробел. Но не факт, что все эти мелкие постройки на самом деле существуют, это уже надо проверять по спутниковым снимкам. И пока что в их датасете есть неверно распознанные здания, так что готовьтесь к проверке данных. Хотя, возможно, в будущем ML-модели будут распознавать здания получше.

Сравниваем POI

Обновление информации о POI на карте — это всегда больной вопрос. Многие POI не существуют на одном месте больше года, переезжают и закрываются, а уж режим работы, сайт или другие теги у них могут меняться так часто, что не уследишь. Чтобы данные о POI в OpenStreetMap оставались актуальными, нужно регулярно гулять по городу и отмечать, на месте ли магазины и кафе. К сожалению, данные Overture Maps не решают эту проблему. Источники этого датасета: Meta* и Microsoft, и в других странах, где организации больше связаны с фейсбуком*, качество данных может быть гораздо лучше.
В Уфе на каждую десятую точку из OSM приходится одна из OMF, да и та бывает устаревшая и давно закрытая.

Может, имеет смысл посчитать реальную точность датасета, но для Уфы она понятна и на глаз. Для других регионов и стран ситуация может быть и другой: разработчик Wille Marcel уже показал в мини-исследовании для района Salvador de Bahia в Бразилии, что у 63% из 308 точек датасета Places OMF была указана верная информация. Такая точность вызывает много сомнений, хотя там, где данных нет, это лучше, чем ничего.
У меня есть предположение, что даже в некоторых уголках России, где давно никто не обновлял данные OpenStreetMap, информация о точках интереса OMF может быть точнее, чем в OSM. Но не ручаюсь, это надо проверять отдельно.

Другие данные

Кроме зданий и POI для города в OMF есть такие типы данных, как "infrastructure", "land_use" и "segments" (дороги), и все они в основном повторяют OSM. Подробнее читайте о них в документации, и там же есть пояснения к атрибутам данных.

Итоги

Данные Overture Maps Foundation стало и правдо легко скачать, но их качество пока делает их пригодными для ограниченного спектра задач. Более того, открытоcть не освобождает от ответственности: у каждого датасета есть своя лицензия, которая тоже накладывает небольшие ограничения. В общем, все как обычно: скачивайте, анализируйте и решайте сами, подойдут ли эти данные для вашей задачи :)

И еще важный момент: проект постоянно меняется, его данные обновляются и инструменты для работы тоже. Будем следить за обновлениями и постараемся дополнять эту статью в случае изменений, но если тема вам тоже интересна, в первую очередь следите за свежими апдейтами разработчиков!

Дополнительные ссылки на тему открытых данных:

Данные, использованные в статье, принадлежат Overture Maps Foundation, overturemaps.org, а также OpenStreetMap.

*Деятельность Meta признана экстремистской в РФ