RU:Шаблон для региона/Контроль
При взгляде на шаблон первой мыслью, наверное, будет: «что за титаническая работа! обновление этой страницы займёт, наверное, неделю!» Ну в некотором смысле да, у меня создание и заполнение страницы по Псковской области заняло три дня. Правда, это и придумывание критериев, и придумывание методов проверки, и когда, кажется, всё готово, сразу придумываются ещё пара очень важных критериев, и нужно снова перепроверять каждый город и каждый район. Сейчас шаблон закончен, и всё, что вам потребуется — последовательно провести каждую проверку по пунктам. Займёт это один выходной, но хорошая новость в том, что полная проверка должна проводиться всего один-два раза в год. В остальное время, конечно, страницу лучше не забывать и обновлять по мелочам: нарисовали много дорог — обновили квадратики, проехались на машине и прописали покрытие на трассах — обновили квадратики.
Важно знать, что все проверочные таблицы анизотропны: заполнять их сверху вниз займёт в несколько раз больше времени (и нервов), нежели слева направо. Поэтому этапы проверки должны быть не по районам, а по критериям (кроме городов, их как раз по порядку). Соответственно, не нужно очищать все поля шаблонных таблиц перед копированием, чтобы потом заполнить их отдельно для каждого района. Очерёдность действий примерно такая: убираете текст, если он есть в виде заглушки («г. Город»), копируете строчку таблицы нужное количество раз, затем первым делом вписываете все названия (районов, населённых пунктов, дорог), потом добавляете методом 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? отобразит все дороги с односторонним движением (можно объединить через «|»).