OpenStreetMap

LLlypuk82's Diary

Recent diary entries

Преамбула

Актуальные карты в навигаторе перед поездкой или походом — залог успеха для путешествующих людей. Но, поскольку есть ряд причин, которые могут помешать (и мешают) получить такие карты в готовом виде от обычных энтузиастов, которые по доброй воле тратят свои ресурсы (время, знания, мат. средства) на подготовку и выкладывание в свободный доступ, то считаю очень полезным умение делать это самостоятельно.

Периодически возникают ситуации, когда пропадает доступ к скачиванию файлов, останавливается налаженная автоматическая конвертация, возникают ошибки в конвертации и т. п., а также не всегда удобно и целесообразно выкачивать гигабайты (напр. все страны СНГ) и потом запихивать их в навигатор ради получения карты одной страны или региона, размер файла карты которого составляет всего десятки или сотни мегабайт. Не всегда предлагаемые карты оперативно обновляются. И, чтобы вы могли избежать всех этих неудобств, написана эта заметка-инструкция.

Примечание: автор заметки не является специалистом в данной области и всю информацию почерпнул на форуме или в справочных материалах к нижеприведённым программам, ну или разобрался по ходу процесса путём простого сопоставления. Справиться с задачей cможет любой человек, умеющий редактировать текстовые файлы и владеющий элементарной логикой.

Подготовка необходимых программ и файлов

  • Windows 7/8/10 (желательно x64) (можно и linux-систему, но там свои особенности и заметка не об этом)
  • Java (желательно именно x64 под соотв. Win, чтобы иметь возможность выделить приложению более 3Гб оперативной памяти)
  • Собственно конвертер mkgmap
  • Обработчик границ splitter
  • Сами границы в виде архивов bounds.zip и sea.zip (скачать там же), это специально подготовленные файлы для корректной обработки адресной информации и контуров морей (подробностями не владею, но, в общем, в них и нет необходимости, а почитать можно на сайте разработчиков)
  • Исходные («полусырые», т. е. уже специально обработанные) osm-данные вашего региона или страны в формате pbf можно скачать [1] или [2] (тут, к сожалению, периодически возникают технические проблемы, как на момент создания заметки, прерывающие ежедневное обновление файлов, что наводит на мысль научиться самому выполнять и данный промежуточный этап конвертации, дабы в ещё меньшей степени зависеть от сторонних сервисов) Небольшое (но важное) дополнение: знающие люди подсказали, что можно обновлять уже имеющийся (скачанный однажды) pbf-файл с помощью программы osmupdate (к ней также необходимы osmconvert и wget) Всё работает и можно получать самые свежие данные (вплоть до минутных изменений, считая от начала запуска обновления). Таким образом можно поддерживать исходный файл всегда в актуальном состоянии и не зависеть от проблем у сторонних сервисов (кроме osm.org, конечно)
  • Файлы, отвечающие за стиль (графика и текст) готовой карты. Здесь могут быть варианты, поскольку существует множество кастомных наработок. Я брал за основу стиль stranger, ветка форума от автора, и дорабатывал его под себя (добавил или поменял некоторые значки, текстуры, добавил направление водотоков, отображение подъездов с номерами квартир и т. п.), что при желании может делать каждый, немного покопавшись в исходных файлах (и в этом ему поможет утилита TYPViewer), но это отдельная тема, углубляться в которую не буду. Вот ссылка на мои исходные файлы, касаемо стиля (заодно и bat-файл, запускающий конвертацию со всеми параметрами) для примера и основы

Конвертация

Итак, всё необходимое скачано, архивы распакованы. Желательно выделить под это отдельную папку и в ней раскидать в подпапки с названиями, набранными латиницей (нето могут возникнуть проблемы, т. к. утилиты просто не умеют читать кириллицу и не смогут воспринимать пути в конфигах, выдавая ошибки вида «file not found»)

Далее надо подкорректировать в bat-файле все директории в соответствии с вашими файлами и папками, после чего запустить его. В указанной вами папке (у меня это output-dir=”%BASEDIR%\output\my Stranger”) вы получите набор файлов, из которых понадобится только gmapsupp.img Его надо просто скопировать (можно переименовать при необходимости, не меняя расширение после точки) в память навигатора или на флешку в папку Garmin.

Примечания и дополнения

Ключ –copyright-message влияет только на выводимую надпись о правах (она не обязательна, если вы делаете карты сугубо для своих нужд), то же касается и ключей –series-name, –family-name, –description, –country-name, –country-abbr. А вот –product-id и –family-id могут повлиять на совместимость с другими уже установленными картами (у меня бывало так, что совместно некоторые не хотели определяться навигатором eTrex20) Ключи –charset=cp1251 и –code-page=1251 отвечают за кодировку для шрифтов. Также обратите внимание на –name-tag-list=name,name:ru,name:be,int_name, что задаёт последовательность выборки и присваивания названий для всех объектов (если не отыскивается первое значение, то ищется следующее и т. д.)

Ещё важные моменты: для сплиттера указывается (“%BASEDIR%\pbf\belarus.osm_24.05.18.pbf”) директория исходного файла и директория для результата нарезки (–output-dir=”%BASEDIR%\input”), она же станет исходной для mkgmap.

Если добавить ключ –gmapi, то дополнительно будет создана папка «Название стиля.gmap», а в ней будут файлы, которые можно использовать в BaseCamp или Mapsource для просмотра карты на компьютере. Достаточно скопировать папку “*.gmap” по указанному ниже пути (в зависимости от ОС компьютера): для WinXP путь C:\Documents and Settings\All Users\Application Data\GARMIN\Maps для Win7/8/10 путь C:\ProgramData\Garmin\Maps или скопировать туда же ярлык на вашу папку (не важно, где она была создана), и потом выбрать из списка карт в BaseCamp вашу. Это позволит заодно и протестировать её, не загружая в навигатор.

Вообще, вместе с mkgmap есть справочные файлы (на английском), где расписаны значения ключей (doc/options.txt) и есть manual по программе.

PS

Надеюсь, данная заметка поможет читателю освоить, в общем-то, несложный процесс конвертации карт под свой любимый garmin. Ведь повозиться с наладкой/подготовкой придётся лишь единожды, а потом будет достаточно заменить исходный файл pbf на свежий и прописать его название в bat-файле. Поскольку у меня это происходит нечасто, я делаю это вручную, равно как и запуск конвертации (хотя, умельцы могут и автоматизировать все эти процессы).

Сложившаяся парадигма OSM состоит из нескольких принципиальных «моментов»:

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

  2. Вносимая информация не задана изначально на 100%, в том смысле, что нет перечня обозначаемых объектов и сущностей, который бы ограничивал редактора — с одной стороны, а с другой — гарантировал бы их обязательное применение в том или ином виде (визуализация, маршрутизация, поиск и т. д.). Есть перечень «общепризнанных» объектов с их свойствами, тем не менее, не гарантирующий их обязательное «вступление в строй», т. е. применение (об этом — дальше). И есть важные ограничения на внесение данных (см. след. пункт).

  3. Действует принцип «не вноси ту информацию, которая не отражает реально существующие объекты или их свойства» («truth on the ground» или «ground truth»). Подкрепляет или поясняет этот принцип ещё один: «верифицируемость данных», т. е. возможность их проверить. Ограничивающей «надстройкой» является запрет на внесение данных из запрещённых источников.

  4. Данные распространяются под открытой лицензией.

Теперь чуть подробнее о некоторых аспектах. Второй пункт является отличительной чертой OSM по отношению к подобным сервисам известных брэндов. Особенность заключается в том, что объективно не существует некого отдельно взятого всеобъемлющего «сервиса OSM». Но обычно под ним (ошибочно!) подразумевается сайт openstreetmap.org, который является основоположником и действующей основой всего, что связано с OSM-данными. А поскольку (см. п. 4), то на их основе существует множество сервисов, таких как online-картография (различной направленности, в т. ч. планы внутренних помещений, 3D-визуализация зданий, использование картоосновы, как слоя для наложения на него различной информации типа схем проезда, время работы заведений, online-мониторинга по gps и т. д.), поисковые службы, маршрутизация (пешеходная и по видам транспорта), создание карт для различных навигационных программ и др.

Поскольку очевидно, что ни один информационный ресурс не может включать столь широкий спектр применений «всё-в-одном», то автоматически из этого следует, что «каждый берёт своё» (от базы данных OSM) и на выходе у него «своё блюдо». Указанную «расплывчатость» OSM можно назвать «подводными камнями» (для желающих вносить информацию с целью немедленной положительной отдачи) или «эффектом айсберга» (для желающих получить ту или иную информацию). Но есть и «камни преткновения». Они «разбросаны на путях» участников сообщества OSM и связаны, прежде всего, со способом представления данных в рамках применяемого формата.

Не осмелился назвать это одним из принципов, поскольку он хотя и декларируется, но весьма противоречив: «any tags you like» (любые обозначения, какие пожелаешь). Тут следует оговорить условия:

  • Не изобретай велосипед (когда уже есть принятое обозначение данного объекта или свойства) без надобности или обоснуй его вескими аргументами и документируй;

  • Не обозначай одни объекты или/и свойства тем способом, который уже принято использовать для иного. Общепризнанным способ обозначения становится через процедуру (сомнительной эффективности) внесения и принятия предложений (proposals). Не вдаваясь в тонкости и хитросплетения способов представления информации о различных объектах, лишь констатирую, что по некоторым (в т. ч. весьма важным, таким как адресация, обозначение дорог и их свойств, сфера торговли и услуг, медицина, образование и др.) сферам обозначения до сих пор не достигнуто однозначных договорённостей, либо они не достаточно эффективно позволяют схематично отразить реальность в данных OSM.

Также есть проблемы и с обработкой готовых данных, выгружаемых с серверов, обслуживающих openstreetmap.org.

Ядру «вносящие информацию-обрабатывающие информацию» не хватает положительной обратной связи. Также её не хватает и между самими вносящими. Плохо обстоят дела с продвижением на информационном поле (в поисковых системах, разрозненность и разбросанность документации, её устаревание), а с учётом всего перечисленного (и пропущенного, но имеющего место быть), даже привлечённые участники сталкиваются со слишком большим комком неоднозначностей, противоречий и недопонимания, который не способствует ни количественному, ни, тем более, качественному росту проекта. Тем не менее, он растёт (данными) и развивается (потихоньку) в основном за счёт увлечённых энтузиастов, которых не отвращают никакие трудности, а они готовы с ними справляться по мере возможностей. Есть и крупные «игроки» вроде Mapbox или Mapillary.

Addressing scheme (why not?)

Posted by LLlypuk82 on 27 February 2016 in English.

Intro

Hi all! My goal is to present something like reincarnation of old proposal named “associatedAddress”. But it will be mix of several ways to tagging address information: using address-nodes and building polygons/POI-nodes joined by relation. Frankly speaking this idea was independent, I didn’t know about existing associatedAddress proposal but used exactly this name. # Rationale All existing schemes are not solve two problems in complex:

  1. Buildings and (especially) POI-nodes with multiple house numbers.
  2. Multiple buildings and POI-nodes for one housenumber.

“associatedStreet” can be used in simple cases when we have only one addr:street/addr:housenumber tag. Also “geometric including” method could interpolate address information from polygons (multipolygons) to POI-nodes.

addr:housenumber2+addr:street2 or addr2:housenumber+addr2:street and so on schemes are not supported by renders, searching engines, data converters and other softs.

I propose to create simple relation named associatedAddress with following members and roles:

  • polygon (multipolygon) or/and POI-nodes (role=object)

  • address-nodes (with addr* tags) (role=address)

So we have no problems I told before. But is necessary some modification of software to full support this scheme (primarily searching engines and converters). And there is not needed multiple duplicates of address tags. # For clear understanding I prepared those practical examples: * This one

Note: there can be any number of members (role=address or role=object)

How it looks in JOSM: 1

Thanks for attention and pardon my French :)

Введение))

Как-то раз увидел на mapsurfer подписанные подъезды с номерами квартир. Для меня это очень полезная информация. В моём городе оказалось довольно много закартированных подъездов, но далеко не все, и я решил приобщиться к процессу. Расскажу о выработанном со временем удобном для меня способе.

Понадобятся:

1) Редактор JOSM

2) Навигационная программа OsmAnd

3) Конвертер карт под неё OsmAndMapCreator. Конвертер опционален, хотя очень желателен (для оперативной актуализации карт). ## 1-й этап - подготовительный (также не обязательный, но повышающий удобство) За день (минимум) до похода в город загружаем в JOSM интересующий нас квартал или его часть, где требуется сбор данных. Проставляем на соответствующих домах тег fixme со значением, например, «подъезды». На следующий день качаем свежие исходные данные своего региона на сайте gis-lab.info в формате pbf или bz2. Конвертируем карту и закидываем полученный .obf в папку OsmAnd-а. В настройках отображения включаем опцию как на скриншотах: 123 Теперь гораздо легче ориентироваться, т. к. появилась «подсветка» «проблемных» домов. Этот пункт опционален, потому что в OsmAnd по умолчанию показывается информация о подъездах и на крупных зумах сразу видно, где требуется «вмешательство». ## 2-й этап (сбор данных) Долгим тапом в точке, примерно соответствующей расположению подъезда, вызываем меню и далее всё понятно из скриншотов: 456 Т. е. ставим понятные нам заметки. Их количество и очерёдность подбирается так, чтобы вы легко могли восстановить количество квартир. Я обычно отмечаю последний подъезд обязательно (в идеале с него и начинать), а потом - через один. Первый не обязателен, если мы отметили второй. В городе, как правило, есть типовая застройка. Это сильно упрощает дело. Иногда достаточно одного подъезда, чтобы определить все остальные в доме. Но есть риск обмануться, т. к. бывают похожие нумерации или исключения из «правила», когда по какой-то причине кол-во квартир варьируется хотя бы в одном подъезде, и тогда все последующие будут отличаться от типовых. Ещё стоит обращать внимание на крайние подъезды (там зачастую больше квартир, поэтому не стоит экстраполировать их кол-во на остальные). Полезно делать беглый визуальный контроль, проходя (проезжая на велосипеде) вдоль дома, т. к. и в середине могут быть «сюрпризы». ## 3-й этап (обработка собранного и внесение в базу) *UPD В более новых версиях (сейчас — ночные сборки) можно, не выгружая заметки, удалять их по мере внесения данных или:

Придя домой, выгружаем по wi-fi свои заметки: 789101112 Далее запускаем JOSM и вносим данные: 1314 Для удобства можно вынести кнопку пресета для подъездов (выбираем «в подъезд/на лестницу», т. е. entrance=staircase): 15 Не забываем по ходу закрывать использованные заметки: 16 и удалять теги fixme 17 18 Выгружаем changeset и радуемся проделанной работе))) ## Заключение)) Не смотря на пространное растянутое описание (больше для совсем новичков), все действия не требуют специальных знаний и экзотических программ. ## Примечания * В примерах использована одна из стабильных бета-версий OsmAnd (см. ссылку на конвертер), но текущая маркет-версия принципиально ничем не отличается по функционалу. * Сейчас есть возможность удалять заметки прямо в OsmAnd по мере их использования (если не хочется сначала выгружать их online, а потом загружать в JOSM)

Примеры использования

Рендеринг в онлайне (карты со стилем, отображающем подъезды с номерами квартир):

1) Упомянутый mapsurfer (не обновлялся с мая 2016)

2) Спутник (также редко обновляется и может совсем перестать, как говорят разработчики)

Навигационный софт, показывающий подъезды и номера квартир:

1) OsmAnd с возможностью маршрутизации к подъезду (т. к. выбрать ближайшую точку нетрудно). 19 2) 7 ways/7 дорог со штатной возможностью составления маршрута до подъезда. 20 3) Garmin-карты на gis-lab. 21 4) Maps.me вернули возможность просмотра номеров подъездов и квартир (надеюсь, учтут и дальнейшие пожелания в этом направлении). 22 P.S. Плодотворного и весёлого картирования вам! И хороших табличек на подъездах ;))