2009年9月29日火曜日

OpenLayers で東京都の地図表示 6 再投影のテスト

レイヤの緯度経度の単位が度数のデータは、単位が度数の地図上で表示します。
レイヤと基本地図の単位(投影法)が違う場合は再投影をします。
投影法の設定がないときはどうなるか試してみました。

1 tokyo_bmi_pgis_img.html をコピーして tokyo_bmi_pgis_img02.html を作成します。
2 layer2 と layer3 だけ表示するようにします。
3 マップファイルの "wms_srs" をコメントアウトします。

tokyo_bmi_pgis_img02.html

---
<script type="text/javascript">
var map, layer2, layer3; //layer1, layer4 <-2
function init(){
map = new OpenLayers.Map('map', {
projection: new OpenLayers.Projection("EPSG:2456"),
displayProjection: new OpenLayers.Projection("EPSG:4326"),
maxResolution: 'auto',
units: 'meters',
maxExtent: new OpenLayers.Bounds(-279000,1054000,-185000,1104000)
});

/*layer1 = new OpenLayers.Layer.WMS( "Tokyo Height WMS", //<-2
"http://localhost/cgi-bin/mapserv?",
{
map: '/home/nob61/mapfile/tokyo_bmi_pgis_img.map',
layers: 'height',
format: 'image/png'
});
*/
layer2 = new OpenLayers.Layer.WMS( "Tokyo Kukaku Sen WMS",
"http://localhost/cgi-bin/mapserv?",
{
map: '/home/nob61/mapfile/tokyo_bmi_pgis_img.map',
layers: 'kukaku',
transparent: true,
format: 'image/png'
});

layer3 = new OpenLayers.Layer.WMS( "Tokyo Gyoseikai mlit WMS",
"http://localhost/cgi-bin/mapserv?",
{
map: '/home/nob61/mapfile/tokyo_pf_pgis.map',
layers: 'gyoseikai',
transparent: true,
format: 'image/png'
});

/*layer4 = new OpenLayers.Layer.WMS( "Tokyo Public Facilities WMS", //<-2
"http://localhost/cgi-bin/mapserv?",
{
map: '/home/nob61/mapfile/tokyo_pf_pgis.map',
layers: 'pf_tokyo',
transparent: true,
format: 'image/png'
});
*/
map.addLayers([layer2, layer3]); //<-2
//map.addLayers([layer1, layer2, layer3, layer4]); //<-2
map.addControl(new OpenLayers.Control.LayerSwitcher());
map.addControl(new OpenLayers.Control.MousePosition());
map.zoomToMaxExtent()

}
</script>
---

tokyo_pf_pgis_map

MAP
NAME tokyo_pf_pgis_map
---
PROJECTION # 投影法 (OpenLayers のため追加)
"init=epsg:4326" #
END #

WEB
IMAGEPATH "/home/nob61/ka-map/htdocs/tmp/kacache/"
IMAGEURL "/ka-map/tmp/kacache/"
METADATA
"wms_title" "Tokyo mlit Map WFS Server" # WMS サーバ設定
# "wms_srs" "EPSG:2456 EPSG:4326" #<-3
END
END
---

tokyo_bmi_pgis_img.map

MAP
NAME tokyo_bmi_pgis_img_map
---
WEB
IMAGEPATH "/home/user/ka-map/htdocs/tmp/kacache/"
IMAGEURL "/ka-map/tmp/kacache/"
METADATA
"wms_title" "Tokyo Map WMS Server" # WMS サーバ設定
# "wms_srs" "EPSG:2456 EPSG:4326" #<-3
END
END
---

tokyo_bmi_pgis_img02.html の地図を表示すると、layer2 だけ表示されて、layer3 はエラーが表示されます。



layer3 に projection を追加しても同様に表示されません。

---
layer3 = new OpenLayers.Layer.WMS( "Tokyo Gyoseikai mlit WMS",
"http://localhost/cgi-bin/mapserv?",
{
map: '/home/nob61/mapfile/tokyo_pf_pgis.map',
layers: 'gyoseikai',
transparent: true,
format: 'image/png'
},{
projection: 'EPSG:4326'
});
---

tokyo_bmi_pgis_img02.html の map オプションの projection を EPSG:4326 にすると layer2 が表示されません。
(layer3 は元に戻しておきます。)

---
<script type="text/javascript">
var map, layer2, layer3; //layer1, layer4
function init(){
map = new OpenLayers.Map('map', {
projection: new OpenLayers.Projection("EPSG:4326"),
// displayProjection: new OpenLayers.Projection("EPSG:4326"),
maxResolution: 'auto',
units: 'dd',
maxExtent: new OpenLayers.Bounds(138.85,35.4,140,35.975)
});
---
layer3 = new OpenLayers.Layer.WMS( "Tokyo Gyoseikai mlit WMS",
"http://localhost/cgi-bin/mapserv?",
{
map: '/home/nob61/mapfile/tokyo_pf_pgis.map',
layers: 'gyoseikai',
transparent: true,
format: 'image/png'
});
---

0 件のコメント: