User:Aleksandr Dezhin/Проверка границ

From OpenStreetMap Wiki
Jump to: navigation, search

Ссылка: http://dezhin.gis-lab.info/ru-check/

Ветка на форуме: http://forum.openstreetmap.org/viewtopic.php?id=6652

Исходные данные и обновление

Дампы с GisLab.info + на них накладываются некоторые релейшны, которые выкачиваются отдельно.

Обновление ежедневно начиная с 09:45 по Москве и длится минут 30. Во время обновления возможны разные странности в работе.

Условные обозначения ;)

Граница (B) - Area and boundary=administrative and admin_level=0-9

Населенный пункт (S) - Area and (place=city,town,village,hamlet or (boundary=administrative and admin_level=10))

boundary=* полигон или линия?

Сама по-себе замкнутая линия(не мультиполигон!) с тегом boundary=* не приводит к появлению полигонального объекта, поскольку:

  • изначально этот тег предлагался именно для обозначение линейных объектов, таких как граница двух государств
  • такая трактовка приводила бы к довольно забавным неоднозначностям, например безымянный анклав одного государства внутри другого приводил бы к появлению отдельной полигональной сущности.

Поэтому для того, чтобы замкнутая линия трактовалась как полигон необходимо добавить к ней тег area=yes.

Типы ошибок

Топологическая ошибка в геометрии (TOPO)

Используется стандартная проверка PostGIS.

Пересечение населенных пунктов (S_OVERLAP)

Одна и та же территория не может находится на территории двух населенных пунктов.

Пересечение границ на одном уровне (BL_OVERLAP)

Отверстие в границе (B_HOLE)

Заполнение границы одного уровня (У1) границами другого уровня (У2), более чем на 70% по площади, но менее чем на 100%. Площадь считается в квадратных градусах. Вероятные причины:

  • некорректный мультиполигон на уровне У2
  • полигон на уровне У2 обозначен замкнутой линией без area=yes
  • не нарисовали еще ;)

Безымянный объект (NONAME)

Населенный пункт или граница без имени - place=* или place_name=*

Пересечение границы и населенного пункта (SB_OVERLAP)

Неправильный уровень границы (B_BAD_LEVEL)

НП внутри НП (S_WHITHIN)