perfect_OSM - простенький парсер для OSM XML

https://github.com/Leaflet/Leaflet.markercluster — работает с миллионами точек.

RiG’s,
Примерно вот в таком виде подойдет?

Москва, бесполезные точки, пустые линии:
http://justworks.ru/perfect_osm/2016_04_05/MOW/example/markers.html

Zverik,
Спасибо, полезная штуковина.

Подойдет, только загрузку в JOSM поправьте, посмотрите как у других валидаторов это реализовано

Ну у меня интерес вида “увидеть все errors в Зеленограде” (или в другой зоне, существенно меньше целой области) и по возможности в JOSM-е.
Поэтому GPX или загружаемый в JOSM файл мне предпочтительнее.
Но и Leaflet подойдёт.

UPD: Немного поисправлял по GPX-у.
Если GPX, то надо 1 маркер на линию, а то кол-во надписей сбивает с толку - для замкнутых видно 1 надпись, а для незамкнутой - 2.

Сделал очередной проход по всем регионам.

Бесполезные точки:
http://justworks.ru/perfect_osm/20160428/node_useless/map.htm (37319 шт.)
Точки без тегов, не входящие в линии и отношения.

Бесполезные линии:
http://justworks.ru/perfect_osm/20160428/way_useless/map.htm (18426 шт.)
Линии без тегов, не входящие в отношения.
Очень часто отображают реальную геометрию, но без тегов бесполезны (пример).

Дорожный объект не на дороге
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.
Возможно ложное срабатывание, когда объект попадает в выгрузку, а дорога нет!

Некорректный тип объекта:
http://justworks.ru/perfect_osm/20160428/bad_type/map.htm (13336 шт.)
Попытка сопоставить тип объекта для тега (или пары тег=значение), указанного в Wiki с реальными данными.

“Идеальные трассы”:
http://justworks.ru/perfect_osm/20160428/perfect_trunk/map.htm
Указывает, где на highway=trunk не установлены теги lit, lanes и maxspeed, а для trunk_link - тег oneway.

Некорректный формат телефона
http://justworks.ru/perfect_osm/20160428/bad_format/map.htm
Формат телефона не соответствует указанному в Wiki (не знаю, насколько это важно на самом деле)

Первичные данные по всем регионам: http://justworks.ru/perfect_osm/20160428/data.zip (270 мб)
CSV файл с замечаниями по всем регионам: http://justworks.ru/perfect_osm/20160428/all_issues.csv.zip (19 мб)

Отдельно сделал выгрузку по Зеленограду командами:

wget http://overpass-api.de/api/map?bbox=36.9724,55.9134,37.3837,56.0881 -O map.osm
python3 perfect_OSM.py map.osm issues
python3 csv2map.py issues/issues.csv map

Архив: http://justworks.ru/perfect_osm/20160428/ZEL/data.zip
Карта: http://justworks.ru/perfect_osm/20160428/ZEL/map/map.htm

При выгрузке область желательно выбрать больше, чем интересующая область - тогда все объекты попадут в .osm файл.

Супер! Спасибо.
Телефоны поисправлял и ещё немного.

Вижу несколько странных вещей

  1. На building=apartments - выдаёт “Здание без адреса”, хотя вроде бы полный комплект
    Например: https://www.openstreetmap.org/way/36943476
    Без addr:street, но building=yes такого нет

  2. Что тут не так?
    https://www.openstreetmap.org/way/165051502
    “Некорректный тип элемента”
    amenity=bicycle_parking на линии вроде бы допустим по вики

https://www.openstreetmap.org/node/1055522365
“Некорректный тип элемента”
landuse=industrial на точке вроде бы допустим по вики

addr:place ?

Что “addr:place”? См. зеленоградскую схему адресации.
Вот на это здание нет сообщения “Здание без адреса”: https://www.openstreetmap.org/way/36943479

Значит на apartments так реагирует

Это баг. Сработало правило, что на building={apartments, residential} должны быть теги addr:housenumber, addr:street. Не учел зеленоградскую схему адресации. Упростил правило, теперь для building={apartments, residential} будет требовать только addr:housenumber. Исправил.

Тут дело даже не в зеленоградской схеме, а в том, что во многих небольших населённых пунктах бывает так, что улиц вообще нет, а нумерация домов - сквозная, по населённому пункту.

http://wiki.openstreetmap.org/wiki/RU:Key:amenity

  1. Для ключа amenity разрешенные типы: точка, полигон, отношение. Линии нет.
  2. Для amenity=bicycle_parking разрешенные типы: точка, полигон. Линии нет.

http://wiki.openstreetmap.org/wiki/RU:Tag:amenity%3Dbicycle_parking
Для amenity=bicycle_parking разрешены все типы: точка, линия, полигон, отношение.

Добавил линию как разрешенный тип для ключа amenity.

http://wiki.openstreetmap.org/wiki/RU:Key:landuse

  1. Разрешенные типы для ключа landuse: полигон, (под вопросом) отношение. Точки нет.
  2. landuse=industrial: точка, полигон.

http://wiki.openstreetmap.org/wiki/RU:Tag:landuse%3Dindustrial
landuse=industrial: точка, полигон, (под вопросом) отношение

Добавил точку как разрешенный тип для ключа landuse.

Сделал повторно выгрузку для Зеленограда:
Карта: http://justworks.ru/perfect_osm/20160430/map/map.htm
Карта (убрал opening_hours, fixme, surface): http://justworks.ru/perfect_osm/20160430/act_map/map.htm
Исходные данные: http://justworks.ru/perfect_osm/20160430/issues.zip

Поисправлял вёб-сайты.
Остальное не могу исправить.

Ещё комментарий - не парсятся множественные значения, например https://www.openstreetmap.org/node/2705402397
contact:website=http://zelao.mos.ru;http://www.zelao.ru/ - оба доступны

OverQuantum

Карта: http://justworks.ru/perfect_osm/20160503/ZEL/act_map/map.htm

Сделал проверку ref, int_ref у дорог класса highway=trunk на соответствие: http://wiki.openstreetmap.org/wiki/RU:Key:ref?uselang=ru

Карта: http://justworks.ru/perfect_osm/20160504/trunk_ref/map.htm

Обнаружилось много идентификаторов вида ref=“71-100К-12”, хотя Wiki требует 2х значного кода региона перед буквой “К”.
Это какое-то исключение?

Это такой хак туп*х чиновников. В противном случае получит кучу одноимённых дорог 71К-12 для каждого муниципального образования.

Понятно, значит это такое распространенное исключение.

Сделал повторный проход.
Карта: http://justworks.ru/perfect_osm/20160505/trunk_ref/map.htm

“М-5, AH6, E-30” - неправильный разделитель: ‘,’ вместо ‘;’ (правильным считаю http://wiki.openstreetmap.org/wiki/Semi-colon_value_separator))
“М-3; А108” - А108 вместо А-108; “AH70;E40” вместо “AH70;E 40”
“P321” вместо “Р-321”, “М4” вместо “М-4”
и так далее.

Выглядят как исключения:
“18К-02-26”, “А89К-08”; “50К-17р”; “А-23” и другие в Крыму