Jump to content

Помощь:Расширение:Картограф/OSM

From mediawiki.org
This page is a translated version of the page Help:Extension:Kartographer/OSM and the translation is 66% complete.

Как связан Kartographer с OpenStreetMap?

Kartographer is a MediaWiki extension that allows Вики-текст editors to include a map in a page. This map is generated by Wikimedia's map server using OpenStreetMap data.

Графический дизайн этой (базовый слой) карты называется стилем и определяет, какие данные OSM отображаются в плитках карты (например, фильтр), а также цвета и графики, используемые для отображения этих данных. While the style of the map is similar to the one by OpenStreetMap, it is specific to Wikimedia but based on what is called OSM Bright.

In addition to the base map, Kartographer allows editors to draw highlight shapes and markers on top of the map. These shapes can be from several sources, but are generally retrieved from OpenStreetMap. This makes use of the Wikidata information that OpenStreetMap keeps track of.

If you want to correct a problem in a map, you might have to become an OpenStreetMap editor or add a Wikidata id to the OpenStreetMap data. Keep in mind that OpenStreetMap generally only accepts existing and therefore no historical objects in its maps. This data must be provided by other means. Then you will have to wait for that data to synchronise back to Wikimedia (generally within a day). Lastly, it might be that some part of the system has cached old data. Because of this it can sometimes take quite a while before a change in OpenStreetMap is reflected in Wikimedia.

Как использовать объекты с сайта географической карты OpenStreetMap (сокращенно OSM)

Можно задать отображение таких видов объектов как замкнутый контур (по терминологии open street map, "полигон", англ. polygon - многоугольник) и линия (на OSM англ. way) (участков территории и объектов в виде линий) -таких, как страны, дороги либо парки с OpenStreetMap прямо на картах в Википедии. Для этого объект на сайте OSM должен быть помечен (вручную) идентификатором Викиданных Wikidata ID. Карты Википедии пока не поддерживают точки (points (узлы линий - nodes)).

Map
Bryant Park, New York

К примеру, чтобы выделить Брайант-парк (англ. Bryant Park) в Нью-Йорке, нужно найти его числовой идентификатор с Викиданных. Легче всего это сделать, зайдя на страницу соответствующей статьи в вики, - например, в английской Википедии Bryant Park или в русской (Брайант-парк), - и нажать на "Элемент Викиданных" (Wikidata item) на панели инструментов слева. В некоторых редких случаях соответствующего элемента Викиданных (англ. Wikidata item) может не быть, и тогда нужно создать его (англ. Create new item) и добавить на его страницу на Викиданных ссылку на соответствующую статью Википедии о нем.

После такого добавления (а если его нет, см. ниже, как его сделать), вы сможете воспользоваться сервисом геолиний для отображения (незамкнутых) линий ("geoline" service for lines), сервисом геоконтуров для получения многоугольников ("geoshape" service for polygons) и сервисом геомаски ("geomask") для маскировочного затемнения на карте всего кроме нужного многоугольника.

<mapframe text="Bryant Park, New York" width="300" height="300" latitude="40.75333" longitude="-73.9827" zoom="15">
{
  "type": "ExternalData",
  "service": "geoshape",
  "ids": "Q995174",
  "properties": {
    "title": "Bryant Park",
    "description": "[[File:2011-NYC-Bryant-Park-Library.JPG|300px]]",
    "stroke": "#125123",
    "stroke-width": 3,
    "fill": "#2aaf4d"
  }
}
</mapframe>

Как добавлять идентификаторы с Викиданных (Wikidata ID) на OpenStreetMap

  • Перейдите на osm.org
  • При отсутствии там у вас учетной записи нажмите "Войти /login" (правый верхний угол), а затем щелкните по значку Википедии (Wikipedia) - это даст OSM возможность использовать ваш аккаунт из Википедии.
  • В поисковой строке найдите требуемый объект в левой панели и нажмите на него.
  • Когда объект отобразится яркой оранжевой линией, проверьте, присутствует ли там. тэг "wikipedia" и / или "wikidata". Если оба они есть, вам ничего не нужно делать.
  • Увеличьте масштаб изображения на карте любой части оранжевой линии до самого фона.
  • Нажмите вверху кнопку "Править (Edit)". Постарайтесь не нажимать ничего на карте.
  • Теперь в левой части экрана должна появиться рамка "Редактировать объект (Edit feature)". Пролистайте страницу вниз до рамки "Добавить поле (Add field)", расположенной прямо над "Все тэги (All tags)(...)"
  • Если тэгов Википедии и Викиданных нет, нажмите на рамку "Добавить поле" и выберите Википедию. Выберите нужный язык и скопируйте из Википедии и вставьте название статьи. Это автоматически добавит и тэг Викиданных (их можно проверить в разделе "Все тэги").
  • Если тэг Википедии был, а Викиданных отсутствовал, можно либо удалить и повторно добавить ячейку Википедии, а также просто добавить тэг Викиданных вручную в разделе "Все тэги".
  • Нажмите Сохранить и введите качественное описание правки.
  • Введенные данные должны будут стать доступными в Википедии примерно через день (мы ещё работаем над ускорением этого процесса).

Как объединить несколько линий на карте OpenStreetMap в один объект

Нередко на этой карте одному реальному физическому объекту - например, дороге - соответствует несколько отдельных линий (отрезков, участков дороги) под отдельными номерами объектов данной карты, на которые дорога условно поделена (например, в местах ее изгиба). Каждый тэг Викиданных должен иметь однозначное соответствие одному реальному объекту, и изображения участков, частей такого объекта на карте OpenStreetMap требуется сгруппировать в его графическое соответствие на карте, получив единый картографический объект со своим номером объекта этой карты. Данные ниже инструкции исходят из предположения, что вы хотите создать или найти на OSM единый картографический объект - для примера, единое изображение всех участков какой-либо дороги, но подойдут и для других типов линий.

Терминология

точка (node "узел")
Точкой (англ. node "узел") называется одиночная точка на карте
линия (англ. way "путь")
Линия (англ. way "путь") - черта, линия, соединяющая две или более точки
отношение (англ. relation)
"Отношение" на OpenStreetMap означает группу линий, образующих маршрут (route).

Ограничения

К настоящему времени на картах могут отображаться только отношения type=multipolygon, type=route, type=boundary, type=waterway могут отображаться на карте

Подробности процесса

  • На OpenStreetMap создайте отношение, объединяющее все участки нужной дороги.
  • Если идентификатора Викиданных еще не добавлено, для использования тэга wikidata Викиданных добавьте его (он выглядит как число после буквы Q)
  • Подождите день или два для обновления базы данных

Подробности процесса

  1. Перейдите на osm.org
  2. Сдвиньте карту так, чтобы была видна нужная вам дорога, и введите название дороги в поисковую строку
  3. Результаты поиска - отдельные линии (ways) будут перечислены слева от карты в том же окне браузера. Найдите линию, являющуюся частью искомой дороги, и щелкните по ней. Панель информации в левой части экрана после этого загрузит сведения о выбранной линии, и сама линия окажется выделенной на карте
  4. Пролистайте панель вниз и посмотрите на раздел "Участвует в" (англ. Part of). Если в этом списке перечислены какие-нибудь отношения, проверьте, не охватывает ли какое-либо из них всю дорогу. Если такое найдется, то хорошо, а в противном случае вам придется его создать (см. ниже "Создание нового отношения").
  5. Нажмите вверху кнопку "Правка (Edit)". Постарайтесь не нажимать ничего на карте. В левой части экрана теперь должно быть написано "Редактировать объект" ("Edit feature") box.
    Пролистайте вниз до ячейки "Добавить поле:" ("Add field:"), которое находится прямо над "Теги" ("All tags (..)").
    • Если тэгов Википедии и Викиданных нет, нажмите ячейку "Добавить поле" и выберите Википедию. Выберите тот язык, на котором статья Википедии о данном объекте, скопируйте название статьи из Википедии и вставьте в ячейку "Википедия" панели сведений страницы карты. Это автоматически добавить и тэг Викиданных (результат можно проверить в разделе "Теги" на панели карты).
    • Если тэг Википедии был, а тэга Викиданных не было, можете либо удалить и добавить заново ячейку "Википедия", либо просто вручную ввести тэг "Викиданные".
  • Нажмите Сохранить и введите качественное описание правки. Эти данные должны стать доступны в Википедии примерно через день.

Создание нового отношения

Если для интересующей вас дороги отношение еще не задано, вам придется создать новое. Для этого есть целый ряд способов: редактор Potlatch 2 годится для коротких дорог, JOSM лучше для более длинных. Instructions for the iD online editor, see https://community.openstreetmap.org/t/succinct-steps-to-add-a-relation-in-id-editor/87669

Использование редактора карт Potlatch

  1. Увеличьте масштаб отображения участка карты с нужной дорогой, а затем нажмите справа от кнопки "Правка" стрелку вниз и выберите в раскрывающемся меню "Редактировать с помощью Potlatch 2"
  2. Когда Potlatch загрузит данные на экран, выделите первый отрезок дороги (первую линию, way) нажатием Ctrl+щелчок мыши. Участок на карте станет выделен. Продолжите выделять следующие участки дороги до ее окончания, нажимая Ctrl+щелчок мыши.
  3. В левой части страницы будет внизу таблица с перечислением всех существующих отношений для выбранных линий. Под этой таблицей нажмите "Добавить в" ("Add to"). Появится всплывающее диалоговое окно с заголовком "Выбрать отношение", в нижней части которого нажмите "Новое отношение".
  4. Внизу окна нажмите "Подробнее". Появится пустая таблица параметров и значений, и под ней нужно нажать "Добавить", добавив следующие параметры и значения.
    • name : название дороги (name of the road)
    • type : route
    • route : road
    • wikidata : Идентификатор Викиданных - число после буквы Q (Q-number (the wikidata ID))
  5. Закройте всплывающее окно редактирования отношения и сохраните правку. Можете вернуться на https://www.openstreetmap.org и повторить пункт 1 чтобы убедиться, что нужное отношение теперь создано.

Использование редактора карт JOSM

  1. Ваш аккаунт должен иметь связанный с ним пароль к OSM: войдите с аккаунтом Википедии, затем перейдите в свой профиль (нажмите в правом верхнем углу экрана на ячейку со своим именем пользователя), перейдите в Настройки (Settings), заполните поля Пароль и Подтвердите пароль (Password и Confirm password), пролистайте вниз и нажмите Сохранить изменения (Save changes).
  2. Скачайте или запустите JOSM с https://josm.openstreetmap.de/
  3. Теперь в JOSM вам нужно скачать линии (ways), которые составляют нужную вам дорогу. Это можно сделать двумя способами, и их можно сочетать:
    • Скачайте существующие отношения, которые частично накладываются на нужную вам дорогу, пересекаются с ней (например, на карте на территории Австралии Отношение: Национальное шоссе 94 (National Highway 94) (317411) накладывается на большую часть Большого Восточного шоссе (англ. Great Eastern Highway). Используйте метод, описанный выше в 'Подробности процесса', чтобы найти любые пересекающиеся, накладывающиеся линии, и заметьте их идентификационный номер объекта (object id) (число в скобках, также присутствующее в интернет-адресе (url) отношения после /relation/, которое будет видно при однократном нажатии на него)
      Перейдите в Файл (File) -> Скачать объект (Download object...) -> введите номер объекта или номера объектов (object id (ids)), нажмите Скачать объекты (Download objects)
    • Скачайте участки, содержащие дорогу. Учтите, что скачиваемые участки карты не могут быть слишком большими, иначе сервер OSM не позволит скачивание.
      Перейдите в Файл (File) -> Скачать с OSM (Download from OSM...) -> выберите участок территории мышью, нажмите Скачать (Download). При необходимости повторите.
  4. После скачивания перед вами должны появиться линии, представляющие все части нужного маршрута (и прочие данные, если вы скачали участки местности). Теперь нужно выбрать (выделить) все линии - отрезки дороги. Это можно сделать двумя способами:
    • Поищите элементы для добавления к выделению или удаления из него
      Перейдите в Правка (Edit) -> Поиск (Search...) -> Введите название нужной дороги в поисковую строку. Этот процесс можно повторять любое необходимое количество раз, если на разных частях маршрута используются разные названия или или в него включаются недорожные элементы (например, здания вдоль дороги) – для первого поиска выберите "Заменить выделение" ("Replace selection"), а для последующих поисков выберите "Добавить к выделению" ("Add to selection") или "Удалить из выделения" ("Remove from selection"). Нажмите Начать поиск (Start search).
      Нажмите SHIFT+левую кнопку мыши на элементах для добавления их к выделенной области или CTRL+левую кнопку мыши для удаления их из нее. Удерживая кнопку мыши нажатой, можно выделить несколько объектов, обведя их с помощью мыши полностью охватывающей элементы рамкой.
  5. Выбранные элементы окажутся выделены цветом на экране и перечислены в рамке справа. Просмотрите это перечисление в поисках лишних элементов для удаления через новый поиск. Также визуально проверьте в основной части экрана наличие упущенных линий (участков нужной дороги) для дополнения через новый поиск.
  6. Получив полностью удовлетворяющую вас выделенную область, перейдите в Установки (Presets) -> Отношения (Relations) -> Маршруты (Routes) -> Маршрут Дорога (Road route). Введите название дороги (road name) в поле названия (name), нажмите Новое отношение (New relation). Появится всплывающее окно с подробностями. В таблице Параметр/Значение (Key/Value) нажмите на пустую ячейку колонки Параметр (Key) и введите "wikidata" ("Викиданные") строчными буквами. В поле Значение параметра (Value) справа введите числовой идентификатор для данной дороги с ее страницы с Викиданных (Wikidata ID) (число после буквы Q). Нажмите кнопку ОК.
  7. Теперь загрузите данные на OpenStreetMap.
    • Перейдите в Файл (File) -> Загрузить данные на сервер (Upload data). Может появиться всплывающее предупреждение - следуйте инструкциям там, а "При сомнении игнорируйте их" ("When in doubt ignore them") (или если разбираетесь, можете их исправить); нажмите Продолжить загрузку (Continue upload).
    • В следующем окне проверьте, что вы случайно не удал\ете, не изменяете и не добавляете ничего кроме только что созданного вами нового отношения. Введите ясный комментарий внесенных вами изменений, а в качестве источника данных можете указать "данные OpenStreetMap" ("OSM data"), а затем нажмите "Загрузить изменения на сервер "(Upload changes).
    • При появлении запроса войдите под своим логином и с паролем от OpenStreetMap.
  8. Убедитесь, что созданное вами отношение загрузилось на сайт карты (следуйте инструкциям из вышеприведенного раздела "Подробности процесса", и новое отношение должно отобразиться). При необходимости небольшие изменения можно внести с помощью редактора Potlatch.

Synchronization between OSM and Wikimedia wikis

Kartographer server structure in a nutshell

For performance reasons, Wikimedia wikis are not requesting OSM data live from OSM. Instead, the data from OSM is regularly copied to Wikimedia servers.

  • The map server
    • contains all the logic and delivers the features needed to draw maps: e.g. definition of how Kartographer maps are styled, which parts of OSM data are not shown on Kartographer maps, how data and map features are put together, etc.
    • contains a database with a set of geoshapes and geolines imported from the OSM data that has been linked with Wikidata items.
  • Server copies - The map data is copied to 5 servers, because one server alone would not be able to handle the amount of requests from the wiki pages. When a visitor opens a wiki page with a Kartographer map on it, the data for that map is being fetched from one of these server copies. A load balancer decides which server to pick based on server load and where the request is coming from.

This whole server structure is duplicated on two data centers: eqiad and codfw. This way, there is always a fallback when one data center needs to undergo maintenance, is broken etc.

Process for syncing between OSM and Wikimedia wikis

  • The most current copy of relevant OSM objects worldwide is imported once to the main map servers. What’s considered relevant is pre-configured, so as to not overwhelm the database.
  • This export is copied to all server copies.
  • These big exports are not happening regularly. What happens instead is that Wikimedia servers are fetching diffs from the OSM server every day, containing all the changes that were made since the day before.
  • With these diffs, the data on both Wikimedia data centers, and from there on all server copies, are updated daily.
  • If everything works as it should, the data on Wikimedia servers is in sync with OSM once a day. That means: If you make a change to an OSM map or connect an OSM shape to a Wikidata item, it can take up to one day until the change is visible on Wikimedia wikis.
Problems and their solutions How to find out if there is a synchronization issue
If a diff can not be imported, all the changes from OSM from that day will not be synchronized to the Wikimedia wikis. In this case, maps are out of synch for everyone. This won’t be rectified with the next diff on the next day because any diff only ever contains changes from OSM within the last day.

In the past, diffs were failing at times, so OSM and Wikimedia servers were sometimes inconsistent for several weeks.

  • To solve this issue, teams at the WMF have synchronized OSM and Wikimedia servers anew  (doing a copy from OSM as described above).
  • Furthermore, they worked on to eliminating some issues causing the imports to fail.
Sometimes, data is not copied from the main servers to all server copies. This means that the data between server copies is inconsistent:
  • From a user perspective, one person looks at a map and sees different data on it than another person, depending on which server copy was used to generate the maps.
  • Similarly, people might see different data for the same map, depending on whether they are looking at a static map on the wiki page or the dynamic version in full size view. This is because when you add or edit a Kartographer map, this map is usually rendered and cached (on most wikis). This way, everyone sees the same map when they look at the wiki page, and the page loads faster for everyone. Full size maps, on the other hand, are drawn live every time someone opens the map. Depending on which server is sending the data to your browser, one might see different data on the full size map than on the wiki page with the cached result, and also different data than another person looking at the full size map.
  • To solve these issues, all map servers were reset with the most current data. Also, updates and improvements were rolled out to make sure the synchronization process is more stable.

Synchronization errors can never be fully prevented, and a bit of a latency is considered normal. If you notice a latency bigger than 2 weeks, we encourage you to file a bug report on Phabricator.

Further reading