Help:Extension:Kartographer/ru

Расширение Kartographer позволяет вставлять интерактивные карты на страницах проектов Викимедиа. На этой странице описано, как использовать теги расширения Kartographer: для вставки интерактивных карт в викистраницы и  для создания ссылок на такие карты.

С чего начать
 Этот код вставляет простую интерактивную карту, такую, как карта "Центр Сан-Франциско (Downtown San Francisco)" в этом разделе.


 * На Викигиде и test2wiki генерируется интерактивная карта. Одиночное нажатие открывает окошко карты, а двойное (либо нажатие на иконку в правом углу) — полноэкранную карту, которая также интерактивна.
 * В Википедии и других проектах Викимедиа, генерируется статичная карта. Одиночное нажатие открывает полноэкранную карту, которая интерактивна.

Параметр  ("выровнять") позволяет задать выравнивание слева, справа или по центру. Параметр  ("изменение масштаба") может принимать значения от 0 до 19, где ноль это минимальный масштаб, а 19 - максимальный.

Также карты можно добавлять в визуальном редакторе (VisualEditor), см. ниже.

Если на карте есть заданные объекты (features), как описано ниже, ее масштаб (zoom), широту (latitude) и долготу (longitude) не требуется специально указывать, так как карта автоматически будет сгенерирована со всеми требуемыми объектами на ней. При этом указывать ширину и высоту карты всё равно всегда необходимо.

Использование
 { "type": "Feature", "geometry": { "type": "Point", "coordinates": [-122.3988, 37.8013] }, "properties": { "title": "Exploratorium", "description": "", "marker-symbol": "museum", "marker-size": "large", "marker-color": "0050d0" } }

Содержимое должно быть либо пустым, либо содержать валидный код GeoJSON с оформлением (styling), который предоставляется каким-либо редактором GeoJSON. Расширение поддерживает спецификацию simplestyle со значками Maki icons (лицензия CC-0). На странице Help:Extension:Kartographer/Icons содержится полный список поддерживаемых иконок.

Рамки (Frames)
Безрамочные карты годятся для вставки в качестве части шаблона, карты с рамкой же больше подходят для вставки напрямую на страницу вручную или же с использованием визуального редактора.


 * Чтобы вставить карту без рамки, добавьте параметр "frameless" (безрамочная):
 * Чтобы добавить подпись названия (caption) карты (и объектов на ней), используйте параметр.

==

также поддерживает дополнительный параметр "text", который используется для задания текста ссылки вместо координат:

Добавьте дополнительные классы к с помощью параметра class. Например,, чтобы скрыть маркер, стоящий перед ссылкой.

Тег может содержать тот же geojson, что и тег.

=== . Если этот атрибут не задан, отобразятся координаты места (пример:  может принимать отрицательные значения - числовое   или буквенное  . При таком выборе каждое отрицательное числовое значение   будет заменено инкрементальным счётчиком, а буквенное   аналогично буквенным счётчиком.

Если GeoJSON имеет более одного счетчика, то в качестве текста ссылки отобразится значение первого из них. По желанию редакторы могут добавлять поясняющие слова (suffixes) без пробела к слову number для одновременного отображения на одной странице разных счетчиков для разных типов объектов. Тем самым с помощью записи вида  ("музей номер") музеи получат иной счетчик, чем бары, которые можно пометить отдельным счетчиком.

Имеет смысл помечать отдельным цветом каждую группу отмеченных счетчиками объектов. Все данные, добавляемые через, также отобразятся на всех картах, вставленных с помощью , если не использован атрибут.

может быть расширен до

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

Маркеры
На карты можно добавлять маркеры для обозначения какого-либо места. Эти элементы добавляются с помощью формата JSON. содержит полный список иконок, которые можно использовать в качестве значков для маркеров.

Результат:

Маркеры также могут содержать информацию, например, изображения или ссылки на статьи.

Результат (нажмите на маркер чтобы увидеть его содержимое)

Можно использовать идентификаторы Wikidata ID для данных с OpenStreetMap (OSM), чтобы обозначить границы графическим выделением с помощью сервиса контуров географических объектов geoshape.

Результат:

Чтобы залить (замаскировать) всю карту кроме какой-либо указанной вами зоны другим цветом, можно использовать идентификаторы таких зон с сайта Викиданных - Wikidata ID.

Результат:

Маркеры могут быть пронумерованы.

Результат:

Маркеры могут использовать буквы.

Результат:

Несколько маркеров разных размеров на карту можно добавить с помощью коллекций объектов ("feature collection").

Результат:

На карты можно добавлять группы маркеров разного цвета и разных счетчиков.

Результат:


 * Маркеры на карте могут использовать любой цвет, имеющий RGB-значения (быстрый поиск в интернете по запросу "Цветовой миксер RGB" покажет несколько вариантов).
 * Маркеры могут быть одного из трех размеров: small (маленький), medium (средний) или large (большой).
 * GeoJSON из другого источника можно скопировать (с учетом ограничений со стороны лицензии и авторских прав) и вставить в maplink (например)
 * Если карты создаются на Викигиде, может быть полезно использовать Группы (см. ниже).
 * Чтобы узнать больше о добавлении внешних данных на карты, см. раздел Внешние данные (External data).

Группы
Для использования на Викигиде требуется отобразить карту, данные которой указаны в другом месте страницы. Например, может быть несколько туристических объектов, заданных тегами, и одна общая карта для их отображения на странице сбоку.

Концепция группирования дает редакторам возможность выводить данные в несколько тэгов и.

По умолчанию, данные внутри тэга или  отображаются только для самого этого тэга и больше нигде не показываются.

Если тэги или  укажут атрибут , данные в этих тэгах будут помещены в именованную группу вместе со всеми другими данными под тем же именем группы. В результате любые тэги с одинаковым именем группы покажут одни и те же картографические данные, а каждый тэг может в порядке возрастания добавлять данные в группу.

В тэге можно задать также отображение других групп - вне зависимости от его принадлежности к какой-либо группе, если указать параметр  («показать»). Также можно указать несколько названий групп, разделенных запятыми. Название группы может состоять только из строчных английских букв. Такая матрица покажет, какие данные отобразятся для каждого тэга.

Внешние данные (External data)
 { "type": "ExternalData", "service": "geoshape", "ids": "Q797" }

В дополнение к рисованию многоугольников («полигонов») с помощью GeoJSON, предусмотрена возможность также получать контуры хорошо известных географических объектов по их идентификаторам на Викиданных - Wikidata ID при наличии такой отметки в базе данных OpenStreetMap. К примеру, идентификатор Wikidata для Аляски Q797, и мы можем задать отображение ее контура на карте, используя ссылку на «внешние данные» - "external data" reference. Можно указать не один, а несколько идентификаторов, разделив их запятой. Чтобы выделить цветовой маской сами интересующие объекты на карте, используйте сервис контуров географических объектов "geoshape". Чтобы обратить такое выделение и закрасить маской всё остальное на карте, используйте сервис "geomask".

Получение контуров географических объектов (GeoShapes) посредством запроса к Викиданным (Wikidata Query)
 { "type": "ExternalData", "service": "geoshape", "query": "SELECT ?id ?head (SAMPLE(?img) as ?img_) (min(?partyId) as ?party) (if(?party = '0', '#800000', if(?party = '1', '#000080', '#008000')) as ?fill) (concat(, ?headLabel, ) as ?title) (concat(?stateLabel, '\\n', '') as ?description) WHERE { ?id wdt:P31 wd:Q35657 . ?id wdt:P6 ?head . ?head wdt:P102 ?party . BIND(if(?party = wd:Q29468, '0', if(?party = wd:Q29552, '1', '2')) as ?partyId) SERVICE wikibase:label { bd:serviceParam wikibase:language 'en' . ?head rdfs:label ?headLabel . ?id rdfs:label ?stateLabel . } OPTIONAL { ?head wdt:P18 ?img . } ?link schema:about ?head . ?link schema:isPartOf  .} GROUP BY ?id ?head ?headLabel ?link ?stateLabel" }

Хотя это полезно в случаях простого применения, когда идентификатор на Викиданных (Wikidata ID) хорошо известен, иногда может возникнуть необходимость получить список таких идентификаторов как результат запроса к Викиданным. Запрос на языке SPARQL возвращает список всех штатов США в колонке ID ответа на запрос, и сервис контуров географических объектов (geoshapes service) к каждому штату добавляет его геометрические очертания. Все другие колонки в ответе на SPARQL-запрос становятся значениями в объекте "properties" («свойства»). Колонка "fill" («заливка») меняет окраску изображения территории штата. Колонка "title" показывает, как зовут губернатора штата, а "description" («описание») имеет вики-разметку для отображения названия штата и портрета его губернатора. Для редактирования этого запрос скопируйте параметр запроса после символа "#" на ''' https://query.wikidata.org/#... ''':

Данные для карты, которые можно получить с Викисклада

 * Дополнительная информация: 

На карте можно отобразить и картографические данные, хранимые на Викискладе (Commons). Например, микрорайоны города Нью-Йорка c:Data:Neighbourhoods/New York City.map:

 { "type": "ExternalData", "service": "page", "title": "Neighbourhoods/New York City.map" }

Возможность сочетания нескольких типов данных
 [ {    "type": "ExternalData", "service": "geoshape", "ids": "Q13518258", "properties": { "stroke": "#ffb100", "stroke-width": 6, } },  {    "type": "Feature", "geometry": { "type": "Point", "coordinates": [4.75566, 44.104498] }, "properties": { "title": "Porte de Castellan" } },  {    "type": "Feature", "geometry": { "type": "Point", "coordinates": [4.75829, 44.10258] }, "properties": { "title": "Porte Léon Roche" } } ]

В одном элементе &lt;mapframe> или &lt;maplink> можно одновременно использовать внешние данные (ExternalData), помеченный географический объект (Feature) и коллекцию объектов (FeatureCollection). Пример - городская стена во французском Кадру́се (Caderousse city wall):

 [ {    "type": "ExternalData", "service": "page", "title": "Neighbourhoods/New York City.map" }, {    "type": "ExternalData", "service": "geoshape", "ids": "Q160409", "properties": { "fill": "#07c63e", "title": "Central Park" } },  {    "type": "Feature", "properties": {"title": "Roosevelt Island", "marker-color": "f01080"}, "geometry": { "type": "Point", "coordinates": [ -73.94511222839355,       40.76734665426719      ]    }  } ]

Картографические данные с Викисклада можно сочетать с другими типами данных (на карте отмечены Центральный парк и остров Рузвельта среди микрорайонов Нью-Йорка):

Оформление элементов с идентификаторами Викиданных
 { "type": "ExternalData", "service": "geoline", "ids": "Q2108", "properties": { "title": "Highway I-696", "description": "", "stroke": "#ffb100", "stroke-width": 8 } }

В отношении внешних данных также можно добавлять стили оформления (styles) и названия (titles), используя ключ properties ("свойства"):

Основные ключи оформления следующие: "stroke" (color) ("обводка" (цвет)), "stroke-width" ("ширина обводки"), "stroke-opacity" ("прозрачность обводки"), "fill" (color) ("заливка" (цвет)), "fill-opacity" ("прозрачность заливки").

Пересекающиеся элементы на карте
Элементы карты, которые перекрывают друг друга, отображаются в том порядке, в котором они прописаны в программном коде карты. Например, если карта содержит две пересекающиеся линии, описанная первой линия будет нарисована под линией, параметры которой заданы ниже, после первой. Как это влияет на облик карты, показывают следующие примеры:

 { "type": "FeatureCollection", "features": [ { "type": "Feature", "properties": {"fill": "#ff0000","fill-opacity": 0.7,"stroke-width": 0}, "geometry": { "type": "Polygon", "coordinates": [ [ [ 77.926025390625, -25.150257104114733 ], [ 80.14251708984374, -25.150257104114733 ], [ 80.14251708984374, -24.43714786161562 ], [ 77.926025390625, -24.43714786161562 ], [ 77.926025390625, -25.150257104114733 ] ] ] } }, { "type": "Feature", "properties": {"stroke": "#fffa00","stroke-width": 5}, "geometry": { "type": "LineString", "coordinates": [ [ 77.926025390625, -25.150257104114733 ], [ 80.14251708984374, -24.43714786161562 ] ] } }, { "type": "Feature", "properties": {"stroke": "#000000","stroke-width": 5}, "geometry": { "type": "LineString", "coordinates": [ [ 77.926025390625, -24.43714786161562 ], [ 80.14251708984374, -25.150257104114733 ] ] } } ] }

Программный код карты, представленной выше, включает три элемента, каждый из которых использует функцию GeoJSON "feature" («объект»). Первый объект – это многоугольник ("Polygon") – красный прямоугольник. За ним следуют два объекта "LineString" («линейные последовательности»). Желтая линия (yellow line) задана первой, поэтому она идет под черной линией (black line). Следует отметить, что порядок отображения элементов действует вне зависимости от того, берутся ли необработанные данные GeoJSON, либо используется идентификатор с Викиданных или страница данных с Викисклада.

Приведенная ниже карта меняет порядок по сравнению с предыдущим примером:черная линия задана первой и поэтому оказалась внизу стопки элементов:

 { "type": "FeatureCollection", "features": [ { "type": "Feature", "properties": {"stroke": "#000000","stroke-width": 5}, "geometry": { "type": "LineString", "coordinates": [ [ 77.926025390625, -24.43714786161562 ], [ 80.14251708984374, -25.150257104114733 ] ] } }, { "type": "Feature", "properties": {"fill": "#ff0000","fill-opacity": 0.7,"stroke-width": 0}, "geometry": { "type": "Polygon", "coordinates": [ [ [  77.926025390625,  -25.150257104114733  ],  [  80.14251708984374,  -25.150257104114733  ],  [  80.14251708984374,  -24.43714786161562  ],  [  77.926025390625,  -24.43714786161562  ],  [  77.926025390625,  -25.150257104114733  ]  ]  ]  } }, { "type": "Feature", "properties": {"stroke": "#fffa00","stroke-width": 5}, "geometry": { "type": "LineString", "coordinates": [ [ 77.926025390625, -25.150257104114733 ], [ 80.14251708984374, -24.43714786161562 ] ] } } ] }

Варианты рендеринга
Следующая таблица оказывает, как карта, полученная из тэга, может быть отформатирована для отображения на вики-страницах. Таблица содержит две колонки: первая показывает интерактивную карту, полученную с помощью тэга, а вторая демонстрирует рендеринг примера изображения (example image) с одинаковыми параметрами отображения.

Use the width value  in order to make the map take up the full width of the page.  

Языки надписей на картах
Надписи на картах постараются использовать язык той вики, в которой каждая встраиваемая карта будет.отображаться. Если этот язык недоступен, то карта будет использовать запасной язык, как описано.


 * 1) Look for value in the requested language
 * 2) Look for value in a language (or languages) that are specifically defined as fallback languages
 * 3) Look for a transliterated value
 * 4) Look for label in the local language
 * 5) If no value is found, display no label.

You can specify the language to use for labels by adding the  followed by the desired language code. e.g. lang="ja" to display labels in Japanese (if available).

Результат:. This shows map labels in the languages of the area mapped (essentially opting out of internationalization). This post gives more guidance about when, and why, you might wish to user lang="local"—and generally explains how OpenStreetMap multilingual data works.

Without the  attribute, maps will display in the language of the wiki in which they appear.

Map language fallbacks
Initially these fallbacks follow those found in MediaWiki. The language fallbacks for Maps are stored in fallbacks.json and can be made different than the MediaWiki settings. Individual Wikimedia projects can [https://phabricator.wikimedia.org/maniphest/task/edit/form/1/?title=Request%20to%20change%20Maps%20fallback%20for%20XXXX%20Wiki&tags=Maps&description=Please%20provide%20a%20link%20to%20community%20consensus%20for%20this%20change.%0A%0AA%20description%20of%20the%20requested%20fallback%20is%20also%20needed. request a change to this fallback process] in Phabricator. More Technical information can be found in T192701.

Maps use map data, including map label data for all languages, from the open-source mapping project OpenStreetMap. If the map you want to display doesn’t offer labels in the desired language, you can add labels in that language by adding them to OpenStreetMap. To get you started, there is an OpenStreetMap Beginners’ Guide, and guidance about naming conventions.

A community can decide to change its language fallbacks
Read all about changing your language's fallbacks on the Map Improvements project page.

См. также

 * Условия использования сервиса Wikimedia Maps
 * Help:VisualEditor/Maps - How to add and edit maps with the visual editor
 * Информация по использованию объектов OSM на картах
 * Maps project (2015-2017) - Documentation on the Wikimedia engineering activity from the Discovery team from 2015 to 2017
 * Map improvements 2018 - Documentation on the Wikimedia engineering activity from the Collaboration team in 2018
 * Kartographer Developer guide