記事に貼られている座標リンクをクリックすると、GeoHack(ジオ・ハック、地理のハック)と呼ばれる画面に飛びます()。この画面では様々な地図サイト・サービスへのリンクが貼られています。そしてその中から自由にサイトを選んでリンク先へ飛ぶことができます。これは書籍サイトへのリンクを一覧表示するISBN用の特殊ページ[1]などと同種のものです。

ここではこのジオハックの技術的側面について簡単に解説します。より詳細な解説は以下のアドレスをご参照ください。

表示されるページはToolforge(Wikimedia Tool Labs)で生成されます。https://geohack.toolforge.org/index.php

ツールサーバに対してはURLを通じて、緯度・経度、縮尺、地域情報などが渡されます。次のものそうしたURLの例です(記事東京タワーで実際に表示されるURLです)。

  • https://tools.wmflabs.org/geohack/geohack.php?language=ja&pagename=東京タワー&params=35_39_31_N_139_44_44_E_region:JP_type:landmark_scale:2000

以下、URLの各部分について簡単に説明します。

  • https://tools.wmflabs.org/geohack/geohack.php
これはジオハックのURLです。運営者の都合により時々移動しますが、日本語版では{{座標URL}}で一元的に管理されています。
  • language=ja
表示する言語版を指定します。jaであれば日本語版のTemplate:GeoTemplateを元にページを作成し、enであれば英語版のen:Template:GeoTemplateを元にページを作成します。日本語版では{{座標URL}}でjaに固定されています。
  • pagename=東京タワー
閲覧者がウィキペディアのどの記事から飛んできたかの情報がここに書かれています。デフォルトでは{{座標URL}}の中に含まれる {{FULLPAGENAMEE}} のマジックワードにより、自動で記事タイトルが指定されています。
  • params=
この部分以降に{{Coord}}や{{ウィキ座標}}などのテンプレートで指定した数値やパラメータが並びます。
  • 35_39_31_N_139_44_44_E
まず緯度、そして経度が並びます。緯度_緯分_緯秒_南北(NS)_経度_経分_経秒_東西(EW) の書式を持ちます。各桁はアンダーバーで区切られます。
  • _region:JP_type:landmark_scale:2000
次に各種パラメータが並びます。パラメータ間はアンダーバーでつながれ、パラメータ内ではコロンが利用されます。
region:JP :これは地域コード(region)が日本(JP)であることを示します。
type:landmark :これは種別(type)がランドマーク(landmark)であることを示します。
scale:2000 :これは縮尺(scale)が1:2000であることを示します。
その他、各種パラメータの詳細については、PJ:GEO#パラメータをご覧ください。

GeoTemplate

編集

表示されるページは、雛形となるローカルテンプレート(Template:GeoTemplate)とローカルのjavascriptコード(MediaWiki:GeoHack.js、2010年時点で日本語版未導入)を元に生成されます。

上記ページをツールサーバが読み込み、その中に含まれる変数として記述されている部分を、#URLを通じて受け取った座標値やオプション値で、置換します。

置換される変数

編集

主な変数とその置換例の一覧を示す。置換例はエアーズロック南緯25度20分41.3秒 東経131度2分6.6秒 / 南緯25.344806度 東経131.035167度 / -25.344806; 131.035167)の場合の値を示します。

変数 置換例 説明
{latdegdec}, {londegdec} -25.344806, 131.035167 10進緯度、10進経度
{latdegdecabs}, {londegdecabs} 25.344806, 131.035167 10進緯度、10進経度(絶対値。常に正。非負)
{latdeground}, {londeground} - Rounded integer degrees
{latdegroundabs}, {londegroundabs} - Rounded absolute
{latdeg_outer_abs}, {londeg_outer_abs} - Absolute integer degrees rounded up
{latdegabs}, {londegabs} 25, 131 度(整数、絶対値)
{latantipodes}, {longantipodes} - {latdegdec}, {londegdec} の対蹠地
{londegneg} - The negative of {londegdec}
{latdegint}, {londegint} - Integer degrees (floored)
{latmindec}, {lonmindec} - Decimal minutes
{latminint}, {lonminint} 20, 2 分(整数値)
{latsecdec}, {lonsecdec} 41.3, 6.6 Integer seconds
{latNS}, {lonEW} S, E 半球
{utmzone}, {utmeasting}, {utmnorthing} 52J, 704819, 7195314 UTM
{region} AU 地域コード
{scale} 10000 縮尺
{zoom} 8 ズーム
{title} ウルル 記事タイトル

セクション

編集

DIVタグを用いてブロックを作ることで、指定した地域コードに応じて、情報の表示位置をページ内で変化させられる機能が、ジオハックにはあります。

この機能は、各地点に特化した地図サイトを画面上部に表示させるのに使われます。

たとえば region:JP と指定すると、日本語の地図サイト一覧が画面上部へ上がり、region:US と指定すると、アメリカを対象とした地図サイトが画面上部へ上がる、というシステムです。

次の二つは両方とも東京タワーを指すリンクですが、地域コード以外は、座標を初めとしてすべてのパラメータが同一です。しかし地域コード regionだけがJPとUS で異なります。表示がどう変わるか確認してみてください。


現地サイトの表示場所は以下のように指定します。id が "GEOTEMPLATE-LOCAL" である DIVブロック要素を作ると、地域コードに応じて、この場所に、現地サイトの情報が格納されます。

<div id="GEOTEMPLATE-LOCAL"></div>


各地域ごとのサイトは、id が "GEOTEMPLATE-XX" である DIVブロック要素で作ります。例えば日本であれば id は "GEOTEMPLATE-JP"、アメリカであれば "GEOTEMPLATE-US" です。地域はISO 3166-1 alpha-2で指定します。詳しくは地域コードをご覧ください。

<div id="GEOTEMPLATE-XX">
...
</div>


以下のDIVブロック要素は表示が省略されます。idが"GEOTEMPLATE-REGIONS"とされている部分です。これは表示を簡易にする、および通信量を抑えるためのもので、関係の無い地域の地図サイトを非表示にするのに使用できます。

<div id="GEOTEMPLATE-REGIONS">
...
</div>

その他

編集

ローカルテンプレートの編集を行ってから、その変更が実際の表示に反映されるまで、最長で約4日ほどかかります(更新のタイミングがあるようです)。

ローカルテンプレートでは条件文や複雑なテンプレートなどが使用できません。使用しても、ツールサーバで置換処理を行ったとき、それらの複雑なコードは無視されます。単純なウィキテキストのみが、ツールサーバの処理を経た後も綺麗に表示されます。

もしあなたが、座標を使ってリンクできるよいサイトを何か知っていたら、ノートへご一報下さい。特に日本語で利用できるページが少ないため、そうした情報が待ち望まれています。

運営者

編集

ジオハックは以下のユーザーにより運営・メンテナンスされています。