ちずぶらりHackers

オープンソースの古地図/絵地図アプリ基盤、Maplat開発してます。同種のソリューションに対する優位性は、色々ありますが一番は、あらゆる地図間で双方向1対1座標変換可能な点です。会津若松のサンプル試してみてください。=> http://bit.ly/aizumap

ちずぶらりデータへのアクセス方法解析結果(その1)

別ブログに投稿した内容の再編集再掲です。 今後、ちずぶらり及び周辺技術の話題は極力こちらに集めたいと思っております。

ちずぶらりデータのオープンデータ化の表明が為されました。

こちらのイベントの場において、ATR Creativeの高橋徹さんによって、ちずぶらりデータのオープンデータ化の表明が為されました。

ただ、とはいっても、ATR Creative社が勝手にコラボレータから預かっているデータを全部オープンデータ化するわけにはいかないので、そこはコラボレータが意思表示した場合に、オープンデータとしてアクセスしてもよいという事にする模様です。
具体的には、同社は今、ちずぶらり部という、コラボレータのための地図データエディタSNSのようなものを作っていて、そこでは震災記憶地図のようにコラボレータが地図を編集し、タグをつけ、編集が終わった地図を公開できるようにするそうなのですが、その際の地図のメタデータとして、コピーライトの部分にオープンデータであると記載した場合、そのデータをオープンデータにするという対応にするそうです。
それ以外の対応をする予定は特にないとのこと。


地図エディタの上記の部分にオープンデータであると表明した場合、オープンデータになるという仕様だそう。

しかし、これだけではオープンデータ化利用に不十分

しかし、高橋さんのオープンデータ化方針はすばらしいのですが、実際にちずぶらりデータをオープンデータとして用いるには、これだけでは不十分なのです。
少し実証してみましょう。

高橋さんの提示されたやり方であれば、今同じように地図エディタとして公開されている震災記憶地図でも、オープンデータが作れるはずです。
テキサス大学でパブリックドメインで公開されている、米軍による戦後すぐの日本の都市計画図から、我が故郷姫路の地図を登録して、マッピングしてみました。
もちろん、コピーライト、ついでにタグにも、CC0、オープンデータの表記。

これで、この地図データは、地図画像だけでなくマッピングポイント等も含め、オープンデータになりました。
さあ、皆さん、ご自由にお使いください!

…使えませんね。
データへのアクセス方法が提示されていないのですから、文面でだけオープンデータ化した、等と書かれても再利用することはできません。
高橋徹さんの示されたオープンデータ化の方式だと、コラボレータがデータをオープンデータ化すると表明しても、データへのアクセス方法がないのです。
いや、もっというと、コピーライトへのオープンデータ記載しても、Web上で地図のメタデータとして表示されないので気付く事もできませんし、タグに書くと表示はされますが、検索はできないのでこれまた気付くのは困難。
糅てて加えてデータへのアクセス方法も判らない。
どうすればいいでしょうか。

データへのアクセス方法が判らないなら、解析すればよい

結局のところ、全ちずぶらりデータへのアクセス方法を解析した上で、その中でオープンデータ表明されているものだけを自由に使わせてもらうしか、現状方法はありません。
アクセスして良いデータだけにアクセスさせる方式ではなく、どのデータにもアクセスできるのだけど、ライセンスで縛る方式です。

似たようなアプローチとしては、国立公文書館がありますね。
国立公文書館も、Webに出ている所蔵物データはほぼ、ライセンス的には自由に利用可能なのですが、高解像度データのアクセス方法は不正アクセス禁止法等には触れない範囲でハックして解析しないと判りません。
あるいは、Google Mapsの地図タイル。
あれも、不正利用しようと思えば誰でも不正利用できますが、不正利用はしないでね、とライセンスで縛っています。
同じように、ちずぶらりも、オープンデータ化したお宝を利用可能にするために、全てのデータアクセス方法をハックしてしまいましょう。

まず結論:

解析手順を書いた所で、興味のない人には興味がないでしょうから、まず結論としてのデータアクセス方法を示します。

地図データ

地図のマッピングデータと、ランドマークピン等の情報が入ったkmlデータ、及びそのランドマーク修飾用のリソース等がアーカイブされたデータです。

http://ods3.illustmap.org.s3.amazonaws.com:80/[地図ID].kmz
又は
http://css3.illustmap.org.s3.amazonaws.com:80/[地図ID].kmz

地図画像タイルデータ

地図をズーム毎にタイル分割した画像データです。

http://ods3.illustmap.org:80/tiles/[地図ID]/[地図ID]-[ズーム][X座標][Y座標].jpg
又は
http://css3.illustmap.org:80/tiles/[地図ID]/[地図ID]-[ズーム][X座標][Y座標].jpg

地図画像一括ダウンロードデータ

ズーム毎にタイル分割した画像データを一括読み込みできるsqliteファイルです。

http://ods3.illustmap.org:80/sqlite/MapHistMap[地図ID].sqlite
又は
http://css3.illustmap.org:80/sqlite/MapHistMap[地図ID].sqlite

画像IDの調べ方

  • 震災記憶地図で作ったデータであれば、地図ダウンロード用URLが http://ods3.illustmap.org.s3.amazonaws.com/eqstroly_static.html?e795caac64efa576cf41bda3024b52aa03334384/sup/EQ_txu-oclc-6565467_1 のような形で示される場合、最後のEQ_txu-oclc-6565467_1の部分が地図IDです。
  • ネットワーク中途に私的プロキシを立ててちずぶらりを動作させた場合、地図の移動や一括ダウンロード等の操作を行うと、上記形式のURLがアクセスログに残りますが、その中に地図IDが含まれています。
  • iTunesiOSデバイスを同期すると、Win/Mac問わず、必ずそのPCの中にアプリのバイナリが記録されます。そのアプリのバイナリはzip解凍等で容易に内部確認できますが、そうすると地図データファイル等が存在するのが判るので、地図IDを取得する事ができます。

画像IDや地図データを取得すればできること

  • 地図メタデータの取得、解析。
    地図マッピングデータを入手できれば、そのデータを元にTMSデータを作成したり、いろんな事ができます。
    もちろん、アクセス方法が判っても、オープンデータでないデータを公的に使えばライセンス違反ですし、私的利用であっても、ライセンス利用権を得ていないデータ(元データの含まれているちずぶらりを購入したりインストールしていない)を利用する事は、モラル違反です。
    使いたい場合は、オープンデータのみにアクセスするか、少なくともデータの所有権を主張できるデータに対してアクセスしましょう。
    少なくとも、私が今回作った姫路のデータ、地図ID:_EQ_txu-oclc-6565467_1 については、オープンデータである事を宣言してますので遊び倒してください。
    地図データのデータ内容分析については、次回の記事以降に掲載します。
  • 震災記憶地図での、地図ひとまとめ
    震災記憶地図では、次のようなURLスキームで、作成された地図を追加できます。
    eqstroll://od/[地図ID].kmz?sup
    これ、odという文字が使われているので、これをcsに変えるとcss3~系サーバにあるデータも読めるようです。
    すると、いろんなちずぶらりに収録されていて、一緒には比べられない地図を、震災記憶地図上でまとめて一緒に見る事ができます。
    たとえば、こちずぶらりの平安京地図、京都ちずぶらりの洛内イラスト地図、京都愛の伝説の古地図、御所ぶらりの御所の中の地図は、アプリが違うのでいっぺんに切り替える事はできないはずですが、それぞれの地図IDを調べて、この方法で震災記憶地図に持ってくると、全部いっぺんに楽しむ事ができます。

    上記のように、普通は一緒に見る事のできない地図達の夢のコラボが実現できます。
    大事な事なので何度も書きますが、オープンデータでない地図、及び所有権を主張できない地図に関しては、アクセスしないようにしてください。

以下は解析方法紹介…まずデータがおかれているサーバを調べてみる

データ取得方法の説明はここまでです。
データの仕様紹介については次回以降の記事に譲って、以下は上記結果を得た解析方法について説明します。
興味ない方はここまでで問題ありません。

まず解析の手始めに、ちずぶらりデータが置かれているサーバの名前を解析してみます。

震災記憶地図の追加地図の読み込み用URLとして出てくる

震災記憶地図のアプリへの追加地図読み込み用URLは、http://ods3.illustmap.org.s3.amazonaws.com/eqstroly_static.html?e795caac64efa576cf41bda3024b52aa03334384/sup/_EQ_txu-oclc-6565467_1のような形で、ods3.illustmap.org.s3.amazonaws.comが使われています。

Android版ちずぶらりで、ネットワークがない状態で出てくるエラーメッセージに出てくる

たとえば、延喜式ちずぶらりだと、ネットワークオフで起動した場合、

のような形で、css3.illustmap.orgというサーバ名が出てきて、このコンテンツが同名のサーバの上に置かれている事がわかります。
なお、このURLがわかると、たとえば有料のちずぶらりでも、このhtmlをブラウザでアクセスすれば普通にちずぶらりとして使えてしまいますが、ライセンスされていないデータにはアクセスしないようにしましょう。
html経由でアクセスしたくとも、アクセスしたければ正規のちずぶらりを入手、特に有料のものは対価を支払って、データの所有権を主張できる状態にしてから、アクセスしましょう。

Web版ちずぶらりのデータ要求先がcss3.illustmap.org

ATR Creative社のちずぶらりトップページで、表示されている地図のタイル画像が、 http://css3.illustmap.org/tiles/Rumsey5002Japan1897/Rumsey5002Japan1897-0_0_0.jpgのような形でcss3.illustmap.orgが使われています。

プロキシを経由してちずぶらりを動作させた場合、プロキシのアクセスログに残る

ネットワーク中途に私的プロキシを立てて、httpのアクセスログを記録すると、4ドメインへのアクセスログが残ります。
たとえば震災記憶地図だと、
XXX.XXX.XXX.XXX - - [XX/Jun/2014:XX:XX:XX +0000] "GET http://ods3.illustmap.org.s3.amazonaws.com:80/_EQ_takata002.kmz HTTP/1.0" 200 1509011 "-" "EQBurari/3.000.4510 CFNetwork/672.1.14 Darwin/14.0.0"
のような形で、ods3.illustmap.org.s3.amazonaws.com又はods3.illustmap.org サーバへのアクセス記録が残ります。
震災記憶地図以外だと、css3.illustmap.org.s3.amazonaws.com又はcss3.illustmap.org サーバへのアクセス記録が残ります。

これらの手法の組み合わせで、データの取得は4サーバへアクセスしている事が特定できます。

後はちずぶらり上で行った操作とプロキシログ等を比較してURL形式を特定、URL内の共通部分を特定して地図IDを特定

アクセスしているサーバがわかれば、後はちずぶらり上で行った操作と、プロキシログやブラウザのネットワークアナライザを付き合わせれば、どんな操作の時にどんなデータが要求されているかが判ります。
それが判れば、ダウンロードして中身を見てやればデータの役割は判りますし、アプリのバイナリを解析してやれば地図IDの特定も可能です。

© TileMapJp/歴史国土/地図タイル工法協会