JA:Potlatch/Photo-mapping
フォトマッピングに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
- Placemark
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>"