[OSM-ja] オルソ化空中写真の利用

Mage Whopper magewhopper @ gmail.com
2009年 9月 28日 (月) 14:53:33 BST


Mage Whopperです。

2009年9月28日12:35 Hiroshi Miura <miurahr @ nttdata.co.jp>:
> 三浦です。
>
> Mage Whopper さんは書きました:
>> WMSで使えないか見てみたのですが
>> JOSMと国土情報サイトで参照しているWMSの仕様が異なるようです。
>> JOSMでは
>> 座標系はsrsで指定
>> bboxは最小経度・緯度、最大経度・緯度の順
>>
>> 国土情報サイトでは
>> 座標系はcrsで指定
>> bboxは最小緯度・経度、最大緯度・経度の順
>>
> ということで、JOSMのリクエストを、URL変換すればいいわけですかね?
> Proxyサーバをたてて、URL変換させれば、良さそうな気がしてきましたが、
> そういうわけではないのでしょうか。
>
> サーバURL?bbox={minLon},{minLat},{maxLon},{maxLat}&srs=EPSG:4326&width=499&height=500
>
>>
> http://orthophoto.mlit.go.jp:8888/wms/service/wmsRasterTileMap?VERSION=1.3.0&
> REQUEST=GetMap&LAYERS=ORTHO&STYLES=&
> bbox={minLat},{minLon},{maxLat},{maxLon}&crs=84&width=499&height=500
>
> のように機械的に変換すると良いように見えました。
>
> たとえば、OSM.jpのサイトにこういうURLの細工をするproxyを立てたら、だめで
> しょうか。

そういうわけです。
とそれだけ言うのもなんなので試してみて
動くことを確認しました。

localhostにphpでproxyを書いてみました。
動作することだけを見ているので
色々危険きわまりないコードです。
無保証ですしライセンスはPDで構いません。
内容は簡単なので
ruby, perl, python, c# への移植は簡単だと思います。
----
<?php
// HTTP/Requestライブラリ読み込み
require_once("HTTP/Request.php");

// GET パラメータ取得
$bbox=$_GET["bbox"];

// bbox を各緯度経度に分割
list($minLon,$minLat,$maxLon,$maxLat) = explode(",",$bbox);

// 緯度経度を並べ替えたURL生成
$url = 'http://orthophoto.mlit.go.jp:8888/wms/service/'.
'wmsRasterTileMap?VERSION=1.3.0&REQUEST=GetMap&LAYERS=ORTHO&STYLES=&CRS=EPSG:4612&FORMAT=image/png&BGCOLOR=OxFFFFFF&'.
"&bbox=$minLat,$minLon,$maxLat,$maxLon".'&srs=EPSG:4326&width=499&height=500';

// 画像用にMIMEヘッダを生成
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Type: image/png");

// WMSサーバからGETした画像を出力
echo _httpget($url);

/* HTTP GET */
function _httpget($u){
	$r=&new HTTP_Request($u);
	if(!PEAR::isError($err=$r->sendRequest())){
		$re=$r->getResponseBody();
		return $re;
	}
}
?>

PEARのHTTP/Requestを使っています。
公開するようなサーバであれば
実際には入力エラーチェックと
HTTP1.1のETag:ヘッダがとりあえずいるのではないかと思います。
JOSMが他の形で投げることは全く想定していません。

これをp.phpに保存し、
JOSMのプラグイン設定で
http://localhost/p.php?VERSION=1.3.0&REQUEST=GetMap&LAYERS=ORTHO&STYLES=&CRS=EPSG:4612&FORMAT=image/png&BGCOLOR=OxFFFFFF&
を指定して
WMSプラグインでlocalproxyのレイヤーをONにしたら
JOSMできちんと表示できました。

ランドサットと比べてかなり細かく見えます。
これを元に細かい道路を書くのは厳しそうですが
県道レベルの道路や
駅のホーム、学校程度の建物であれば十分描けそうです。
競技場が描けそうなのは嬉しい。
2車線*2の車道は往復の区別が付くレベルです。

注意としては、
割と狭い範囲を要求しないとWMSとして動いてくれないので
広い範囲を表示した状態でWMSプラグインをONにすると
真っ白になってしまうのと、
一度真っ白で読み込むと
JOSMはそれをキャッシュし続けるので
いったんレイヤー削除して
拡大して再度有効にし直す必要があることです。

画像は昭和50年代頭なので
建物もトレースするのであればだいぶ注意がいると思います。

ORTHO01〜03は
国土情報サイトでも1/100000でしか航空写真が表示されません。
サイトのI/Fではこの拡大ではWMSは有効にならないので
これはWMS I/Fの対象外の様です。

EPSG:4612とEPSG:4326はこの精度なら違いは無視できる
という前提で前のメールを書きました。
実際画像はランドサットの解像度ぐらいの精度で
かなりぴったりはまっています。
歩き回ったところが細かくオーバレイして見えるのに
やや感動しました。
とりあえずは大きな変更が少ない河川と湖沼、
大学のキャパスや神社など、描けそうな物を探してみます。

一般公開用にproxyを立てるのは良いと思います。
是非、お願いします。

使う前にTagの確認です。
以前のikiyaさんのメールより
2009年8月31日11:54 ikiya <insidekiwi555 @ yahoo.co.jp>:
> 国土情報利用約款には「出典を明記」とあるので、
> http://orthophoto.mlit.go.jp/ols_doc4.html
> トレースに使用した場合、
> source=MLIT Japan
> source=ja;国土画像情報(オルソ化空中写真)国土交通省

とありましたが
source=MLIT Japan
source:ja=国土画像情報(オルソ化空中写真)国土交通省
のほうがTagぽいかなと思ったりしています。
;は一つの物に二つ以上名前がついているときの区切り記号なので。

ご挨拶の件もあるので
とりあえず使わずに我慢してます。


Mage Whopper
magewhopper @ gmail.com




Talk-ja メーリングリストの案内