Help:Extension:Kartographer/ja

Kartographer はWikimediaのウィキ上で対話的な操作を行う地図を扱う拡張機能です. このページでは動的な地図の作成に使うKartographerのタグを使い分けて、を使ってウィキページに地図を正しく組み込んだり、を使って動的な地図にリンクを作成したりする技術を説明しています.

さあ、はじめましょう
 このコードは、画面右側のサンプルのような、"Downtown San Francisco"というタイトルの付いた簡略でインタラクティブな地図を挿入します.


 * ウィキボヤージュとtest2wiki（テスト空間）では埋め込み地図はインタラクティブで対話型の操作ができます. 地図の回転はクリック1回で操作; ダブルクリック (もしくは右角のアイコンを押す) で地図を全画面表示し、やはり対話型の操作ができます.
 * ウィキペディアを含むウィキメディアのウィキでは、これは静的地図を埋め込みます. クリック1回で地図は全画面表示になり、それも対話型の操作ができます.

パラメータは、デフォルトの配置から、左寄せ、右寄せ、あるいは中央寄せに変えます. 属性では拡大率を0から19に設定できます. ゼロで最も縮小し、19で最も拡大します.

の使用法
 { "type": "Feature", "geometry": { "type": "Point", "coordinates": [-122.3988, 37.8013] }, "properties": { "title": "Exploratorium", "description": "", "marker-symbol": "museum", "marker-size": "large", "marker-color": "0050d0" } }

タグはGeoJSON editorが生成するような書式設定付きのGeoJSONで、値は空か有効でなければなりません. KartographerはMaki icons （クリエイティブ・コモンズ0でライセンス）でsimplestyle specificationをサポートします. 対応するすべてのアイコンはHelp:Extension:Kartographer/Iconsに一覧があります.

枠線
テンプレートに挿入するには枠線のない地図が適している反面、外枠のある地図は、処理が手書きでもビジュアルエディターを使っても、ページへの直接の埋め込みに適しています.


 * 「frameless」属性で外枠のない地図を埋めこむ:
 * 属性でキャプションを追加.

==

もまた外部パラメータ「text」を受け取り、座標の代わりにリンクテキストを指定します：

Add additional classes to with the class attribute. For instance  to hide the pin in front of the link.

タグは と同じgeojsonを含む場合があります.

=== 属性で設定できます. この属性が無い場合は座標が表示されます（例：  が魔法値   や   に設定されます. この事例では  を逐次的なカウンター   で、  を   の値でそれぞれ置き換えます.

GeoJSONにひとつ以上のカウンターがある場合、最初のものの値はリンクテキストとして表示されます. さらにオプションとして、エディタが同じページで同時に複数のカウンターを持つために接尾辞を付加するかもしれません. このように、  は   とは異なるカウンターを持つでしょう.

各カウント用グループに判別しやすい配色をすると有意義でしょう. 経由で追加された全てのデータは  属性が使用されない限り、  で挿入された全てのマップ内で表示されます.

上記は以下のように展開します

ポップアップ・マップの位置をコントロールするには、 、 と 属性を使います. リンクのテキストには を使用してください（有効なウィキテキスト・マークアップなら何でも適用）. 名前のあるグループの場合には を使うと、このタグの内容を追加します（下記参照）.

マーカー
マーカーを使うと位置を示すことができます. これらの機能を追加するには、JSON 形式を使います. contains a full list of icons that can be used as marker symbols.

結果:

マーカーには画像や記事へのリンクといった情報も含めることができます.

結果 (結果を見るにはマーカーを操作してください):

OSMデータ用のWikidata IDを使うと、geoshapeサービスを利用して境界を強調することができます.

結果:

Wikidata IDを使うと、除外する領域を指定して地図全体をマスクすることができます.

結果:

マーカーに数字を付けられます.

結果:

マーカーに文字を使うことができます.

結果:

featureの集合を使って異なるサイズの地図マーカーを複数追加します.

結果:

様々な色の地図マーカーと様々なカウンターのグループを追加します.

結果:


 * 地図マーカーにはRBG 値を備えた任意の色を使うことができます（「RGBカラーピッカー」でインターネット検索すると例がいくつかヒットするはず. 訳注：color picker（英語）参照）.
 * マーカーのサイズ分けは大・中・小の3種類（small、medium、large）.
 * 別の場所で作成したGeoJSONをコピーして使用するには (サンプル)に貼り付けます. (ライセンシングと著作権の制約を遵守)
 * ウィキボヤージュで地図を作成するなら、グループ (下記参照) を指定すると良いかもしれません.
 * 外部データを自分の地図に追加する方法をもっと知りたい場合は外部データセクションを参照.

グループ
ウィキボヤージュのプロジェクトで地図を使う場合には、地図データの定義がページ内の別の場所にあり、それを表示させる必要があります. 例えば、複数の「見どころ」（POI）がそれぞれのタグで定義され、全てを表示する共通の地図がページ脇にひとつあると仮定します.

グルーピングのコンセプトにより、編集者は複数の 及び タグ間でデータを共有できます.

既定では、 または タグ内のデータはそのタグ単体に限定して表示され、他の箇所では表示されません.

や で   属性を指定しておくと、タグ内のデータは共通するグループ名を持つ他のデータと一緒に特定の名前付きグループに置かれます. その結果、同じグループ名のタグが表示する地図データは全て同じで、個別のタグは逐次、グループにデータを追加していきます.

タグがグループに所属するかどうかに関わらず、 属性を指定すると他のグループにも表示できます. 複数のグループ名はカンマ区切りで指定します. グループ名の記述には小文字のローマ字しか使えません. 下の表に、それぞれのタグでどんなデータを表示できるかまとめました.

外部データ
 { "type": "ExternalData", "service": "geoshape", "ids": "Q797" }

ポリゴン描画にはGeoJSONを使えるし、地図上の目印となる著名なオブジェクトのアウトラインを使える場合があります. OpenStreetMapデータベース内で同様に定義されているものであれば、対応するウィキデータIDで抽出することができます. 例えばウィキデータで「アラスカ」に対応する項目Q797を利用し、「外部データ」の出典機能を使うと地図上にアラスカを描画します. カンマ区切りで複数のIDを指定することもできます. 興味深いエリアにマスクを掛けるには、「geoshape」サービスを利用します. これを反転して、それ以外の全てにマスクを掛けるには「geomask」サービスを使います.

Wikidata クエリ経由でのGeoShape
 { "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" }

これはウィキデータのIDがよく知られている場合のシンプルなユースケースには役立ちますが、ウィキデータのクエリの結果としてIDの一覧を取得したいような場合があります. あるSPARQLのクエリは結果のID列にある全米の州の一覧を取得し、geoshapesサービスはそれぞれの州に幾何的なアウトラインを追加します. SPARQLクエリ結果内の他の全ての列は「プロパティ」オブジェクト内の値になります. 「fill」列は州の色を変更します. 「title」列は州知事の名前を表示し、「description」列には州の名前と知事の写真を表示するウィキのマークアップがあります. このクエリを編集するには、''' https://query.wikidata.org/#... '''のところの"#"記号の後にあるクエリ・パラメータをコピーします:

コモンズのマップデータ

 * 詳細情報: 

コモンズ上にストアされているマップデータは地図上に描画することができます. 例, 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 です:

 [ {    "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      ]    }  } ]

Commonsの地図データは他の種別のデータと組み合わせることができます:

Wikidata ID 要素の書式
 { "type": "ExternalData", "service": "geoline", "ids": "Q2108", "properties": { "title": "Highway I-696", "description": "", "stroke": "#ffb100", "stroke-width": 8 } }

外部データ用にはproperties（属性）キーワードを使って、書式とタイトルを追加することもできます:

主なスタイルのキーは次のとおりです: "stroke" (色)、"stroke-width"、"stroke-opacity"、"fill" (色), "fill-opacity".

位置が重なる要素
位置が重なる地図要素はコードに書かれた順に描画されます. 例えば、ある地図に重複する線が2本ある場合、1番目と定義された線は2番目と定義された線の下に現れます. 次の例に、これが地図の見た目に与える影響を示します:

 { "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 ] ] } } ] }

上記の地図用のコードは3つの要素を含み、全てGeoJSONの「feature」機能を使っています. 最初の形態は「Polygon」で、赤い矩形で示します. これに「LineString」形態が2つ続いています. 黄色の線は1番目に定義されたので、黒い線の下に潜っています. 要素の描画に際してはデータの種類に無関係に、つまり生のGeoJSON でもWikidata IDに対応しても、あるいは Commonsデータページを示しても、階層構造が適用される点に注意してください.

下記地図は最初の例から順序を変えたものです: 1番目に定義された黒い線は、スタックのいちばん下に移動しています:

 { "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 ] ] } } ] }

レンダリングのオプション
以下の表は の地図をウィキページに表示する際にどのように整形できるかを示しています. 表内には２つのカラムがあります: 1番目は タグ経由でのインタラクティブな地図、2番目は同じオプションのサンプル画像のレンダリングを示しています.

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

地図の言語
地図ラベルは地図を組み込んで表示するwikiの言語を使用しようとします. その言語が使用できない場合、地図は以下の記述に従ってフォールバック言語を使用します.


 * 1) 要求された言語での値を探す
 * 2) フォールバック言語として指定された(複数)言語での値を探す
 * 3) 翻訳された値を探す
 * 4) その地域の言語でのラベルを探す
 * 5) 値が無い場合には、ラベルを表示しない.

ラベルに使う言語は に続けて希望する言語コードを追加することで指定できます. 日本語（利用可能な場合）でラベルを表示する場合の例： lang="ja".

結果: を使うことができます. これを使うとマッピングされたエリアの言語（本質的に国際化のオプトアウト）で地図のラベルが表示されます. こちらの記事に、どのような時に、なぜ、 lang="local"が必要となるか、そしてOpenStreetMapの多言語データがどのように機能するかについての全般的な説明があります.

属性が無い場合には、wikiが表示される言語で地図が表示されます.

地図言語のフォールバック
はじめに、これらのフォールバックはMediaWiki内のものに従っています. 地図用の言語フォールバックはfallbacks.jsonに格納されており、MediaWiki の設定とは異なるものに設定できます. ウィキメディアの各プロジェクトでは Phabricator で [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. このフォールバック手順の変更を申請できます]. より技術的な情報は T192701 にあります.

地図は、オープンソースのマッピング・プロジェクトであるOpenStreetMapから、全言語用の地図ラベルデータを含めた地図データを使用しています. 表示したい地図が欲しい言語のラベルを提供していない場合は、OpenStreetMapに追加することで、その言語のラベルを追加することができます. はじめての人向けには、OpenStreetMap初心者ガイドや命名の慣習についてのガイドなどがあります.

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

関連項目

 * 地図用の利用規約
 * Help:VisualEditor/Maps - How to add and edit maps with the visual editor
 * 地図でOSMオブジェクトを使用する際の情報
 * Maps project (2015-2017) - ディスカバリー・チームによる2015年から2017年のWikimediaエンジニアリング活動に関する文書
 * Map improvements 2018 - コラボレーション・チームによる2018年のWikimediaエンジニアリング活動に関する文書
 * Kartographer開発者ガイド