Чтобы получше разобраться с моделью данных OSM написал простенький парсер на Python.
В результате нашел некоторые случаи, которые, судя по Вики, являются ошибками.
Ошибки: errors/useless_node/ - точка без тегов, не входящая в линию или отношение. errors/useless_way/ - линия без тегов, не входящая в отношение. errors/highway/crossing/not_on_road - точка highway=crossing не включена в автомобильную дорогу.
Бывает, что highway=crossing включена в railway. Как я понимаю, для этого случая правильный тег: railway=crossing? errors/traffic_calming/not_on_road - точка traffic_calming=* не включена в автомобильную дорогу.
Замечания: warnings/highway/trunk_link - highway=trunk_link без указания oneway=*
TODO (что полезного можно улучшить/дополнить): todo/highway/trunk/no_maxspeed - для highway=trunk не задан тег maxspeed=* todo/highway/trunk/no_lanes - для highway=trunk не задан тег lanes=* todo/highway/trunk/no_lit - для highway=trunk не задан тег lit=* todo/highway/track/no_surface - для highway=track не задан тег surface=* todo/shop/no_opening_hours - для shop=* не задан тег opening_hours=*
Интересная вещь.
Но использовать сложно, т.к. просто перечень объектов в OSM.
Нельзя ли как-нибудь координаты выгружать тоже? Для node - её, для way - “центра масс” или просто первой точки.
OverQuantum
Да уж, результат получился не особенно наглядный. Поэкспериментирую, как можно показать ошибки маркерами поверх карты. Чем хороши ссылки на http://osm.org - для объекта сразу показываются теги; каким линиям точка принадлежит; каким отношениям принадлежит линия.
d1g
Главная цель этого скрипта - самому разобраться с моделью данных OSM, пощупать реальные данные (лучший способ разобраться - начать писать валидатор). Описывать логику на Python лично мне гораздо приятнее и полезнее, чем на Overpass (потому что я его не знаю). В общем, это стандартный путь - начать пилить свой велосипед, встать на все грабли, а потом перейти к стандартному решению (Overpass). Сайт/веб-сервис я делать не планирую (не интересно).
html файл с картой в Leaflet, ошибки отмечены как Marker; при клике выводится Popup(“Открыть на OSM.org”; “Открыть в JOSM”).
Недостатки:
а) При >1000 объектов браузер не открывается.
б) Для редактирования нужен переход в редактор.
Файл заметок JOSM. В целом, все хорошо.
Недостатки:
а) Кто-то по ошибке может нажать “Загрузить на сервер”.
б) Нельзя нарисовать линии.
GPX файл:
точки отмечены как waypoint с описанием
линии отмечены: начало, конец - waypoint с описанием; точки посередине - track.
Мне этот способ показался самым удобным.
Ну у меня интерес вида “увидеть все errors в Зеленограде” (или в другой зоне, существенно меньше целой области) и по возможности в JOSM-е.
Поэтому GPX или загружаемый в JOSM файл мне предпочтительнее.
Но и Leaflet подойдёт.
UPD: Немного поисправлял по GPX-у.
Если GPX, то надо 1 маркер на линию, а то кол-во надписей сбивает с толку - для замкнутых видно 1 надпись, а для незамкнутой - 2.
Дорожный объект не на дороге http://justworks.ru/perfect_osm/20160428/not_on_highway/map.htm
Указывает, когда highway=crossing, highway=traffic_signals, traffic_calming не находится на highway.
Для highway=crossing есть много случаев пересечения с railway=*, Wiki для этого предлагает railway=crossing. Возможно ложное срабатывание, когда объект попадает в выгрузку, а дорога нет!
Супер! Спасибо.
Телефоны поисправлял и ещё немного.
Вижу несколько странных вещей
На building=apartments - выдаёт “Здание без адреса”, хотя вроде бы полный комплект
Например: https://www.openstreetmap.org/way/36943476
Без addr:street, но building=yes такого нет
Это баг. Сработало правило, что на building={apartments, residential} должны быть теги addr:housenumber, addr:street. Не учел зеленоградскую схему адресации. Упростил правило, теперь для building={apartments, residential} будет требовать только addr:housenumber. Исправил.
Тут дело даже не в зеленоградской схеме, а в том, что во многих небольших населённых пунктах бывает так, что улиц вообще нет, а нумерация домов - сквозная, по населённому пункту.