JA:WIWOSM

From OpenStreetMap Wiki
Jump to navigation Jump to search
ドイツ語版ウィキペディアの画面キャプチャ:オーストリアの記事にベクターデータを採用(地図の中の赤い部分)

WIWOSM (Wikipedia where in OSM =ウィキペディアにOSMデータを使用) というプロジェクトでは、OpenStreetMap に収載した地物をウィキペディアの記事に表示します。地物にタグ wikipedia=* が付いていると使えます。WIWOSM の利用はウィキペディア内の地図に限定されます (OSM-GadgetWikiMiniAtlasを参照してください。)

Commons と OSM

ウィキメディアコモンズに収載され、位置座標が登録された画像には、対応する地図があります。 https://wiwosm.toolforge.org/osm-on-ol/commons-on-osm.php

写真を含むメディアはすべて位置情報のあるメディア位置座標のあるカテゴリにまとめてあります。

kml-on-ol

手伝える人募集中!
タグ付のエラーを訂正しています

例として

https://wiwosm.toolforge.org/osm-on-ol/kml-on-ol.php?lang=en&title=Austria
上記の問い合わせは、次の問い合わせと同じ内容です。
https://wiwosm.toolforge.org/osm-on-ol/kml-on-ol.php?lang=de&title=Österreich

オーストリアを地図上に表示します。URLの文字列に含まれるタイトル属性は、英語版ウィキペディアの記事を示しており、OSM側の オーストリアではwikipedia=de:Österreichを使い、ドイツ語版ウィキペディアがタグづけされています。「現状」のウィキペディア側の言語間リンクは索引化されていることから、OpenStreetMap 側でリンクは1件で充分です。リンク先はウィキペディアのどの言語版でもかまいません。

利点

WIWOSM 経由で参照するオブジェクトには、もう「ハードなリンク」をする必要はありません。以前は特定のオブジェクトにリンクするには、OSM-ID を参照するしか方法がありませんでした。その方法の短所というと、ID が浮動したときにリンク切れを起こすことでした。

他の例:ドイツのミニチュア鉄道に関する記事 [1] の場合。鉄道駅のポイント、鉄道軌道のライン、鉄道施設のポリゴンを使用。
ウィキペディアにとっての利点
このプロジェクトはウィキペディア利用者に、地図の複雑なオブジェクトに対して、ワンクリックで使えて詳細なビューを提供し、たとえば河川、道路、都市の地区などを表示できます。ウィキペディアの座標コードの可能性が広がり、記事ごとに複雑なラインやポリゴンの表示にポイント1件しか必要としません。OSM から幾何学を参照し、正しいズームレベルで地図を表示します。
ウィキペディアのコンテンツにとって、WIWOSM は地理情報システムと連携するチャンスです。ということは、たとえば特定の記事に書かれたものの面積、あるいは他の記事に登場する主題がほかのどんな記事に現れるかわかります。
OpenStreetMap にとっての利点
このプロジェクトにより OpenStreetMap が単なる地図ではないことが示されます。使用事例の多いデータベースでもあるのです。ウィキペディアンの皆さんにも OpenStreetMap に編集者として参加してもらうように呼びかけたら、品質を上げていけると予想されます。ウィキデータとの連携も、たくさんのオブジェクトのラベルがいくつもの言語に翻訳されていくはずです。

オブジェクトのタイプ

OpenStreetMap ではそれぞれのオブジェクトをいくつかの方法で表現します。これは、たとえば placeノード(特定の1点)でも multipolygon (ひとつの面)でも表現できます。このプロジェクトでは最も複雑な表現方法を試みます。一方で、ウィキペディアで単一のノードが地図上に表現する情報量は、通常の地理コードと比べると限定的です。他方で特定の都市の place のノードには付加的なデータがたくさん含まれ、ウィキペディアと連携すると有用です。

その他の使用事例として、 waterway=riverwaterway=riverbank を使うには、コミュニティで議論を経る必要があります。ぜひこのページの議論ページをご利用ください。

プロジェクトの発想はウィキペディアの特定の記事に対し、OSM オブジェクトを大量に簡単に持ち込む上で実に有効です。ただし単一の OSM オブジェクトに対して連携できるウィキペディア記事はたったひとつです。その解決策として、リレーションの活用をかんがえています。

ウィキペディアと OpenStreetMap の主眼は場合によって異なる点にご留意ください。つまり、歴史上の事物あるいは標本の 分布_(生物)など、OSM の趣旨から外れるものは追加しないようにお願いします。この問題の解決は後日、他のプロジェクト、たとえば Template:Attached_KML などで取り組めたらと希望しています。

またこのシステムには限界があることも忘れないでください。世界中の郵便ポストにタグを貼って「郵便ポスト」という記事にリンクさせたいなどと考えても不可能ですし、OSM のコミュニティから抗議を受けることになります。そのような発想は、作業を始める前に協議をお願いします。またシステムは、たとえば「都道府県道」というウィキペディアの記事の集約に使おうとしてもうまくいきません。そういう目的でウィキペディアに地図を追加したいなら、おそらくWikipedia Map workshop(英語版)に依頼する方が得策かもしれません。

技術面の手順

データの基本

このプロジェクトで使うデータは、toolserver.org にある mapnik-databese のデータです。ときにはデータ複製の所要時間が長引きます。munin-stat(リンク切れ)

ウィキペディアのタグで絞りこむ

OSM には wikipedia=* タグを用いる方法が複数あり、できるだけ多数をサポートしたいと希望しています。 ただし最上策は常に推奨方法を使うことです。wikipedia=lang:article.

スキーマ サポート
wikipedia=lang:article wikipedia=de:Dresden 推奨 タグのスキーム。タグは1件で十分!
wikipedia:lang=article wikipedia:de=Dresden これも有効。もし複数のウィキペディア・タグが検出されると、最初に取得したタグを採用します。ウィキペディアの他の言語版の取得に使うのは言語間リンク
wikipedia=http://lang.wikipedia.org/wiki/Article wikipedia=http://de.wikipedia.org/wiki/Dresden 処理(https でも可能)
wikipedia:lang=http://lang.wikipedia.org/wiki/Article wikipedia:de=http://de.wikipedia.org/wiki/Dresden 処理(https でも可能)
wikipedia=lang:list-xy#object wikipedia=de:Liste der Kirchengebäude in Chemnitz#Schlosskirche 半角イゲタ '#' で区切ったアンカーで、オブジェクトに個別の記事はないが一覧記事に記述されているものの列記に使います。この方法の不便な点は、完全な記事名の列記ほど安定しないこと、ウィキ間リンクに対応しないことです。ウィキペディアの記事にリンクさせると、正しい位置に間違うことなくジャンプします。Liste der Kirchengebäude in Chemnitz#Schlosskirche(Wikipedia) の例(教会の一覧記事に含まれる特定の教会。)
wikidata=wikidata_entity wikidata=Q1731 2014年4月にウィキデータ・タグをベータ展開、ウィキデータのQ番号で問い合わせが可能。
wikipedia=article wikipedia=Dresden これは broken.html ログに記載。もっと明確な問題の説明が足りません。 ぜひ修正に協力してください!

ウィキペディアでリダイレクトになった記事名は使えませんのでご注意ください。

例:Frasher(Wikipedia)はリダイレクトされてFrashër(Wikipedia)となる。でも Frasher at WIWOSM ではエラー。

ウィキデータ

基本的な wikidata=* タグにサポートがあります。
その逆の発想(OSM-IDをウィキデータから取得する。例=属性のP402)はOSM-IDという繊細なデータを対象にしようとする店だけでも認められません。

WIWOSM を利用すると特定の事物について、ウィキデータを介してさまざまなウィキプロジェクトを横断し、いろいろな記事を結びつけることができます。
その過程とはウィキデータの 'wb_items_per_site' テーブルで Wikidata-ID (Qで始まる文字列) を検索子として、リンクする記事をすべて抽出します。
API に対してウィキデータのIDを使い、オブジェクトを問い合わせる書式は次のとおりです。

 https://wiwosm.toolforge.org/osmjson/getGeoJSON.php?lang=wikidata&article=Q1731

あるいは地図の問い合わせなら次のとおりです。

 https://wiwosm.toolforge.org/osm-on-ol/kml-on-ol.php?lang=wikidata&title=Q1731

ログの取得

皆さんの善意のおかげで、ウィキペディアのタグの間違いをかなり減らせました。約4万4000 オブジェクトから4000以下です。すごい!
ウィキデータによるリンク方式のおかげで、その他のバグも発見しましたが、過去には発見できなかったものです。
理由として仮定できるものをあげます。

  • WIWOSM にバグ
  • ウィキデータにバグ(もしくはツールサーバ用のクローンにバグ)
  • OSM 側のタグ付けにバグ

ログを開いて検出できない記事がないかテストしてみてください。 すると新たにエラー解決が実現するかもです。 ;)

WIWOSM 処理のログはさまざまな形式で入手できます。

種類 リンク 備考
json https://wiwosm.toolforge.org/wiwosmlog/broken.php gzipp圧縮した json ファイルとして最新のエラーログを入手。
html https://wiwosm.toolforge.org/wiwosmlog/broken.html ブラウザでログを閲覧、編集用リンクやフィルターなど便利な仕様付き。
html http://osm.jjaf.de/wiwosm/log/?stats User:Jjaf.deさんのおかげで編集リンクの統計が取れました。
フィルターを使えるので例をあげます。http://osm.jjaf.de/wiwosm/log/?t=r&s=DE これはドイツ語で対応を見るフィルターです(TSV と ods 形式の表組みでも可)
tsv http://osm.jjaf.de/wiwosm/log/ タブ区切りのテキストファイル形式
ods http://osm.jjaf.de/wiwosm/log/broken.ods OpenDocument の表組みです。

エラー修正を楽しんでもらえるとありがたいです!

簡略化

ポイントが多いオブジェクトには、PostGIS 関数 ST_SimplifyPreserveTopology() を使い、ブラウザに渡すデータ量を減らしています。 また数字の位取りの記号も除去します。 現状の簡略化の戦略は次のとおりです。

ST_AsGeoJSON(
  CASE
    WHEN ST_NPoints(ST_Collect(way))<10000 THEN ST_Collect(way)
    WHEN ST_NPoints(ST_Collect(way)) BETWEEN 10000 AND 20000 THEN ST_SimplifyPreserveTopology(ST_Collect(way),(ST_Perimeter(ST_Collect(way))+ST_Length(ST_Collect(way)))/500000)
    WHEN ST_NPoints(ST_Collect(way)) BETWEEN 20000 AND 40000 THEN ST_SimplifyPreserveTopology(ST_Collect(way),(ST_Perimeter(ST_Collect(way))+ST_Length(ST_Collect(way)))/200000)
    WHEN ST_NPoints(ST_Collect(way)) BETWEEN 40000 AND 60000 THEN ST_SimplifyPreserveTopology(ST_Collect(way),(ST_Perimeter(ST_Collect(way))+ST_Length(ST_Collect(way)))/150000)
    ELSE ST_SimplifyPreserveTopology(ST_Collect(way),(ST_Perimeter(ST_Collect(way))+ST_Length(ST_Collect(way)))/100000)
  END
,9) AS geojson

もっと良い方法があったら、ぜひ情報提供をお願いします。

GeoJSON と圧縮

GeoJSON に対するgeometry はPostGIS 関数で算出し、圧縮したファイルをサーバに置きます。 ファイルの投影図法は Google mercator を採用。

国際化(翻訳)

ファイルシステムでウィキペディアの言語間リンクを使い、ハードリンクを生成します。
ファイルシステムの構造の基本はハッシュタグ指揮のアルゴリズムで FNVという名称です。
作業の流れを紹介します。

 1. 特定の言語でString を書き、その後に、単語の間のアンダースコア(_)を半角スペースに置換した記事名を続けます。
 2. この文字列の fnv ハッシュタグを、たとえば16進数で 1A00A138 として計算処理します。
 3. ファイルのパスを設定します。たとえば /1A/1A00/1A00A138_lang_articlename.geojson.gz (言語名と記事名から禁則文字を除去、230文字以内に短縮)
 4. そのファイル用に gzip 圧縮した GeoJSON を書きます。
 5. 特定の記事に対して言語間リンクで他の言語版を検出し、1件ずつ、上記  1-3 の作業を行うとそのファイルに対応するハードリンクがファイルシステムに構築できます。

この手順には利点があり、適切な geojson ファイルに迅速にアクセスできる点です。それには対象の言語を理解できて、データベースのクエリ他の手段を使わなくてもどの記事かわかる必要があります。 もっと複雑さが少ない更新戦略なら、言語間リンクの検査を省略してファイル1件だけ更新することもできます。

クライアント側

geometry は OpenLayersWikiMiniAtlasLeaflet(ベトナム語版の選択型のガジェット)のどれかで実行します。 geometry を読み込み、ポイント1点以上になる場合は注目して対処します。

更新

  • 部分更新(スマート更新)は水曜日以外の毎晩、実施します。水曜日には全面更新をかけますので、ディレクトリ全体を廃棄して完璧に新規に生成します。スマート更新では OSM-オブジェクトもしくは対応するウィキペディアのタグが削除済みか、あるいは言語間リンクに新しい言語を追加したかどうか、検出しません。これらの作業は全面更新でのみ行い、所用時間は全面更新が最低84分、スマート更新が最低34分です。
  • If you add a new Wikipedia-Tag and can not wait, you can update with (URL:+"?...&action=purge"). This procedure is relative expensive for us and needs 30-60 sec to be finished, because we have to look up this article in the hstore of the mapnik db on toolserver.
    So if you can, please wait to next day and be careful with this feature (Don't send the URL to a mailing list.). Have also in mind that the toolserver database has a replication lag of some minutes, so please wait after your edit at least 5 minutes.
    (2014年以降は非推奨)

API

2014年4月18日以降はAPI-URLの移動を toolserver から labs に振り替え、新規の URLに移りました。

旧来の URL
http://toolserver.org/~master/
新規の URL
https://wiwosm.toolforge.org/ STRINT
https://wiwosm.toolforge.org/

旧来の URL はここでリダイレクトにする必要があります - でも未処理です!

GeoJSON

特定の記事の GeoJSON(Wikipedia)ファイルのコンテンツを直接、取得するにはlangarticle 属性を使います。

https://wiwosm.toolforge.org/osmjson/getGeoJSON.php?lang=de&article=Dresden

GeoJSON が存在しない場合、HTTP 404 Not Foundを返します。

存在の有無をチェック

特定の WIWOSM オブジェクトのコンテンツを取り込まないで、存在だけチェックする場合、 action=check 属性を使います。:

https://wiwosm.toolforge.org/osmjson/getGeoJSON.php?lang=de&article=Dresden&action=check

既存のオブジェクトに 1 を、それ以外は 0 を返します。

手動の再生成

If you explicitly want to regenerate a single WIWOSM-object before the nightly update process you can use action=purge but use with care! ( 2014年以降は非推奨)

ソースコード

WIWOSM together with POIs from Wikipedia

テスト用リスト

作成者のお勧め

地図の例は以下のリストに収納してあります。

その他の例

ウィキペディア wikipedia=* in OSM ツールサーバ上の結果
Strategischer Bahndamm(Wikipedia) リレーション type=collection relation 551400 [2]
Residenzenweg(Wikipedia) リレーション type=superroute relation 31636 [3]
Rhein(Wikipedia) リレーション type=waterway relation 123924 [4]

よくある質問

  • 機能 xyz を地図に追加したのに、ウィキペディアに反映されません

まずログを調べて、自分の編集後、データ更新が実行されたか確認します。編集したデータが正しいかどうか調べてください。

やることリスト

WIWOSM の未処理はまだたくさんあります(2012年4月時点)
皆さんもOSMにもっとウィキペディアのタグ付けを持ち込む手伝いをお願いします
ヨーロッパのWIWOSM登録箇所(2012年4月時点)

作成者 / 連絡先

運用状況

  • 2012年7月10日 WIWOSM の運用をすべての言語版ウィキペディアで開始(Internet Explorerでは適用外)
  • 2012年3月21日 ドイツ語版ウィキペディアでWIWOSM のベータ期間を開始。
  • OSM ライセンス要件変更後、WIWOSM は他の言語版でも運用の予定です。

関連項目

  • Add-tags - ウィキペディアのタグを OSM に付ける作業を補助するサービス。JOSM の RemoteControl 機能を利用します。
  • OSM-ウィキペディア地名ツール - Toolserver 上で運用
  • WikiMiniAtlas - OpenStreetMap データに依拠するマップ用ウィジェット。採用するウィキペディアは多く、WIWOSM データを表示。
  • JOSM ウィキペディア用プラグイン - JOSM のプラグインで、利用者がマッピングする地域に関連するウィキペディアの記事一覧を表示します(位置順もしくはカテゴリ順。)ダブルクリックするだけでウィキペディア・タグを追加でき、さらにすでに WIWOSM it サーバがどのオブジェクトを処理済みか示します。
  • Osmose 分析機能 - Osmose ウィキペディアタグを分析します。採用する言語版は限定的。
  • Help:Extension:Kartographerは WIWOSM を使いません