2010年3月9日火曜日

OpenLayers 49 WFS United States (GeoServer) - GeoServer を使用した東京都マップ

WFS United States (GeoServer) Example(wfs-states.html)を参考に GeoServer を使用した東京都マップを作成してみます。

HTML ファイルを新規作成します。
「openlayersTokyoproj」 を右クリックして 新規 -> HTML ファイル をクリック。
「HTML ファイル」ウィンドウの「ファイル名(任意:openlayers_wfsstates.html)」に入力して「完了」ボタンをクリック。
「charset」を「utf-8」にします。
「examples」の「wfs-states.html」の内容をコピーして新規作成したファイルに貼り付けます。

コードの修正とちょっと解説します。

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>OpenLayers49 WFS: Tokyo (GeoServer)</title>
<link rel="stylesheet" href="./theme/default/style.css" type="text/css" />
<link rel="stylesheet" href="./examples/style.css" type="text/css" />

<!-- OpenLayers ライブラリ -->
<script src="./lib/Firebug/firebug.js"></script>
<script src="./lib/OpenLayers.js"></script>

<!-- Proj4js ライブラリ -->
<script type="text/javascript" src="./lib/proj4js/lib/proj4js-compressed.js"></script>
<script type="text/javascript" src="./lib/proj4js/lib/projCode/tmerc.js"></script>
<script type="text/javascript" src="./lib/proj4js/lib/defs/EPSG2456.js"></script>


<script type="text/javascript">
var map;

function init(){
OpenLayers.ProxyHost="/cgi-bin/proxy.cgi?url="; // 修正
// 東京都用 map の設定
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)
},{
controls: [
new OpenLayers.Control.PanZoom(),
new OpenLayers.Control.Permalink(),
new OpenLayers.Control.MouseDefaults()
]
});

// ここまで
// MapServer WMS リクエスト

var layer1 = new OpenLayers.Layer.WMS( "Tokyo Height WMS",
"http://192.168.1.6/cgi-bin/mapserv?",
{
map: '/home/user/mapfile/tokyo_bmi_pgis_img2.map',
layers: 'height',
format: 'image/png'
});

var layer2 = new OpenLayers.Layer.WMS( "Tokyo Kukaku Sen WMS",
"http://192.168.1.6/cgi-bin/mapserv?",
{
map: '/home/user/mapfile/tokyo_bmi_pgis_img2.map',
layers: 'kukaku',
transparent: true,
format: 'image/png'
});

// GeoServer WFS リクエスト

var layer3 = new OpenLayers.Layer.WFS( "Gyoseikai WFS",
"http://localhost:8080/geoserver/ows", // 自分の GeoServer
{
typename: 'sde:gyoseikai' // GeoServer に追加したレイヤ
},{
projection: new OpenLayers.Projection("EPSG:4326") // 追加
});

map.addLayers([layer1, layer2, layer3]); // 修正
// 次の3つのコントロールは、この位置でないと表示できませんでした。
map.addControl(new OpenLayers.Control.LayerSwitcher()); // 追加
map.addControl(new OpenLayers.Control.MousePosition()); // 追加
map.addControl(new OpenLayers.Control.ScaleLine()); // 追加
map.zoomToMaxExtent(); // 追加
}
</script>
</head>


<body onload="init()">
<h1 id="title">WFS United States (GeoServer) Example</h1>
<p id="shortdesc">
Shows the use of the WFS United States (GeoServer)
</p>
<div id="map" class="smallmap"></div>
</body>
</html>

root で proxy.cgi の allowHosts に 'localhost:8080' を追加します。
debian:/home/user# vim /usr/lib/cgi-bin/proxy.cgi

---
allowedHosts = ['www.openlayers.org', 'openlayers.org',
'labs.metacarta.com', 'world.freemap.in',
'prototype.openmnnd.org', 'geo.openplans.org',
'sigma.openplans.org', 'demo.opengeo.org',
'www.openstreetmap.org', 'sample.avencia.com',
'maps.google.co.jp', 'picasaweb.google.com',
'picasaweb.google.co.jp', 'api.flickr.com',
'jugl.tschaub.net',
'192.168.1.6', 'localhost', 'localhost:8080', '127.0.0.1' ]
---

表示に時間がかかります。
「応答のないスクリプト」ダイアログが表示されたときは、「処理を続行」をクリックしてください。

0 件のコメント: