[GIS] 被災地空中写真WMSはGIS用ですのでTMSを使います
http://d.hatena.ne.jp/end0tknr/20110513 に猛然とチェックを入れさせてもらいます。
まず、被災地空中写真WMSはタイル化地図では使うべきではありません。
WMSはデスクトップGIS専用です.Google MapsやOpenLayers等でタイル化地図としてご使用になるのはご遠慮ください.代わりに,TMSをご使用ください.
http://www.finds.jp/independent/tohoku/photo201103wms.html#WMS
TMSとは
http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification 参照。タイル化された地図画像のURL生成規則と考えていただければ良いでしょう。これがまた Google Maps とは違う (Google Mapsは左手系でTMSは右手系) ので注意します。
被災地空中写真TMS
投影法は"EPSG:900913", 画像サイズは 256 * 256, 拡張子は"png" となっています。
なお、EPSG900913 は EPSGの正式なコードではありませんが、なし崩し的に使われています…というと聞こえも悪いですが、要は Google Maps が強かったということです。
EPSG:900913
Google Maps で使われている投影法です。半径6378137m球体のメルカトルです。
EPSG:54004 (本当は ESRI:54004) は、WGS84のメルカトルです。WGS84は回転楕円体で、北極と南極から地球をちょっと挟んでひしゃげさせています。たぶん、投影した座標系の値は ESRI:54004 と EPSG:900913 とは合わないと思います。
EPSG:900913 を Proj.4 で使えるようにする。
Proj.4の設定ファイル群にある epsg というファイルに次の1行を追加します。
<900913> +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs <>
このエントリは epsg ファイルと同じところにインストールされている esri.extra にあるので epsg にコピペする、と覚えてもよいかも知れません。
mapfileの編集
"wms_srs" に "EPSG:900913" を追加します。MapServerは Proj.4 を使っているので、Proj.4 で使用可能にしていれば、これ以上の変更はありません。
JavaScriptファイル
次のような感じになります。
var map; var mapBounds = new OpenLayers.Bounds(15696048, 4621892, 15751707, 4650301); var mapMinZoom = 0; var mapMaxZoom = 18; // OpenLayers.IMAGE_RELOAD_ATTEMPTS = 3; OpenLayers.Util.onImageLoadErrorColor = "transparent"; function init(){ var options = { controls: [], projection: new OpenLayers.Projection("EPSG:900913"), units: "m", maxResolution: 156543.0339, maxExtent: new OpenLayers.Bounds(-20037508, -20037508, 20037508, 20037508.34), numZoomLevels: mapMaxZoom-mapMinZoom+1 }; map = new OpenLayers.Map('map', options); var kiban = new OpenLayers.Layer.WMS( "基盤地図情報", "http://www.finds.jp/ws/kiban25000gwc.cgi?", { layers: 'kiban25000:AllT', format: 'image/png' }, { attribution: '基盤地図情報 (平20業使、第449号)', isBaseLayer: true } ); var tms = new OpenLayers.Layer.TMS( "石巻", "http://www.finds.jp/independent/tohoku/tms/", { serviceVersion: '1.0.0', layername: 'ishinomaki', type: 'png', alpha: true, isBaseLayer: false, attribution: "国土地理院提供" } ); map.addLayers([kiban,tms]); map.addControl(new OpenLayers.Control.LayerSwitcher()); map.addControl(new OpenLayers.Control.PanZoomBar()); map.addControl(new OpenLayers.Control.MousePosition()); map.addControl(new OpenLayers.Control.Navigation()); map.addControl(new OpenLayers.Control.KeyboardDefaults()); map.addControl(new OpenLayers.Control.Attribution()); map.zoomToExtent( mapBounds ); } window.onload = init;