RU:Шаблон для региона/Контроль

From OpenStreetMap Wiki
Jump to navigation Jump to search

При взгляде на шаблон первой мыслью, наверное, будет: «что за титаническая работа! обновление этой страницы займёт, наверное, неделю!» Ну в некотором смысле да, у меня создание и заполнение страницы по Псковской области заняло три дня. Правда, это и придумывание критериев, и придумывание методов проверки, и когда, кажется, всё готово, сразу придумываются ещё пара очень важных критериев, и нужно снова перепроверять каждый город и каждый район. Сейчас шаблон закончен, и всё, что вам потребуется — последовательно провести каждую проверку по пунктам. Займёт это один выходной, но хорошая новость в том, что полная проверка должна проводиться всего один-два раза в год. В остальное время, конечно, страницу лучше не забывать и обновлять по мелочам: нарисовали много дорог — обновили квадратики, проехались на машине и прописали покрытие на трассах — обновили квадратики.

Важно знать, что все проверочные таблицы анизотропны: заполнять их сверху вниз займёт в несколько раз больше времени (и нервов), нежели слева направо. Поэтому этапы проверки должны быть не по районам, а по критериям (кроме городов, их как раз по порядку). Соответственно, не нужно очищать все поля шаблонных таблиц перед копированием, чтобы потом заполнить их отдельно для каждого района. Очерёдность действий примерно такая: убираете текст, если он есть в виде заглушки («г. Город»), копируете строчку таблицы нужное количество раз, затем первым делом вписываете все названия (районов, населённых пунктов, дорог), потом добавляете методом copy-paste ссылки на википедию, если нужны, затем так же впечатываете в заглушки номера отношений или узлов (вы ведь не удаляли {{relation|}}?). После этого таблица готова к заполнению результатами контроля.

Ещё хочу обратиться к проверяющим с просьбой: никаких «так сойдёт» при выставлении высшей оценки. Свойство дороги поставлено на 500 километрах, но пропущен один короткий мост? Уже 3. Расставлено 99% деревень? 3. Описанные методы не проверяют правильность данных, но ошибки тоже не дают балла. Если где-то стоит оценка 4, она означает, что к этому параметру карты возвращаться больше не нужно.

Здесь описаны только шаги проверки, критерии вынесены на отдельную страницу.

Автодороги

{{State | c=треки | ju=ref | w=surface | sp=maxspeed | ln=lanes | lit=lit }}

Для контроля, если не хотите свернуть мозг, вам потребуется замечательный рендер-игрушка Maperitive, дамп своей области и набор стилей. Распаковываете маперитив, затем распаковываете в его каталог Rules стили. Дальше для удобства запишите в Scripts/default.txt (разумеется, путь будет к вашему файлу):

set-setting name=map.decoration.grid value=False
set-setting name=map.coastline.mode value=ignore
use-ruleset location=Rules/tref.txt
load-source d:\downloads\region.osm.bz2

И запускайте Maperitive.exe. После этого все дороги, имеющие ref, подсветятся, а int_ref — оконтурятся. Вот вам и данные по идентификации. Записав результат, переходим к следующему стилю:

use-ruleset location=Rules/tsurf.txt
apply-ruleset

Здесь подсвечиваются дороги, у которых указано покрытие. Оконтуриваются же дороги с прописанным lanes (количеством полос).

use-ruleset location=Rules/tlit.txt
apply-ruleset

В этом стиле подсвечены дороги с прописанным режимом освещения (lit=*), контур рисуется при отмеченном скоростном режиме (maxspeed или maxspeed:practical). Поскольку это самые сложные для сбора данные, скорее всего, у вас почти вся карта будет серой. Ну и ладно.

Покрытие GPS-треками проверяется «в лоб», загрузкой в редактор треков из разных фрагментов трасс и максимальным приближением для подсчёта линий. А качество привязки — когда будете его править.

Железные дороги

{{State | ru=полотно | s=station | ha=halt | p=вокзалы | tm=route }}

Вся проверка делается по ЕСР-валидатору. Там подсвечены зелёным существующие объекты. Для качества 3 нужно, чтобы совпадали типы: station для станций и halt для остального. Для поиска зданий вокзалов введите в Maperitive:

use-ruleset location=Rules/tbus.txt
apply-ruleset

Это стиль для автобусов, но там будет значок поезда, где указаны здания.

Общественный транспорт

{{State | ha=остановки | bu=городские автобусы | c=маршрутки | ex=пригородные | rl=качество отношений }}

Раз уж загрузили автобусный стиль, сразу удобно проверить покрытие для общественного транспорта (если оно вам нужно). Первым делом нужно записать обнаруженные автобусные станции (квадратный значок автобуса). Затем оценить плотность остановок в районах. И, наконец, приблизиться к городам и проверить наличие и плотность транспортных сетей. Автобусные линии отмечаются синим, троллейбусные — зелёным, трамвайные — красным, маршруточные — жёлтым. Как вариант, можно посмотреть openbusmap.org.

Остаётся узнать качество отношений. Формально для этого потребуется загрузить в редактор каждое отношение, но не обязательно быть педантом. Процентов 10-30 достаточно репрезентативно. Учтите, что разные виды транспорта рисуются, обычно, разными людьми, и качество у них разное.

Муниципальные районы

{{State | c=дороги | b=грунтовки | t=place | fu=заправки | w=вода | n=зелёнка | h=полигоны place }}

Грунтовки и заправки

И это проверяется маперитивом.

use-ruleset location=Rules/tfuel.txt
apply-ruleset

Коричневые линии — это track и path, значки — заправки, автомагазины и автосервисы.

Зелёнка и гидрография

Эти параметры легко видны на основной карте на osm.org. Просто на 11 зуме пройдитесь по области. Воду лучше видно на слое osmarender, леса и поля — на mapnik. Впрочем, воду можно тоже посмотреть в маперитиве:

use-ruleset location=Rules/twater.txt
apply-ruleset

Населённые пункты

Вся информация — в валидаторе ОКАТО. Для высшей оценки, скорее всего, придётся копаться в областных постановлениях: зато после этого вопрос можно считать полностью закрытым.

Полигоны place проверяются тоже маперитивом:

use-ruleset location=Rules/tplace.txt
apply-ruleset

Там всё просто, считайте чёрные контуры. Крестиками обозначены village, а town и city подписаны. Красными контурами очерчены садоводства.

Дорожная сеть

О-о-о, это самое сложное. Сначала в том же маперитивном стиле tplace.txt посмотрите на плотность дорожной сети по районам и оцените её от 0 до 3. Но: если есть крестики, не подключенные к дорожной сети, качество может быть максимум 1. Дальше нужно оценить процент связанных НП, и может быть два решения: на глаз и точное.

Чтобы оценить связность на глаз, зайдите на соответствующий валидатор (в этот момент он не работает, но не теряем надежды) и посчитайте на 11-12 зуме кружочки по районам. Потом сравните это число с количеством НП по валидатору ОКАТО (зелёное число + красное число + половина жёлтого).

Сложный путь заключается в установке PostgreSQL и PostGIS, скачивании osm2pgsql, распаковке его куда-нибудь, копировании туда дампа области (который у вас уже выкачан, разумеется) и запуске утилиты:

osm2pgsql.exe -s -c -S default.style -U osm -m region.osm.bz2

Здесь в ключе -U указывается пользователь, владеющей базой gis. Ему должно быть позволено заходить без пароля, для этого в файл %POSTGRES_DIR%/8.3/data/pg_hba.conf нужно добавить строки:

host    gis         osm         127.0.0.1/32          trust
host    gis         osm         ::1/128          trust

Поздравляю, вы выполнили две трети работы по настройке локального рендеринга мапником :) Но нам это нужно лишь для одного SQL-запроса. Запустите pgAdmin, подключитесь к базе gis, нажмите кнопку «SQL» и скопируйте туда:

select a.region, case when b.cnt is null then 0 else round(100.0*b.cnt/a.cnt) end as rate
from (
	select r.name as region, count(p.osm_id) as cnt
	from planet_osm_point p
	join planet_osm_polygon r on (ST_Within(p.way, r.way))
	where p.place is not null and r.admin_level='6'
	group by r.name
) a left outer join (
	select r.name as region, count(p.osm_id) as cnt
	from planet_osm_point p
	left outer join planet_osm_line l on (l.highway is not NULL and ST_DWithin(p.way,l.way,3000))
	join planet_osm_polygon r on (ST_Within(p.way, r.way))
	where p.place is not null and r.admin_level='6'
	and l.osm_id is null
	group by r.name
) b on (b.region = a.region)
order by a.region

Нажмите F5 и получите процент несвязанных населённых пунктов в каждом районе. Скорее всего, там будут и сопредельные районы соседних областей и городские округа, которые вам не нужны. Процент связанности равен 100 минус процент несвязанности, разумеется.

Сложный путь можно упростить, попросив кого-нибудь с настроенным PostGIS сделать всё это за вас, например.

Городские населённые пункты

{{State Place | c=улицы | fo=footway | l=названия улиц | h=housenumber | p=amenity, shop | t=tourism, historic | r=еда, ночлег | fu=fuel, car shop | tr=остановки | ru=роутинг | n=landuse }}

Все проверки для населённых пунктов можно делать на глаз по стандартному мапниковскому слою osm.org. Улицы, пешеходные дорожки и землепользование видны на 14-м зуме, названия — на 15-м, номера домов и POI — на 17-м. Количество отношений для роутинга можно оценить по валидатору (работает странно).

Дальше лучше запустить JOSM. Типичный город (или его район) как раз должен влезать в один запрос к API. Добавьте под слой данных снимок «OpenStreetMap» и понизьте непрозрачность до примерно 25%, чтобы не мешал. Затем в окне фильтров (кнопка с такой серой воронкой) добавляйте фильтры для каждого из критериев (у каждого нужно включить галочки «H» и «I»):

  • адресация: "addr:housenumber" | "addr:interpolation"
  • заправки: amenity=fuel | shop:car
  • остановки: highway=bus_stop | railway=tram_stop | amenity:bus | public_transport=*
  • туризм: historic | place_of_worship | shop=gift | tourism -tourism:tel -tourism:guest
  • еда и ночлег: tourism:tel | tourism:guest | amenity=restaurant | amenity=cafe | amenity=pub | amenity=bar | amenity:food
  • POI: включите фильтр «еда и ночлег», снимите галочку «I». Строка для нового фильтра: (shop -shop:car) | amenity -amenity:worship -amenity:fuel -amenity:parking (оба фильтра включить одновременно)
  • роутинг: child(type:relation type=restriction) покажет все элементы ограничений поворотов, oneway? отобразит все дороги с односторонним движением (можно объединить через «|»).