Ctrl + ↑ Позднее

Не только 64 бита

Вы помните о проблеме 2013 года, когда идентификаторы узлов в OpenStreetMap превысили 2³¹. Те, кто держит регулярно обновляемый сервер тайлов, вчера вечером могли заметить ошибку в логе osm2pgsql:

Osm2pgsql failed due to ERROR: insert_rel failed: ERROR: value «37945» is out of range for type smallint

Да, программа не ожидала, что на хранение количества членов отношения может не хватить двух байтов. Чтобы восстановить обновление, нужно откатить состояние до этого state.txt и убедиться, что osmosis скачивает диффов минимум на два часа. На гитхабе разработчики osm2pgsql обсуждают, как и где лучше ограничить размеры отношений.

Откуда взялось такое большое отношение? Это, слава богу, не мультиполигон. В Бразилии кто-то решил импортировать геодезические сети: 7700 точек плановой сети (для определения координат) и 38 тысяч — высотной (для определения высот). Не очень понятно, зачем в OSM последние: снимки по ним не привяжешь, а ЦМР по осму нормальные люди не корректируют. Но обсуждение импорта в почтовой рассылке не завязалось, а бразильскую группу в телеграме, куда сбежали осмеры, читать сложно.

Проблема оказалась в том, что все импортированные точки люди решили объединить в отношения. В вики с 2008 года предупреждают: отношения — не категории, не создавайте их для облегчения выкачивания данных. Есть же Overpass API, есть osmfilter. «Но мне же надо» — и получилось отношение из 38 тысяч точек. В течение пары минут после его загрузки у многих обвалился osm2pgsql и через полтора часа DWG откатила правку. По техническим причинам, так как формальности были соблюдены и скоро, видимо, точки вернут.

Большой ремонт мультиполигонов

Мультиполигон — это отношение с тегом type=multipolygon, содержащее линии в ролях inner и outer, образующие один или несколько замкнутых контуров. Их используют, чтобы нарисовать полигон с дыркой (например, дом со двором-колодцем) или не рисовать смежные полигоны по одним и тем же точкам. В принципе, если взять любой обычный полигон и навесить на него отношение с тегом type, он превратится в мультиполигон. Но так делать не стоит.

Если поставить теги на внешний контур, а не на отношение, такой мультиполигон будет считаться нарисованным в «старом стиле». Рендерер или osm2pgsql должны будут просмотреть все линии с ролью outer, убедиться, что теги совпадают, и использовать их для отрисовки. Теги на линиях внутренних контуров относятся к содержимому дырок, хотя иногда там можно встретить те же теги, что на внешнем контуре. Обрабатывать старые мультиполигоны сложно и долго.

«Новый» стиль тегирования мультиполигонов — это когда все теги на отношении. Что там висит на линиях контура — не важно. Рендерер сразу видит, что к чему, и не обязан просматривать каждый член отношения. Мультиполигоны в новом стиле нравятся всем, поэтому технари ратуют за истребление старых. Нужно перетегировать «всего» около 250 тысяч отношений, из 13 миллионов.

Йохен Топф предлагает делать это по ходу исправления сотен тысяч более важных ошибок в полигонах и мультиполигонах. К этому можно было приступить и раньше, взяв в помощь OSM Inspector, но планомерное истребление — не для всех. Иногда проще не видеть фронт работ, исправляя по ошибке за раз и имея выбор: нажать «следующая» или закрыть вкладку браузера. То есть, пойти в MapRoulette.

Зайдите сюда и посмотрите, что за задание в этот раз подготовил Йохен. Их довольно быстро выполняют, потому от раза к разу задания становятся всё больше. Прямо сейчас там ссылки для нескольких стран, включая Россию. Исправляют самопересечения, которых только у нас почти триста тысяч. По ходу можно встретить удивительные попытки рендерера нарисовать что-то вменяемое на месте ошибки. И, напоминает Йохен, не забывайте проверять, что теги мультиполигона висят на отношении.

Час созерцания карты

12 марта, в воскресенье, сервер базы данных OpenStreetMap отключат на час, с 14:00 до 15:00 по московскому времени. Возможно, управятся быстрее. В этот час лучше посмотреть свежую серию чего-нибудь на Netflix или в Амедиатеке, потому что на сайте останется работать разве что тайловый слой и поиск. Всё остальное — нет:

  • В API нельзя будет ничего загрузить, даже скачивать нельзя.
  • Войти на сайт не получится. Соответственно, на другие сайты, используя OAuth через OpenStreetMap, тоже. Это касается и форума.
  • GPS-треки, дневнички, просмотр пакетов правок и элементов карты отключат.

Работать с картой в этот час можно двумя способами. Либо скачать нужную область в JOSM за десять минут до отключения и обклацывать домики, чтобы не напороться на конфликт правок при загрузке через час-полтора. Либо установить MAPS.ME и пойти на улицу, искать новые заведения и обновлять время работы у уже обозначенных.

2017   osm.org

Все конференции весны-лета 2017

В эту субботу, уже почти послезавтра, в Минске пройдёт первая большая ГИС-конференция byGIS conference. Это будет день открытых данных, и хотелось упомянуть открытость в анонсе или внести конференцию в список тематических конференций этого дня, но не судьба: осмеров в Беларуси не так много, чтобы заполнить день, а остальные докладчики пришли с более серьёзными аббревиатурами. Начало в 11:00 четвёртого марта, вход платный — 40 белорусских рублей, это примерно 1200 русских.

15 марта пройдёт первая в году «схемотехника». Та самая объединённая мини-конференция ГИС-Лаба и OpenStreetMap. Снова в офисе Mail.Ru у метро «Аэропорт», в среду вечером, в 19:00. С прошлой встречи прошли три зимних месяца, там что есть надежда, что многим будет что рассказать. Заходите послушать и, главное, заходите выступить: как обычно, в формате «все свои», что у вас произошло, что сотворили, что узнали. Пишите темы на ilya@zverev.info и обязательно регистрируйтесь.

Одиннадцатая всемирная конференция State of the Map пройдёт 18-20 августа в городе Аидзувакамацу, это 260 км на север от Токио. Осмеры уже покупают билеты на самолёт: рейсы туда дорогие, лучше взять заранее. До 2 апреля продлится приём заявок на доклады. Как обычно, понадобятся заголовок и краткое описание.

Если участие обойдётся слишком дорого, подайте до 22 марта заявку на спонсирование поездки. Оргкомитет выберет участников, чей прилёт будет полезен и им, и осмерам, и покроет от трети до полной стоимости перелёта и проживания. Рабочая группа SOTMWG попробовала такой формат в прошлом году, и все — и организаторы, и участники программы — были довольны результатом.

К сожалению, европейской конференции State of the Map пока никто не анонсировал. Если не считать State of the Map France в Авиньоне 2-4 июля: французы проводят великолепные ежегодные конференции с одним лишь недостатком, из-за которого нам неудобно участвовать. Немцы уже приготовились выступать на FOSSGIS в Пассау 22-25 марта, но у этой конференции тот же недостаток.

Жители других, далёких континентов уже объявили свои региональные конференции: State of the Map Africa в Уганде 1-3 июля и State of the Map Latam в Перу с 29 ноября по 2 декабря. Как показал опыт, тем, интересных для жителей северного полушария, там немного.

Это оставляет нам европейскую версию главной ГИС-конференции планеты, FOSS4G Europe. Она пройдёт 18-22 июля, по словам организаторов, на полпути между Парижем и парижским дисней-лендом. Заявки на доклады они принимают до 17 марта — почти как на основной FOSS4G, который пройдёт в Бостоне, США 14-19 апреля.

Кнопка каждая важна

На сайте openstreetmap.org новость: нажатие правой кнопки мыши на карте больше не выводит меню браузера. Теперь там меню сайта с традиционными для веб-карт пунктами: построить маршрут, посмотреть адрес, получить список объектов. Не нужно перетаскивать маркеры и не нужно целиться в кнопки со знаком вопроса или заметкой. Подсматривать адрес тайла и дёргать /dirty стало сложнее.

Все остальные веб-карты давно перехватывают нажатие правой кнопки. Google Maps его просто игнорирует, Яндекс.Карты тоже не откликаются (даже в редакторе, как ни странно), но двойное нажатие правой кнопки уменьшает масштаб, в противовес левой кнопке мыши. Так же ведёт себя новый сайт Карт Спутника.ру (в пятницу они обновили дизайн), но по одиночному клику показывает меню. Меню по правой кнопки мыши выпадает и у Bing Maps, самое красивое и полезное из всех: только в нём есть пункт «скопировать координаты».

Традиционно для нашего сайта, пул-реквест Дэна Стауэлла висел с августа 2015 года. Неделю назад Стефан Келлер нашёл его и написал, что ему часто жалуются на отсутствие всплывающего меню на osm.org. За шесть часов решили все проблемы и вчера Том, наконец, решительно нажал кнопку «Merge».

В этом году сайт развивается быстрее прежнего: недавно улучшили оформление писем и ограничили размер пакета правок. Четвёртого января неожиданно и неожиданно быстро, всего за семь часов, на сайт добавили слой GPS-треков. Тот самый, да. Наконец, на этой неделе все сервисы переводили на Let’s Encrypt: помимо прочих, SSL-сертификат появился у домена osm.org, так что короткие ссылки стали безопасными.

Уточнение: В Google Maps и Яндекс.Картах есть меню по правой кнопке мыши. Оно появляется не во всех браузерах. В комментариях к этой заметке есть иллюстрации. Так что OSM, действительно, последним пришёл к такому решению — а мы даже не заметили, что отстаём.

2017   osm.org

Новая резалка по-новому режет

Пару недель назад Йохен Топф рассказал про новую функцию osmium-tool: режим extract для вырезания областей. Диаграммы в заметке показывают, что osmium вырезает в два-три раза быстрее, чем osmconvert. То есть, как когда-то osmconvert заменил osmosis, потому что был не в пример быстрее, так теперь osmium, кажется, может заменить его.

Я решил сравнить утилиты чуть тщательнее и взял файл планеты в pfb от 30 января. Сделал его копию в o5m — формат стал популярен именно из-за osmconvert, который обрабатывает его чуть быстрее других. И поскольку osmuim не умеет писать в o5m, а только читает, сравнил скорость преобразования обратно в pbf:

33 минуты против 86! Серьёзная заявка на победу. Причина проста: osmium многопоточный. Пока osmconvert вяло крутит 70% одного ядра процессора, его конкурент задействует 265%, то есть, около трёх ядер. Отсюда и разница в 2,6 раза.

Для проверки вырезания регионов я взял Мюнхен, который в pbf займёт примерно 200 мегабайт. Вырезал по прямоугольнику и по полигону из 1200 точек. У обоих утилит есть настройка полноты вырезанных данных: простой режим сохраняет только те точки, что попали в область обрезки. Сложный «complete ways» досыпает точек за пределами области, которые принадлежат линиям изнутри её. То есть, в итоговом файле не будет неполных линий. Режим «complex ways» («smart» в osmium) дополнительно сохраняет целостность мультиполигонов.

Как видно, при работе с pbf osmium в полтора-два раза быстрее osmconvert. Разумеется, за счёт многопоточности. Но с o5m работать в несколько потоков не получается, поэтому столбцы красного оттенка отличаются несильно. Как видно, нет такого режима выгрузки, в котором osmium не превзошёл бы osmconvert.

Превосходство будет ещё заметнее, если не читать файл планеты для каждого региона отдельно, а вырезать несколько регионов за раз. Да, osmium это умеет. Правда, требует очень много памяти: Йохен советует сначала вырезать континенты, затем группы стран и так далее. Понадобится написать файл конфигурации, как описано в документации. В январе на многопоточное одновременное вырезание регионов перешли в Geofabrik, ускорив подготовку выгрузок с 10 до 4 часов.

А теперь непонятная диаграмма, дополняющая предыдущую:

Утилита time, которой я замерял время работы, выдаёт «real time», время от запуска до остановки, и «user time»: время процессора, затраченное исключительно на приложение. И если я правильно понимаю, osmium оказался менее оптимизированным, чем osmconvert, но он эффективнее использует ресурсы компьютера.

Итак, osmium может заменить osmconvert, и почти всегда окажется быстрее. Кроме того, он позволит снять зависимость от формата o5m, который хоть и поддерживается osm2pgsql и другими программами, основанными на libosmium, но требует больше места и дополнительной конвертации. Что с другими приложениями из комплекта osmctools?

Osmupdate удобен простым обновлением выгрузки или файла планеты. Достаточно указать в параметрах имя существующего и нового файла, и получим данные из OpenStreetMap на минуту запуска. Умеет ли подобное osmium-tool? Нет, к сожалению. Но osmupdate — лишь надстройка над wget и osmconvert, скачивающая файлы репликации и передающая в osmconvert для объединения и применения к исходному файлу. Osmium-tool может делать всё, что умеет osmconvert, и возможно слегка переписать osmupdate, чтобы он запускал его вместо osmconvert (и заодно curl вместо wget). Или встроить подобную функциональность в osmium — увы, пока этого никто не сделал.

Но в плане сравнения производительности можно посмотреть на время обновления файла планеты диффом за одни сутки:

Как и обещала справка osmconvert, файлы в формате o5m он обрабатывает быстрее. Как показали прошлые замеры, osmium работает быстрее независимо от формата.

Заменой для osmfilter должен стать osmium-filter. Мне удалось его скомпилировать, но я так и не разобрался в его формате запросов. Инструкция из readme не помогла. Поэтому сравнивать пока нечего. Увы, именно osmfilter требует формата o5m, поэтому если в ваш процесс обработки данных входит, например, фильтрация береговой линии, полностью снять зависимость от o5m не получится.

И ещё одно может стать препятствием: пакет osmctool очень редко обновляется, и потому он достаточно свеж во всех дистрибутивах Linux. А режим extract в osmium-tool появился только в версии 1.5, которая на этот момент загружена только в репозитории Debian (jessie-backports) и, конечно, AUR для Arch Linux. В Fedora устанавливается версия 1.4.0, а в Ubuntu — вообще 1.3.1. Для этих систем придётся собирать osmium-tool из исходников.

Тестирование проводилось на среднем по характеристикам ноутбуке Asus с четырёхъядерным i7-4700 @ 2,4 ГГц с гипертредингом, 12 гигабайтами памяти и каким-то HDD.

Грузим точки

Знаете, бывает иногда: договорились с какой-нибудь «Пятёрочкой», что они откроют данные для загрузки в OpenStreetMap, месяц пробирались сквозь бюрократию, получили заветный файл в формате CSV... И что? Допустим, сделали из него OSM XML и открыли в JOSM. Там восемь тысяч точек, которые нельзя просто взять и загрузить: в OpenStreetMap половина уже отмечена, часть — полигонами или отношениями, ещё минимум тысяча не подписана. Перелопачивать весь массив долго, монотонно и уныло. А на подходе уже «Магнит», который прознал про нашу лучшую в мире карту и готовит свои девять тысяч точек. И через месяц — обновление.

Пока в MAPS.ME обращались небольшие компании с сотней-другой точек, мы махали рукой и просили либо разобраться в OSM самостоятельно, либо подождать, пока кто-нибудь напишет скрипт. Но вы знаете основной принцип открытого проекта, так что теперь такой инструмент есть. Задачу из первого абзаца легко решит OSM Conflator.

Это скрипт на Python 3, который принимает профиль с настройками импорта и функцией подготовки данных. Он скачивает свежий набор, запрашивает у Overpass API подходящие объекты из OpenStreetMap и сопоставляет точки из обоих наборов. Геометрия из OSM считается эталонной, как и все теги, кроме заранее определённого набора (например, времени работы, которое поставщику данных лучше знать). Существующим объектам скрипт досыпает тегов, добавляет новые точки туда, где в OSM ничего нет, и выдаёт файл osmChange.

Дальше его можно напрямую загрузить в OpenStreetMap, но это нехорошо, противоречит руководству по импортам. Правильнее будет открыть файл в JOSM, проверить глазами, что ничего не сломалось и теги правильные, а затем выдать профиль и файл на обсуждение сообществу. Именно это я проделал со списоком паркоматов Москвы, полученных с портала открытых данных: до пятницы можно поискать ошибки в файле osc и профиле, после чего паркоматов в OSM станет на 765 больше.

Если не хочется импортировать, или владелец данных не дал явного разрешения, можно обойтись валидатором CupIvan. Он примерно так же сравнивает данные OSM и официального источника, но вместо загрузки выводит таблицу, где видны неправильные значения тегов, лишние и отсутствующие объекты. Исправлять приходится по одному объекту за раз, зато нет головной боли с обсуждением импорта в сообществе. Иван давно не обновляет валидатор, эстафету за последние три года перехватывали dndred, KoolRu и Avlaak. Последние два даже обновляют данные.

2017   импорт

Весь покрытый снимками

Это пустыня Симпсона в центре Австралии. Крупнейшая в мире песчано-дюнная пустыня с длиннейшими в мире дюнами. В ней нет городов, реки и озёра пересыхают, а летом туда даже запрещён въезд: нерадивые водители терялись. Нет ни единой причины покупать детальные космические снимки пустыни для публикации в интернете. Но Bing Maps купил. Можно обрисовывать дюны в редакторах OpenStreetMap.

Месяц назад Katpatuka посетовал в твитере на возраст снимков Bing. Прошло время, когда мы искали новые каждый квартал. Внезапно, ему ответил Рики Брандритт, старший менеджер Bing Maps: «мы обновляем наши снимки по всему миру, и через пару месяцев закончим».

Спустя пять дней в их блоге появилась заметка про 8,5 миллионов км² снимков для Бразилии. Если заглянуть в википедию, это ровно площадь страны. Второго февраля в новой заметке объявили об ещё 10 миллионах км²: свежими снимками покрыли всю площадь Австралии и Индии.

Как полагается большой компании, Bing Maps не раскрывает своих планов заранее. Но эти новости дают надежду каждому осмеру: вдруг их город или деревня попадут в следующее обновление? 17 миллионов км² России — неподъёмная площадь даже для российских заказчиков, но если Bing Maps хотят быть первым порталом с детальными снимками на всю площадь суши, им придётся её осилить. И лучше не думать о том, как часто они смогут всё это обновлять.

Дело о нотариусах

(Фотография с пикабу)

Если кто-то хочет ввести в вики OpenStreetMap новый тег, нужно создать для него пропозал: страницу, объясняющую суть, модель тегирования и чем тег поможет. Процесс древний и хорошо документированный. Создав страницу, начните обсуждение в рассылку tagging@, через пару недель запускайте голосование, и его результаты покажут, насколько тег интересен другим мапперам. Правда, в рассылке живут около ста человек, голосуют 15-20, причём редко те же люди, которые тег потом будут использовать.

Пользователь Math1985 полгода назад проследил, как пропозалы, устаревания, картостиль и пресеты (заготовки) редакторов влияют на популярность тегов. Он воспользовался гениальной страницей Мартина Райфера, которая строит график популярности для любого количества тегов. Исследование Math1985 показало, что картостиль не влияет никак, вики влияет лишь поверхностно, а вот пресеты побеждают всё. Наиболее показателен случай shop=seafood против shop=fishmonger: в 2010 году первый победил второй в вики-голосовании, но благодаря Potlatch 2 и iD значений fishmonger было больше до 2014 года, когда пресеты в iD поправили.

Месяц назад один человек обозначил офис нотариуса как office=lawyer, а другой заметил это и вместо того, чтобы добавить уточняющий тег lawyer=notary, перетегировал в office=notary. Я про такой вариант не знал, на вопрос мне ответили, что этот тег указан в пресетах JOSM. Два тега для обозначения одного и того же — ненормально, поэтому углубляемся в историю.

В мае 2010 года в вики создали страницу для ключа office и 12 его популярных значений, включая office=lawyer. На странице для последнего сразу указали три возможных уточняющих тега, среди них — lawyer=notary. В тот месяц в рассылку tagging@ написали полтысячи писем, включая обсуждение shop=fishmonger, но не про office. Тем не менее, сразу после описания в вики на карте начали появляться офисы нотариусов, обозначенные задокументированной парой тегов.

Спустя четыре года, в марте 2014, пользователь CMartin отредактировал таблицу значений тега office, добавив туда пять строк, включая office=notary. На личное письмо он ответил, что обсуждения не было, он лишь внёс заметные значения из таблицы Taginfo. Через полгода строчку в таблице заметили и в её описании сослались на устоявшийся способ тегирования: office=lawyer. В таком виде список провисел до ноября 2016 года, когда Math1985 заменил его на автогенерируемый из Taginfo.

В ноябре 2015 года Klumumbus вытащил список значений office в заготовки JOSM. К этому моменту в базе было примерно 240 тегов office=notary против 860 lawyer=notary. Разумеется, после выхода новой версии JOSM первый график рванул вверх, а второй замедлился. На этот момент первый ещё не вырвался вперёд: у нас 925 office и 1020 lawyer. Росту способствовала и короткая вики-страница тега, которую, не разобравшись, создал Math1985. Он даже не упомянул альтернативный тег.

Ошибка налицо, в январе этого года я решил её исправить, создав тикет в JOSM на замену тега в заготовках. Увы, это непросто: подошёл человек из Бразилии и рассказал, что там нотариусы не являются юристами. Klumbumbus подхватил его мысль, предложив, если что-то не нравится, пройти в рассылку tagging@. Железный аргумент, фиг оспоришь. А остановки — не дороги, почему они в highway? Или почему аптеки — amenity, когда там торгуют?

Другими словами, название тега и значение тега — разные вещи. BushmanK целый год по-всякому объясняет это в своём дневнике. Проблема здесь не в обозначении, а в двух тегах для одного и того же. Благодаря бездумному копированию из таблиц, оба набора тегов теперь используются примерно одинаковое количество раз. Именно это я хочу исправить: давайте выберем один и будем его придерживаться. И у office=notary нет никаких преимуществ, кроме присутствия в заготовках JOSM.

Борьба продолжается: я только что написал в рассылку tagging@ и не ожидаю, что все её читатели легко согласятся. Впереди, наверное, и пропозалы, и голосования. Тем временем, влияние JOSM на статистику должно ослабнуть. Не потому, что началась дискуссия. А потому что в редакторе iD в субботу тоже добавили пресет для нотариуса. С правильными тегами.

Почтовый дизайн

Вчера в код сайта приняли правку Hervé Saint-Amand, в которой он превращает почтовые уведомления OpenStreetMap из технического текста в приятно и понятно оформленные письма. Теперь сразу видно, откуда пришло письмо: название проекта упоминается не только в теме, но и крупно, вместе с логотипом в заголовке. Текст сообщения же не спрятан среди технической информации и знаков «=», а выделен цветом и шрифтом.

Новый формат писем требует от почтовых клиентов поддержки HTML. Увы, не все его отображают правильно: например, в Outlook съехало слово «OpenStreetMap». Автор просит проверить вид писем в разных приложениях и поместить отзыв и скриншоты в вики-таблицу. Сейчас там не хватает The Bat и веб-клиентов Яндекса и Mail.ru.

2017   osm.org
Ctrl + ↓ Ранее