Как устроен OpenStreetMap изнутри: четыре примитива структуры данных — точка,
линия, полигон и отношение, система тегов «ключ = значение» с её ловушками,
интерактивный квартал с реальной разметкой, справочник основных тегов по десяти
ключам с живым поиском и механизмы контроля качества правок.
Аннотация
Конспект открывается знакомством с OpenStreetMap — некоммерческим проектом
свободной карты мира — и сервисами на его данных: OpenRouteService, OpenTopoMap,
разными картостилями одного участка. Затем базовые понятия структуры данных: точка
(node) с координатами, линия (way) из 2–2000 точек, полигон как замкнутая линия
с пометкой области и отношения (relations) для связей между объектами — маршрутов
и «лесов с дырками». Центральная часть — теги: пары «ключ = значение», их логика
и типичные путаницы вроде building=garages против landuse=garages. Интуицию
закрепляет интерактивный квартал: щёлкая по дому, реке, мосту или гаражам, вы видите
настоящие теги каждого объекта. Дальше — систематический справочник с живым поиском:
дороги highway со всеми классами и съездами, рельсовый транспорт railway, здания
building, сооружения man_made, общественные объекты amenity, природа natural, отдых
leisure, землепользование landuse, гидрография waterway, границы boundary
с расшифровкой admin_level для России. Тренажёр «подбери ключ» закрепляет самые
коварные случаи. Завершают конспект taginfo для поиска тегов и система контроля
правок: заметки, пакеты правок, обнаружение ошибок.
Пререквизиты
Лекция 5 — веб-карты и тайлы (OSM — главный
открытый источник для них). Практическое применение тегов — QuickOSM
в главе 1 РГР.
Мотивация
В главе 1 РГР вы выгружали районы области одним запросом
admin_level = 6 — и получали готовый слой. Магия? Нет:
просто кто-то из миллионов участников OSM разметил эти границы правильными тегами.
Чтобы уверенно доставать из OSM любые данные — от аптек до просек — нужно понимать,
как проект хранит объекты и почему у гаражей два разных тега. Одна ошибка в ключе —
и QuickOSM вернёт пустой слой или совсем не то, что вы хотели.
1. OpenStreetMap и сервисы на его данных
OpenStreetMap (сокращённо OSM) — некоммерческий веб-картографический
проект по созданию силами сообщества участников — пользователей Интернета — подробной
свободной и бесплатной географической карты мира.
На данных OSM построено множество сервисов:
OpenRouteService — сервис, который предоставляет услуги
маршрутизации для автомобилей, пешеходов и велосипедов на основе открытых стандартов
и открытых геоданных:
maps.openrouteservice.org;
OpenTopoMap — топографическая карта на основе данных OpenStreetMap
и SRTM: opentopomap.org.
Один и тот же участок карты OSM может выглядеть совершенно по-разному — всё решает
картостиль. Пролистайте один и тот же квартал в трёх стилях и обратите внимание,
как меняются акценты: Mapnik показывает всё понемногу, OpenTopo — рельеф
и «походную» обстановку, Public Transport выпячивает маршруты и остановки.
База данных под всеми тремя — одна.
стиль Mapnik — стандартная отрисовка на openstreetmap.org
стиль OpenTopo — горизонтали рельефа, тропы, топографические знаки
стиль Public Transport — акцент на маршрутах и остановках транспорта
1 / 3
Кто обеспечивает данные? Карту наполняют сами пользователи:
данные на 17 октября 2023 года по количеству пользователей
Точка (node) — базовый элемент в структуре данных OSM. Точка имеет
параметры lat (latitude — широта) и lon (longitude — долгота); можно включить
дополнительный третий параметр высоты ele (сокращение от elevation). Точка может быть
определена как часть слоя layer=* или уровня level=* в тех местах, где пути могут
пересекаться на разных уровнях, например под мостом.
Пример точки с тегами — телефонная будка:
amenity=telephone +
covered=booth:
2.2. Линия (way)
Линия — это упорядоченная взаимосвязь не менее 2 и не более 2000
точек (API v0.6), которые описывают линейные объекты: улицы, тропинки, железную дорогу,
реку, забор, линии электропередачи, контур района или строительства.
Замкнутая линия — линия, в которой первая и последняя точки идентичны;
такие линии ограничивают области.
Важно
Полигон — это не отдельный примитив данных, а просто замкнутая линия, помеченная
для отображения как область. Не все замкнутые линии показываются как полигоны!
Ключи для описания области: area=yes или
landuse=* (последний — если линия состоит в отношении
типа «мультиполигон»).
2.3. Полигон (area)
Полигон — замкнутый многоугольник. Существует два способа его
создать:
для маленьких областей часто достаточно нарисовать замкнутую линию с подходящими
тегами или некоторыми тегами линейных объектов с указанием дополнительной метки
area=yes;
для огромных областей (более 2000 точек) или областей, которые соприкасаются
с другими полигонами или линиями, уместно использовать отношения с теми же тегами.
2.4. Отношения (relations)
Отношения (relations) используются для указания географической
взаимосвязи между различными объектами — когда они, к примеру, пересекаются или граничат
друг с другом. Отношения были реализованы в API версии 0.5 от 8 октября 2007 года.
3. Теги
Теги есть у всех объектов OSM. Они представляют собой пару
<Ключ=Значение>, где ключ — общая категория,
а значение — уточнение или подкатегория. Разные теги отделяют одни объекты от других
и служат разным целям: например, присваивают название объекту
(<name=Южный Обход>) или классифицируют объекты
геометрии (<line=highway>). Теги относятся
к простейшим элементам данных и могут быть назначены точкам, линиям и отношениям.
Теги — основополагающий метод описания географических данных в OpenStreetMap.
Для работы в QGIS нужно уметь правильно извлекать геоданные из OSM, а для этого нужно
знать основные теги и правила работы с ними.
Проблема тегов
Логика тегов не всегда очевидна. Некоторые теги очень похоже записываются,
и их можно перепутать друг с другом. Например,
<building=garages> и
<landuse=garages>: первый обозначает гаражи или ГСК
как отдельные объекты, второй — территорию гаражей.
Есть и обратная ситуация, когда разными тегами описываются одинаковые объекты:
<building=university> и
<amenity=university> — первый описывает университет
как здание, а второй — как объект притяжения. Иногда у одного объекта может быть
несколько тегов, поэтому при составлении запроса или классификации объектов OSM нужно
быть внимательным.
Прежде чем открывать справочник, потренируйте интуицию. Перед вами обычный квартал:
дом, магазин, школа, парк, гаражи, река с мостом. Каждый объект здесь размечен так,
как это сделал бы опытный участник OSM. Щёлкайте по объектам —
и смотрите, из каких тегов складывается карта. Обратите внимание на гаражи: их здесь
два разных объекта — строения и территория, та самая пара-ловушка из врезки выше.
Интерактив: разметим один квартал
Нажмите на объект
схема иллюстративная
Каждый объект квартала хранится в OSM как точка, линия или полигон
с набором тегов. Щёлкните по дому, дороге, реке или остановке — карточка покажет
реальные теги. Всего здесь 14 объектов; найдите оба «гаражных».
Схема условная; теги — настоящие, из практики разметки OSM.
Теперь — сам справочник: десять ключей, покрывающих большинство запросов
геоинформатика. Он рабочий, а не «для чтения подряд»: ищите нужное значение по ключу,
латинскому значению или русскому описанию.
3.1. 🛣️ Дороги и пути: highway
Когда применяется: тег описывает дороги и их значение. Для этого тега
не важно количество полос или пропускная способность (в отличие от классификации
автомобильных дорог РФ) — главный фактор, откуда и куда по дороге можно доехать.
Российское сообщество OSM, разрабатывавшее классификацию тега highway, пришло к мнению,
что есть дороги, которые приобрели важное значение и получили хорошее покрытие,
но не получили соответствующего статуса, — и есть федеральные трассы в плохом состоянии.
Тип геометрии: в основном линия, реже точка или полигон.
Автодороги:
motorway — автомагистраль;
trunk — автомобильная дорога Европейского маршрута, Международной азиатской сети, а также дорога федерального и межрегионального значения;
primary — дорога регионального значения;
secondary — дорога областного значения;
tertiary — дорога местного значения;
unclassified — дорога местного значения, соединяет районные центры с сёлами;
residential — дорога внутри жилых зон и подъезды к ним;
track — неофициальная грунтовка, лесная или полевая дорога;
service — служебный проезд;
road — дорога без классификации.
Съезды и развязки:
motorway_link — съезд на развязке дороги из категории motorway (в России встречаются редко);
trunk_link — съезд на развязке дороги из категории trunk;
primary_link — съезд на развязке дороги из категории primary;
secondary_link — съезд на развязке дороги из категории secondary;
tertiary_link — съезд на развязке дороги из категории tertiary.
Пешеходные пути, велодорожки и элементы дороги:
footway — пешеходная дорожка и тротуар;
pedestrian — городская дорога, выделенная для пешеходов;
steps — лестница и лестничный пролёт;
path — стихийная тропа;
cycleway — официальная велодорожка;
bus_stop — автобусная остановка;
platform — площадка для посадки пассажиров на автобусной остановке или платформы на автобусных станциях (не путать с railway=platform — ж/д платформами);
elevator — лифт.
3.2. 🚆 Рельсовый транспорт: railway
Когда применяется: тег описывает железные дороги, включая
легкорельсовый транспорт, электрички, метро, монорельсы и трамваи — все линейные
ж/д объекты и сопутствующую инфраструктуру. Не путать с тегом
<landuse=railway> — тот описывает только территории,
которые относятся к ж/д объектам. Тип геометрии: в основном линия,
реже точка или полигон.
Линейная инфраструктура:
rail — железная дорога;
subway — линия метро;
tram — трамвайная линия;
narrow_gauge — узкоколейная железная дорога;
light_rail — линия легкорельсового транспорта;
disused — неиспользуемая линия любого транспорта.
Объекты ЖД:
platform — железнодорожная платформа (не путать с highway=platform — платформой автобусной станции);
station — железнодорожная станция;
tram_stop — трамвайная платформа;
roundhouse — веерное депо;
switch — стрелка или стрелочный перевод;
turntable — поворотный круг;
crossing — пешеходный переход через рельсы;
level_crossing — переезд: обозначается сам факт пересечения дороги с рельсами.
3.3. 🏠 Здания: building
Когда применяется: тег описывает здания и их типы. Здания в OSM —
это рукотворные объекты с помещениями; ключ включает не только обычные здания,
но и подземные сооружения с помещениями. Близкий по значению ключ —
man_made, обозначающий рукотворные объекты без помещений.
Тип геометрии: в основном полигон, реже точка.
Жилые дома:
residential — жилое здание без классификации;
apartments — многоквартирный жилой дом; также может обозначать дом с коммерческими помещениями на первом этаже;
bungalow и farm — небольшой летний дом или дача;
house и detached — индивидуальный жилой дом;
semidetached_house — дуплекс;
terrace — частный дом, стоящий вплотную к другим домам, или таунхаус;
hotel — гостиница или отель;
dormitory — общежитие;
barracks — здание для размещения военнослужащих или рабочих;
cabin — тег без чёткого определения или жилое здание без точной классификации.
Коммерческие здания:
industrial — промышленное здание;
office — офисное здание;
supermarket — крупный магазин;
retail — магазин;
kiosk — небольшое торговое здание (не путать с shop=kiosk — универсальным магазином прессы и мелких товаров);
warehouse — складское здание;
commercial — коммерческое здание без классификации.
Общественные здания:
civic и public — общественное здание без классификации;
university — вуз, университет (также amenity=university);
college — колледж, техникум (также amenity=college);
school — школа (также amenity=school);
kindergarten — детский сад (также amenity=kindergarten);
fire_station — пожарная часть;
hospital — больница (также amenity=hospital);
toilets — общественный туалет (также amenity=toilets);
train_station — ж/д вокзал;
transportation — здания общественного транспорта, автовокзал;
government — здания правительства: администрация, суд, парламент, муниципалитет.
Религиозные сооружения:
religious — религиозное здание без классификации;
cathedral — собор;
church — церковь или храм (не путать с historic=church — историческими церквями);
chapel — часовня;
monastery — монастырь (также amenity=monastery);
temple — храм любой нехристианской религии;
mosque — мечеть;
synagogue — синагога.
Сельскохозяйственные здания:
barn — здание для хранения оборудования;
farm_auxiliary — нежилые здания на ферме;
cowshed — коровник;
stable — конюшня;
sty — свинарник;
greenhouse — теплица.
Спортивные здания:
stadium — стадион;
grandstand — трибуна (обычно крытая);
sports_hall — спортзал.
Специфические здания:
garages — гаражи или ГСК (не путать с территорией гаражей landuse=garages);
garage — отдельно стоящий гараж;
parking — многоэтажная парковка (не путать с amenity=parking — открытыми парковочными местами);
service — служебная постройка, не предназначенная для нахождения людей внутри;
bridge — мост (также man_made=bridge);
military — военное здание.
3.4. 🏗️ Сооружения: man_made
Когда применяется: тег описывает сооружения и их типы. Сооружения
в OSM — рукотворные объекты без помещений; не путать с тегом
building, который описывает здания и сооружения
с помещениями. Тип геометрии: в основном точка и полигон, чуть реже
линия.
antenna — антенна или радиокомплекс;
communications_tower — большая радиобашня;
cutline — лесная просека;
chimney — промышленная дымовая труба;
dyke — земляная насыпь для защиты от наводнения;
embankment — земляная насыпь ж/д дорог;
lighthouse — маяк;
mast — мачта или столб;
tower — башня или вышка (не путать с historic=tower — историческими башнями и power=tower — опорами ЛЭП);
works — промышленное строение, завод или фабрика;
bridge — мост (также building=bridge);
pipeline — трубопровод;
pier — пирс, волнорез, волнолом, мол.
3.5. ☕ Общественные объекты: amenity
Когда применяется: тег используется для обозначения всех значимых
общественных объектов: банков, школ, аптек, судов, кафе, клиник и т. д. Частично
дублирует тег building, но отличается по смыслу:
amenity описывает функциональное назначение объекта, который может быть не только
зданием — фонтан, банкомат, автомойка тоже попадают в эту категорию.
Тип геометрии: точка и полигон.
Здоровье и питание:
cafe — кафе и кофейня;
bar или pub — любое место, где торгуют спиртным: бар, закусочная, таверна, трактир, паб, пивная;
fast_food — заведения быстрого питания, пиццерия;
restaurant — ресторан (без ресторанов быстрого питания и кафе);
doctors — медицинский пункт, кабинет, небольшая поликлиника с персоналом менее 10 человек;
clinic — крупная поликлиника или коммерческая клиника с персоналом более 10 человек;
hospital — больница, госпиталь;
pharmacy — аптека;
veterinary — ветеринарная клиника;
dentist — стоматологическая клиника или кабинет стоматолога.
Образование и финансы:
university — вуз, университет (также building=university);
college — колледж, техникум (также building=college);
school — школа (также building=school);
kindergarten — детский сад (также building=kindergarten);
driving_school — автошкола;
library — библиотека;
atm — банкомат;
bank — банк.
Прочая инфраструктура:
toilets — общественный туалет (также building=toilets);
recycling — место сбора отходов для вторичной переработки;
shelter — навес, шалаш, остановка транспорта или похожее укрытие.
3.6. 🌲 Объекты природы: natural
Когда применяется: тег описывает природные ландшафты, объекты
и геологические особенности. Важно: natural используется только для естественных,
природных объектов; для рукотворных объектов и особенностей землепользования — тег
landuse. Тип геометрии: в основном полигон
и точка, реже линия.
Растительный мир:
wood — лес, лесной массив (не путать с landuse=forest — искусственными лесопосадками);
tree — отдельно стоящее дерево;
tree_row — ряд деревьев;
grassland — территория, где преобладают злаки и травянистые растения (не путать с landuse=grass — территорией с травой или газоном);
heath — пустошь: территория, где преобладают вересковые растения;
scrub — территория с кустарниковыми зарослями;
moor — холмистая местность без ярко выраженной растительности.
Водная поверхность:
water — любая водная поверхность: крупные реки, моря, озёра (для рек также используется тег waterway);
wetland — затопленная местность: болото, топь;
mud — илистая, заболоченная территория или периодически затапливаемая местность;
bay — бухта, залив;
spring — источник, родник;
shoal — отмель.
Геологические объекты:
bare_rock — местность с редкой или отсутствующей растительностью;
valley — долина или балка;
arete — гребень горы или кряж;
cliff — утёс или отвесная скала на побережье;
peak — вершина горы или холма;
ridge — вершина хребта или кряжа;
hill — холм;
saddle — седловина между холмами;
sand — большая территория, покрытая песком;
dune — отдельные участки песка или песчаные холмы;
beach — естественный пляж (не путать с искусственными курортными пляжами);
scree — каменистая осыпь.
3.7. ⛱️ Места и объекты для отдыха: leisure
Когда применяется: тег обозначает места и объекты для проведения
досуга. Тип геометрии: точка, полигон.
beach_resort — частный или обслуживаемый пляж (не путать с natural=beach — естественными пляжами);
marina — пристань для яхт и катеров;
water_park — аквапарк;
ice_rink — каток;
fishing — место для рыбалки;
golf_course — поле для гольфа;
garden — декоративный или городской сад (не путать с landuse=orchard — сельскохозяйственными садами);
nature_reserve — национальный парк или заповедник;
park — парк, открытая зелёная площадка для отдыха;
dog_park — место для выгула собак;
playground — детская площадка;
stadium — стадион (также building=stadium);
swimming_pool — бассейн, плавательный центр.
3.8. 🌾 Землепользование: landuse
Когда применяется: тег описывает рукотворные ландшафты и объекты
землепользования. Для природных объектов и ландшафтов используйте тег
natural. Тип геометрии: в основном полигон,
реже точка.
Городские территории:
commercial — деловой район (не путать с building=commercial — коммерческим зданием);
education — территория образовательных учреждений;
industrial — территория промышленных объектов (не путать с building=industrial);
residential — территория жилых домов (не путать с building=residential и highway=residential);
retail — торговая территория (не путать с building=retail — магазином).
Сельскохозяйственные территории:
allotments — территория садоводческих товариществ, огородов, приусадебных участков;
farmland — поля;
farmyard — сельскохозяйственный двор или территория при ферме с подсобными строениями;
forest — лесничество, вырубка или искусственный лес;
meadow — сенокос, луг.
Прочие территории:
cemetery — кладбище;
garages — территория гаражей (гаражи как объекты — building=garages);
grass — газон или территория, где растёт трава (не путать с natural=grassland);
greenfield — территория под застройку, которая раньше пустовала;
landfill — свалка;
military — территория военных объектов;
railway — территория ж/д объектов (не путать с railway=* — инфраструктурой рельсового транспорта);
religious — территория религиозных объектов;
quarry — территория открытых выработок: карьер, котлован;
port — территория морских или речных портов;
depot — территория транспортных депо: поездов, трамваев, автобусов.
3.9. 💧 Гидрография: waterway
Когда применяется: тег используется для описания рек, потоков воды
и водных маршрутов. Не путать с тегом natural=water,
который описывает только природную водную поверхность и предназначен для крупных рек
и озёр: waterway описывает все водные объекты, включая небольшие и рукотворные.
Тип геометрии: в основном линия, реже точка или полигон.
Естественные объекты:
river — река;
stream — ручей;
waterfall — водопад.
Искусственные объекты:
canal — канал;
drain — дренажный канал;
pressurised — поток воды под давлением в трубе;
ditch — водосточная канава;
dam — дамба или плотина, построенные, чтобы сдерживать воду;
weir — плотина, дамба или барьер, построенные через русло так, что вода течёт поверх них;
lock_gate или sluice_gate — шлюз.
3.10. 🚩 Границы территорий: boundary
Когда применяется: тег используется, чтобы разметить границы
отдельных территорий. Тип геометрии: в основном линия, реже точка.
Дополнительные ключи этой группы: barrier (преграды), historic (исторические объекты),
tourism (туризм), shop (магазины), office (офисы), power (электроснабжение).
Основные границы:
administrative — любая административная граница: страны, субъекта, района, округа;
admin_level — уровень административной границы, отличается по странам;
maritime — морская граница;
national_park — граница национального парка, заказника или заповедника;
protected_area — граница охраняемой территории, объекта культурного наследия, зоны защиты морской среды, дикой природы или культурной ценности;
border_zone — пограничная зона;
hazard — граница особо опасной зоны.
Атрибуты admin_level описывают границы на разных уровнях — от страны
до города; атрибуты отличаются для разных стран из-за разного
административно-территориального деления. Для России:
admin_level
Граница
2
граница страны
3
граница федерального округа
4
граница субъекта федерации
5
граница объединений муниципальных районов / городских округов, административных округов / районов городов федерального значения
6
граница муниципальных районов для субъектов федерации и муниципальных городских округов
7
не используется в России
8
граница городских и сельских муниципальных образований, внутригородских муниципальных территорий городов федерального значения
9
граница административных районов для городских округов и поселений
10
граница населённого пункта или микрорайона; спорный тег без чёткой классификации, используется редко
Именно admin_level = 6 и admin_level = 4 вы использовали в QuickOSM
в главах 1
и 2 РГР.
4. Тренажёр: подбери ключ тега
Десять объектов — десять решений. Выберите ключ, которым объект размечается в OSM;
тренажёр объяснит выбор и напомнит ловушки-двойники.
Сервис позволяет анализировать теги: частоту использования, сочетания, карты
распространения:
5.2. Система контроля правок
Заметки (Notes) — функция сайта OpenStreetMap.org для размещения
общедоступных примечаний на карте, помогающих в редактировании данных OpenStreetMap:
Пакет правок — это набор правок, сделанных одним пользователем
за определённый промежуток времени (сеанс правок). В настоящее время пакет правок может
содержать до 50 тысяч правок, а его максимальное время жизни составляет 24 часа.
Система обнаружения ошибок. Что считается ошибкой:
объект с незаполненными тегами;
несуществующие объекты (выявляются сопоставлением с БД);
неверное тегирование объектов (например, линейное здание).
Контрольные вопросы
Точка (node) — lat/lon, опционально высота ele; линия (way) — от 2 до 2000 точек; полигон — не отдельный примитив, а замкнутая линия с пометкой области (area=yes) либо отношение-мультиполигон для больших областей; отношение (relation) — связь объектов (маршруты, «лес с дыркой»), появились в API 0.5 (2007).
Тег — пара «ключ = значение», назначаемая точкам, линиям и отношениям. Проблема 1: похожие теги для разных вещей (building=garages — объекты, landuse=garages — территория). Проблема 2: разные теги для одного объекта (building=university и amenity=university — здание против объекта притяжения); у объекта может быть несколько тегов сразу.
building — рукотворные объекты с помещениями; man_made — рукотворные объекты без помещений (мачты, трубы, пирсы); amenity — функциональное назначение общественного объекта, который может и не быть зданием (банкомат, фонтан, автомойка).
По связности — откуда и куда можно доехать, а не по числу полос или покрытию (в отличие от классификации автодорог РФ): motorway, trunk, primary (региональные), secondary (областные), tertiary/unclassified (местные), residential (внутри жилых зон), track, service, road; съезды — *_link.
natural — естественные объекты: wood — природный лес, grassland — природная территория злаков и трав. landuse — рукотворное землепользование: forest — лесничество/искусственные посадки, grass — газон. Выбор ключа сообщает происхождение объекта.
admin_level=4 — граница субъекта федерации (использовалась в главе 2 РГР), admin_level=6 — граница муниципального района (глава 1 РГР). Уровень 2 — страна, 8 — городские и сельские поселения; 7 в России не используется.
Набор правок одного пользователя за сеанс редактирования; до 50 тысяч правок, максимальное время жизни — 24 часа. Дополнительные механизмы контроля: заметки (Notes) на карте и система обнаружения ошибок (пустые теги, несуществующие объекты, неверное тегирование).
taginfo.openstreetmap.org — реестр всех тегов с частотами использования, сочетаниями и статистикой значений; глоссарий терминов — wiki.openstreetmap.org/wiki/RU:Глоссарий.