JA:Potlatch/Photo-mapping

From OpenStreetMap Wiki
Jump to navigation Jump to search
Potlatch上にフィルムアイコンが置かれ、サムネールが表示されます

フォトマッピングにPotlatch 1.1 を使うことができます - あなたの写真が編集ウィンドウ内の位置に置かれるので、道路標識の位置などを見ることができます。

既存のサービス

  • Potlatch はデフォルトでは OpenStreetPhotoと連携して動作します。Photo KML の欄にhttp://www.openstreetphoto.org/openstreetphoto.kml をセットしてください。
  • MapPIN'on OSM はPotlatch 用のKML を提供しています。Photo KML の欄にhttp://mappin.hp2.jp/kml.php をセットしてください。

mcknut が同様なものをセットアップしています。

あなた自身のサービスをセットアップ

最初に、あなたの写真をサーバにアップロードしてください。

次に以下の構造を持つKML ファイルを生成します:

  • Document
    • Placemark
      • description - the HTML to be displayed in the pop-up window
      • name
      • Icon
      • Point
        • coordinates - comma-separated lat,long

flashプレーヤの制限により、座標タグと座標との間に新しい線を引けないため、説明タグとCDATAセクションの間に新しい線がなければなりません(少なくとも下記例のような説明を構成する場合には)。

これもあなたのサーバにアップロードしてください。例えば http://www.openstreetphoto.org/openstreetphoto.kml?bbox=3.6019900490887,51.586247993078,6.3980099509113,52.911278561422 参照。

写真をたくさん持っているなら、上述のようなbboxパラメータに対応するスクリプトを書いてKML を出力することができます。

Flash のセキュリティモデルがハッピーになれるよう、あなたのサーバのルートレベルにcrossdomain.xml ファイルがあることを確認してください。いちばん簡単なのは単にFlickr のcrossdomain.xml をコピーする方法です - http://api.flickr.com/crossdomain.xml 参照。

最後に、KML ファイルのフルアドレスを(?bbox=a,b,c,d は含めないでください- これはPotlatch が追加します)Potlatch オプションダイアログに入れてください。そしてカメラアイコンをクリックして写真をロードします。

サンプル KML 生成スクリプト

以下はPotlatch フォトマッピング互換のKML を生成するとっても 簡単できたないスクリプトです。ファイル名はコマンドラインパラメータから取得し、全て現在の作業ディレクトリにあると判断し、EXIFからサムネールデータを抽出して同じディレクトリにサムネールファイルを作成します。座標もまたEXIFデータから取得されます。

#!/bin/sh
baseurl="http://example.com/path/to/files";

echo -e '<?xml version="1.0" encoding="UTF-8"?>\n<kml xmlns="http://earth.google.com/kml/2.2">\n<Document>\n';

for file in $*; do
    thumbfile=`basename $file .jpg`_thumb.jpg;
    exiftool -b -ThumbnailImage $file > $thumbfile;
    echo -ne '<Placemark id="'$file'">\n<description>\n<![CDATA[<a href="'$baseurl/$file'"><img src="'$baseurl/$thumbfile'" alt="'$file'"/></a>]]>\n</description>\n<name>'$file'</name>\n<Icon>\n<href>'$baseurl/$thumbfile'</href>\n</Icon>\n<Point>\n<coordinates>';
    exiftool -SpecialInstructions $file | perl -ne 'print "$2,$1" if /Lat (\S+), Lon (\S+) /';
    echo -e '</coordinates>\n</Point>\n</Placemark>';
done;

echo -e "\n</Document>\n</kml>"