2009年9月30日水曜日

OpenLayers で東京都の地図表示 7a 投影法の違うポイントの表示

1 tokyo_bmi_pgis_img02.html の地図の layer2 だけ表示するように戻します。

---
<script type="text/javascript">
var map, layer2; //layer1, layer3, layer4
function init(){
map = new OpenLayers.Map('map', {
projection: new OpenLayers.Projection("EPSG:2456"),//<-1
displayProjection: new OpenLayers.Projection("EPSG:4326"),//<-1
maxResolution: 'auto',
units: 'meters',
maxExtent: new OpenLayers.Bounds(-279000,1054000,-185000,1104000)
});
---
layer2 = new OpenLayers.Layer.WMS( "Tokyo Kukaku Sen WMS",
"http://localhost/cgi-bin/mapserv?",
{
map: '/home/nob61/mapfile/tokyo_bmi_pgis_img2.map',
layers: 'kukaku',
// transparent: true,
format: 'image/png'
});
map.addLayer(layer2);
---

投影法の違うポイントを表示するため、次のように markers レイヤを追加します。

---
var markers = new OpenLayers.Layer.Markers( "Markers" );
map.addLayer(markers);
size = new OpenLayers.Size(21,25);
calculateOffset = function(size) {
return new OpenLayers.Pixel(-(size.w/2), -size.h);
};
icon = new OpenLayers.Icon('./img/marker.png',size, null, calculateOffset);
var point = new OpenLayers.LonLat(139.5,35.7);
markers.addMarker(new OpenLayers.Marker(point, icon));

map.addControl(new OpenLayers.Control.LayerSwitcher());
map.addControl(new OpenLayers.Control.MousePosition());

map.zoomToMaxExtent();

}
</script>
---



ポイントは表示されませんでした。
次回は、ポイントの投影法を変換する方法を試します。
(レイヤの投影法の変換はできませんでした。)

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'
});
---

2009年9月28日月曜日

OpenLayers で東京都の地図表示 5d 東京都の公共施設を追加4

tokyo_pf_pgis.html に tokyo_bmi_pgis_img.map の height レイヤをベースマップに kukaku レイヤをオーバーレイしてみます。
これにより、tokyo_bmi_pgis_img.map の height レイヤ(layer1)kukaku レイヤ(layer2) が再投影されます。

地図を拡大するため、コントロールパネルの "+" を3回クリックすると、公共施設の位置が表示されました。


1 tokyo_bmi_pgis_img.map の WEB オブジェクトの "wms_srs" に EPSG:4326 を追加します。
2 layer1 と layer2 を追加。もとの layer1 と layer2 は layer3 と layer4 にします。
3 この地図の投影(projection:プロジェクション)。


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" #<-1
END
END
---

tokyo_pf_pgis.html

---
<script type="text/javascript">
var lon = 139.5;
var lat = 35.7;
var zoom = 9;
var map, layer1, layer2, layer3, layer4;
function init(){
map = new OpenLayers.Map('map');

layer1 = new OpenLayers.Layer.WMS( "Tokyo Height WMS",
"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",
---



maxExtent で設定すると画像サイズに合った地図が最初から表示されます。

tokyo_pf_pgis.html

<script type="text/javascript">
/*var lon = 139.5;
var lat = 35.7;
var zoom = 9;
*/
var map, layer1, layer2, layer3, layer4;
function init(){
map = new OpenLayers.Map('map', {
units: 'dd',
maxResolution: 'auto',
maxExtent: new OpenLayers.Bounds(138.85,35.4,140,35.975)
});
---
map.zoomToMaxExtent()
}
</script>
---

2009年9月27日日曜日

OpenLayers で東京都の地図表示 5c 東京都の公共施設を追加3

tokyo_bmi_pgis_img.html に tokyo_pf_pgis.map の pf_tokyo レイヤをオーバーレイしてみます。
これにより、tokyo_pf_pgis.map の gyoseikai レイヤ(layer3)pf_tokyo レイヤ(layer4) が再投影されます。

地図を拡大するため、コントロールパネルの "+" を3回クリックすると、公共施設の位置が表示されました。

1 layer3 と layer4 を追加。
2 この地図の投影(projection:プロジェクション)。
3 マウスの位置(MousePosition)を度数表示にするための設定。(できませんでした。)

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

layer1 = new OpenLayers.Layer.WMS( "Tokyo Height WMS",
"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", //<-1
"http://localhost/cgi-bin/mapserv?",
{
map: '/home/nob61/mapfile/tokyo_pf_pgis.map',
layers: 'pf_tokyo',
transparent: true,
format: 'image/png'
});

map.addLayers([layer1, layer2, layer3, layer4]); //<-1
map.addControl(new OpenLayers.Control.LayerSwitcher());
map.addControl(new OpenLayers.Control.MousePosition()); //<-3
map.zoomToMaxExtent()

}
</script>
---


2009年9月26日土曜日

OpenLayers で東京都の地図表示 5b penLayers に東京都の公共施設を追加2

「OpenLayers 7units metersのWMS」を参考に 確認のため OpenLayers で東京都の国土数値地図を表示します。


Eclipse を起動して Example フォルダ内の tokyo_bmi_pgis_img.html をコピーして tokyo_pf_pgis.html ファイルを作成します。
0 tokyo_bmi_pgis_img.htmlをダブルクリックして開きます。
1 プロジェクトビューのopenlayersTokyoprojフォルダを右クリックして、新規->HTMLファイルをクリックします。
2 HTMLファイルウィンドウでファイル名をtokyo_pf_pgis.htmlと入力し、完了ボタンをクリックします。
3 エディタのタブをエディタビュー内の下へドラッグすると2段になってみやすくなります。
4 charsetをUTF-8にして、<title>をTokyo Public Facilities Pgis Mapにします。
5 tokyo_bmi_pgis_img.html の内容ををコピーしてtokyo_pf_pgis.html ファイルに貼り付けます。
6 javascriptの一部を次のように修正します。
style.cssとOpenLayers.jsのパスを変えます。
緯度、経度、倍率の宣言をします。
OpenLayers.Map のオプションを削除します。

---
<link rel="stylesheet" href="./theme/default/style.css" type="text/css" />
<link rel="stylesheet" href="./examples/style.css" type="text/css" /><!-- ここを追加 -->
<script src="./lib/OpenLayers.js"></script>
<script type="text/javascript">
var lon = 139.5;
var lat = 35.7;
var zoom = 9;
var map, layer1, layer2;
function init(){
map = new OpenLayers.Map('map');

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

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

map.addLayers([layer1, layer2]);
map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
map.addControl(new OpenLayers.Control.LayerSwitcher());
}
</script>
---



地図を拡大するため、コントロールパネルの "+" を5回クリックすると、公共施設の位置が表示されました。

表示された地図の投影法は正距円筒図法で、縦方向が少しつぶれたようになっています。

2009年9月24日木曜日

OpenLayers で東京都の地図表示 5a OpenLayers に東京都の公共施設を追加1

「OpenLayers 10a-d unitsがddとmeterのレイヤ」を参考に、
tokyo_pf_pgis.map に WMS サーバの設定をします。

1 OpenLayers では地図を表示するのに、マップファイルに MAP オブジェクトの PROJECTION オブジェクトが必要です。
epsg:4326(PROJECTION オブジェクトでは epsg を小文字で設定)は、X/Yの値で扱われるれる緯度と経度で地図を説明する一般的な識別子です。
これは、MapServer と OpenLayers のデフォルトの投影法である正距円筒図法ですが、必ず設定します。

2 WMS サーバ機能を設定するのに、WEB オブジェクトの METADATA オブジェクトに、 "wms_title" と "wms_srs" を設定します。
"wms_srs" に、基盤地図情報のに合わせて "EPSG:2456" も設定します。
これによって、"wms_srs" の識別子が WMS を利用できるすべてのレイヤに設定されます。
3 レイヤを WMS で利用できるように、同じように、METADATA オブジェクトに、 "wms_title" を設定します。
レイヤを別の投影法で利用したいときは、個別に "wms_srs" を設定します。
MAP
 NAME tokyo_pf_pgis_map
---
 PROJECTION         # 投影法 (OpenLayers のため追加)<-1
   "init=epsg:4326" #
 END                #

 WEB
   IMAGEPATH "/home/nob61/ka-map/htdocs/tmp/kacache/"
   IMAGEURL "/ka-map/tmp/kacache/"
   METADATA
     "wms_title" "Tokyo mlit Map WMS Server" # WMS サーバ設定<-2
     "wms_srs" "EPSG:2456 EPSG:4326"         #
   END
 END
---
 LAYER
  NAME gyoseikai
---
  METADATA
    "group_title" "行政界"
    "queryable" "true"
    "searchfield" "cn2"
    "fields" "con:郡政令,cn2:市区町村"
    "wms_title" "Gyoseikai Tokyo mlit Map WMS Layer" # 追加<-3
  END
---
 LAYER
  NAME pf_tokyo
---
  METADATA
   "group_title" "公共施設"
   "searchfield" "na0"
   "fields" "na0:公共施設,ads:住所"
   "wms_title" "Public Facilities Tokyo mlit Map WMS Layer" # 追加<-3
#   "wms_srs" "EPSG:2456 EPSG:4326"                         #
  END
---

GetCapabilities で WMS の情報を取得できます。
警告(<!-- WARNING:...)がありますが、今回は地図の表示に影響ありません。

wget -O tokyo_pf_pgis.xml "http://localhost/cgi-bin/mapserv?map=/home/nob61/mapfile/tokyo_pf_pgis.map&service=WMS&version=1.1.1&request=GetCapabilities"

nob61@debian:~/xml$ vim tokyo_pf_pgis.xml
---
  <Layer>
    <Name>tokyo_pf_pgis_map</Name>
    <Title>Tokyo mlit Map WMS Server</Title>
    <SRS>EPSG:2456</SRS>
    <SRS>EPSG:4326</SRS>
    <LatLonBoundingBox minx="138.85" miny="35.4" maxx="140" maxy="35.975" />
    <BoundingBox SRS="EPSG:4326"
                minx="138.85" miny="35.4" maxx="140" maxy="35.975" />
    <Layer queryable="1" opaque="0" cascaded="0">
        <Name>gyoseikai</Name>
        <Title>Gyoseikai Tokyo mlit Map WMS Layer</Title>
<!-- WARNING: Mandatory mapfile parameter '(at least one of) MAP.PROJECTION, LAYER.PROJECTION or wms_srs metadata' was missing in this context. -->
        <LatLonBoundingBox minx="-2.5e+07" miny="-2.5e+07" maxx="2.5e+07" maxy="2.5e+07" />
        <BoundingBox SRS="EPSG:4326"
                    minx="-2.5e+07" miny="-2.5e+07" maxx="2.5e+07" maxy="2.5e+07" />
        <Style>
          <Name>default</Name>
          <Title>default</Title>
          <LegendURL width="20" height="10">
             <Format>image/png</Format>
             <OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://localhost/cgi-bin/mapserv?map=/home/nob61/mapfile/tokyo_pf_pgis.map&version=1.1.1&service=WMS&request=GetLegendGraphic&layer=gyoseikai&format=image/png"/>
          </LegendURL>
        </Style>
    </Layer>
    <Layer>

---
    <Layer>
      <Name>pf_tokyo</Name>
<!-- WARNING: Mandatory metadata '..._GROUP_TITLE' was missing in this context. -->
      <Title>pf_tokyo</Title>
      <Abstract>pf_tokyo</Abstract>
      <Layer queryable="1" opaque="0" cascaded="0">
        <Name>pf_tokyo</Name>
        <Title>Public Facilities Tokyo mlit Map WMS Layer</Title>
<!-- WARNING: Mandatory mapfile parameter '(at least one of) MAP.PROJECTION, LAYER.PROJECTION or wms_srs metadata' was missing in this context. -->
        <LatLonBoundingBox minx="-2.5e+07" miny="-2.5e+07" maxx="2.5e+07" maxy="2.5e+07" />
        <BoundingBox SRS="EPSG:4326"
                    minx="-2.5e+07" miny="-2.5e+07" maxx="2.5e+07" maxy="2.5e+07" />
        <Style>
          <Name>default</Name>
          <Title>default</Title>
          <LegendURL width="20" height="10">
             <Format>image/png</Format>
             <OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://localhost/cgi-bin/mapserv?map=/home/nob61/mapfile/tokyo_pf_pgis.map&version=1.1.1&service=WMS&request=GetLegendGraphic&layer=pf_tokyo&format=image/png"/>
          </LegendURL>
        </Style>
        <ScaleHint min="0" max="124.725712107409" />
      </Layer>
    </Layer>
  </Layer>
</Capability>
</WMT_MS_Capabilities>

2009年9月23日水曜日

OpenLayers で東京都の地図表示 4b 東京都の地図を OpenLayers で表示2

「OpenLayers 7units metersのWMS」を参考に OpenLayers で地図を表示します。

Eclipse を起動して Example フォルダないの wms.html をコピーして tokyo_bmi_pgis_img.html ファイルを作成します。
0 wms.htmlをダブルクリックして開きます。
1 プロジェクトビューのopenlayersTokyoprojフォルダを右クリックして、新規->HTMLファイルをクリックします。
2 HTMLファイルウィンドウでファイル名をtokyo_bmi_pgis_img.htmlと入力し、完了ボタンをクリックします。
3 エディタのタブをエディタビュー内の下へドラッグすると2段になってみやすくなります。
4 charsetをUTF-8にして、<title>をTokyo BMI Pgis Mapにします。
5 wms.html の内容ををコピーしてtokyo_bmi_pgis_img.html ファイルに貼り付けます。
6 javascriptの一部を次のように修正します。
style.cssとOpenLayers.jsのパスを変えます。
OpenLayers.Map のオプションに
maxResolution: 'auto',
units: 'meters',
maxExtent: new OpenLayers.Bounds(-279000,1054000,-185000, 1104000)
を追加します。

---
<link rel="stylesheet" href="./theme/default/style.css" type="text/css" />
<link rel="stylesheet" href="./examples/style.css" type="text/css" /><!-- ここを追加 -->
<script src="./lib/OpenLayers.js"></script>
<script type="text/javascript">
var map, layer1, layer2;
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",
"http://localhost/cgi-bin/mapserv?",
{
map: '/home/user/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/user/mapfile/tokyo_bmi_pgis_img.map',
layers: 'kukaku',
transparent: true,
format: 'image/png'
});
map.addLayers([layer1, layer2]);
map.addControl(new OpenLayers.Control.LayerSwitcher());
map.zoomToMaxExtent();
}
</script>
---

2009年9月22日火曜日

OpenLayers で東京都の地図表示 4a 東京都の地図をOpenLayers で表示1

「OpenLayers 7units metersのWMS」を参考にします。

tokyo_bmi_ogis_img.map を修正して WMS サーバの設定をします。

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

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" #
END
END
---
LAYER
NAME height
TYPE RASTER
STATUS ON
DATA "../mapdata/tokyo_bmi/tokyo_height201-epsg2456.tif"
MINSCALEDENOM 1000 # 不適当な縮尺で使用されないように。
MAXSCALEDENOM 1000000 # (MINSCALE, MAXSCALE から置き換え。MapServer5より>)
METADATA
"group_title" "標高"
"wms_title" "Tokyo Height WMS LAYER" # 追加
END
END

LAYER
NAME kukaku
GROUP kukaku
TYPE LINE #POLYGON
STATUS ON
CONNECTIONTYPE POSTGIS
CONNECTION "dbname=tokyo_bmi host=localhost user=user password=password"
DATA "the_geom from gyoseisen" #gyoseikukaku
# DATA "../mapdata/tokyo_bmi/AdmArea.shp"
MINSCALEDENOM 1000 # 追加
MAXSCALEDENOM 1000000 #
METADATA
"group_title" "行政区画"
"wms_title" "Tokyo Kukaku WMS LAYER" # 追加
END
CLASS
NAME "行政区画"
STYLE
COLOR 102 102 102 #255 255 204
# OUTLINECOLOR 204 204 204
END
END
END
---

WMS 機能ドキュメントのチェック
端末(ターミナル)で次のようにコマンドを入力します。

wget -O tokyo_bmi_pgis_img.xml "http://localhost/cgi-bin/mapserv?map=/home/user/mapfile/tokyo_bmi_pgis_img.map&service=WMS&version=1.1.1&request=GetCapabilities"

tokyo_bmi_pgis_img.xml の内容をみてみます。

<!-- MapServer version 5.0.3 OUTPUT=GIF OUTPUT=PNG OUTPUT=JPEG OUTPUT=WBMP OUTPUT=SVG SUPPORTS=PROJ SUPPORTS=AGG SUPPORTS=FREETYPE SUPPORTS=WMS_SERVER SUPPORTS=WMS_CLIENT SUPPORTS=WFS_SERVER SUPPORTS=WFS_CLIENT SUPPORTS=WCS_SERVER SUPPORTS=FASTCGI SUPPORTS=THREADS SUPPORTS=GEOS INPUT=EPPL7 INPUT=POSTGIS INPUT=OGR INPUT=GDAL INPUT=SHAPEFILE -->

ここには、MapServer がサポートする機能が出力されています。
WMS がサポートされています。

SUPPORTS=WMS_SERVER SUPPORTS=WMS_CLIENT

height レイヤに次のような警告が出力されていますが、地図は表示されます。
内容は、MAP オブジェクトか Layer オブジェクト、height レイヤの Metadata に wms_srs のどれか一つに投影法を記述するべきとあります。

<!-- WARNING: Mandatory mapfile parameter '(at least one of) MAP.PROJECTION, LAYER.PROJECTION or wms_srs metadata' was missing in this context. -->

2009年9月21日月曜日

OpenLayers で東京都の地図表示 3 東京都の公共施設のマップファイル

tokyo_pgis.map をコピーしてファイル名を tokyo_pf_pgis.map にしてレイヤを次のように追加します。

ka-Map で表示するための設定になっています。

MAP
NAME tokyo_pf_pgis_map
---
SYMBOL
NAME 'circle'
TYPE ELLIPSE
FILLED TRUE
POINTS
1 1
END
END
---
LAYER
NAME pf_tokyo
GROUP pf_tokyo
TYPE POINT
STATUS ON
CONNECTIONTYPE POSTGIS
CONNECTION "dbname=tokyo host=localhost user=nob61 password=balanced"
DATA "the_geom from pf_tokyo"
MAXSCALEDENOM 250000 # ka-Mapで表示するときはなぜか表示したい一つ上の倍率
LABELITEM "na0"
METADATA
"group_title" "公共施設" # ka-Map 用
"searchfield" "na0" #
"fields" "na0:公共施設,ads:住所" #
END
CLASS
NAME "公共施設"
STYLE
SYMBOL 'circle'
COLOR 102 255 102
SIZE 5
END
LABEL
MINFEATURESIZE 40
TYPE TRUETYPE
FONT vl-gothic
ENCODING UTF8
SIZE 8
POSITION uc
END
END
TEMPLATE temp_pf_tokyo_pgis.html # 検索文字列表示用
END

END # END OF MAPFILE

temp_pf_tokyo_pgis.html の内容

<html>
<head>
<title>Pubilic Facilities Tokyo pgis Template</title>
</head>
<body>
<li>[na0]
<li>[ads]
</body>
</html>

2009年9月20日日曜日

OpenLayers で東京都の地図表示 2 東京都の公共施設をデータベースに登録

shp2pgsqlコマンドを使ってシェイプファイルをデータベースに登録します。
一般ユーザでシェイプファイルのあるディレクトリに移動して、次のように入力します。

user@debian:~$ cd download/pf_tokyo_shp/
user@debian:~/download/pf_tokyo_shp$ shp2pgsql -W sjis P02-06_13_FB01.shp pf_tokyo > pf_tokyo.sql
Shapefile type: Point
Postgis type: POINT[2]
user@debian:~/download/pf_tokyo_shp$ psql -d tokyo -f pf_tokyo.sql
user@debian:~/download/pf_tokyo_shp$ psql tokyo
Welcome to psql 8.3.7, the PostgreSQL interactive terminal.

Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit

tokyo=> \dt
List of relations
Schema | Name | Type | Owner
--------+------------------+-------+-------
public | geometry_columns | table | user
public | gyoseikai | table | user
public | pf_tokyo | table | user
public | population | table | user
public | spatial_ref_sys | table | user
(5 rows)

pf_tokyoテーブル内のカラムとその他の一覧を表示してみます。

tokyo=> \d pf_tokyo
Table "public.pf_tokyo"
Column | Type | Modifiers
----------+-----------------------+--------------------------------------------------------
gid | integer | not null default nextval('pf_tokyo_gid_seq'::regclass)
aac | character varying(5) |
ren | character varying(1) |
com | character varying(1) |
cls | character varying(1) |
pca | character varying(2) |
pci | character varying(5) |
na8 | character varying(1) |
na0 | character varying(82) |
ads | character varying(63) |
apf | character varying(1) |
ad6 | character varying(1) |
ys3 | character varying(1) |
oy2 | character varying(1) |
rcn | character varying(12) |
the_geom | geometry |
Indexes:
"pf_tokyo_pkey" PRIMARY KEY, btree (gid)
Check constraints:
"enforce_dims_the_geom" CHECK (ndims(the_geom) = 2)
"enforce_geotype_the_geom" CHECK (geometrytype(the_geom) = 'POINT'::text OR the_geom IS NULL)
"enforce_srid_the_geom" CHECK (srid(the_geom) = (-1))

tokyo=> \q

2009年9月19日土曜日

OpenLayers で東京都の地図表示1 ダウンロードと設定

国土数値地図と基盤地図情報を同じ地図上に表示しました。
単位が、度数(degree)とメートル(meter)のデータです。
最新の OpenLayers を設定しました。(2009.9.19 現在)

OpenLayers ホームページ
http://openlayers.org/

の 2.8(stable): .tar.gz| .zip のどちらかをダウンロードします。
このファイルを解凍します。

user@debian:~$ tar xvzf OpenLayers-2.8.tar.gz

Eclipseを起動します。

プロジェクトを作成します。
0 Aptanaのパースペクティブを開きます。
パースペクティブボタンをクリック->その他をクリック->Aptanaをクリック->OKボタンをクリック
1 「マイ Aptana」ウィンドウで「Create New Project」アイコンをクリックします。
2 「Webプロジェクトウィザード」の「プロジェクト名」(例えばopenlayersTokyoproj)を入力して「次へ」ボタンをクリックします。
3 「JavaScriptライブラリのインポート」で 何も選択しないで「次へ」ボタンをクリックします。
4 「ホスティング」で何も選択しないで「完了」ボタンをクリックします。

OpenLayersライブラリをインポートします。
1 ファイル->インポートをクリックします
2 選択ウィンドウで 一般->ファイル・システム を選択して「次へ」ボタンをクリックします。
3 ファイル・システムウィンドウで 次のディレクトリからの「参照」ボタンをクリックします。
4 ディレクトリからインポートで解凍したOpenLayers-2.8フォルダを選んで「OK」ボタンをクリックします。
5 ファイル・システムウィンドウで OpenLayers-2.8をチェックして「完了」ボタンをクリックします。

インポートに成功するとプロジェクト ビューにインポートされたファイルやフォルダが表示されます。
exampleフォルダにサンプルがあるので、最初に、mapserver.htmlを参考に自分で作成した地図を表示してみましょう。
(kamap.html は地図が表示されないのでこちらで試しました。)

Eclipse を起動して Example フォルダないの mapserver.html をコピーして mapserver_global.html ファイルを作成します。
0 mapserver.htmlをダブルクリックして開きます。
1 プロジェクトビューのOpenLayersprojフォルダを右クリックして、新規->HTMLファイルをクリックします。
2 HTMLファイルウィンドウでファイル名をmapserver_global.htmlと入力し、終了ボタンをクリックします。
3 エディタのタブをエディタビュー内の下へドラッグすると2段になってみやすくなります。
4 charsetをUTF-8にして、<title>をMapserver Global Mapにします。
5 mapserver.html の内容ををコピーしてmapserver_global.html ファイルに貼り付けます。
6 javascriptの一部を次のように修正します。

---
<link rel="stylesheet" href="./theme/default/style.css" type="text/css" />
<link rel="stylesheet" href="./examples/style.css" type="text/css" /><!-- ここを追加 -->
<script src="./lib/OpenLayers.js"></script>
---
layer = new OpenLayers.Layer.MapServer( "Global Map WMS",
"http://localhost/cgi-bin/mapserv?",
{
map: '/home/user/ka-map/htdocs/global.map',
layers: 'countries'
},{
gutter: 15
}
);
---

7 エディタのデフォルトタブをクリックします。

2009年9月14日月曜日

東京都の基盤地図情報 8 PostGIS で地図表示

シェイプファイルをデータベースに登録します。

template_postgisをテンプレートとして、オーナーがuserでtokyo_bmiというデータベースを作成します。

postgres@debian:~$ createdb -T template_postgis -O user tokyo_bmi
postgres@debian:~$ psql -l
List of databases
Name | Owner | Encoding
------------------+----------+----------
postgres | postgres | UTF8
template0 | postgres | UTF8
template1 | postgres | UTF8
template_postgis | postgres | UTF8
tokyo | user | UTF8
tokyo_bmi | user | UTF8
(6 rows)

tokyo_bmiデータベースのgeometry_columnテーブルとspatial_ref_sysテーブルのオーナーをuserに変更します。

postgres@debian:~$ psql tokyo_bmi
Welcome to psql 8.3.7, the PostgreSQL interactive terminal.

Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit

tokyo_bmi=# \d
List of relations
Schema | Name | Type | Owner
--------+------------------+-------+----------
public | geometry_columns | table | postgres
public | spatial_ref_sys | table | postgres
(2 rows)

tokyo_bmi=# ALTER TABLE geometry_columns OWNER TO user;
ALTER TABLE
tokyo_bmi=# ALTER TABLE spatial_ref_sys OWNER TO user;
ALTER TABLE
tokyo_bmi=# \d
List of relations
Schema | Name | Type | Owner
--------+------------------+-------+-------
public | geometry_columns | table | user
public | spatial_ref_sys | table | user
(2 rows)

tokyo_bmi=# \q

shp2pgsqlコマンドを使ってシェイプファイルをデータベースに登録します。
一般ユーザでシェイプファイルのあるディレクトリに移動して、次のように入力します。

postgres@debian:~$ exit
logout
user@debian:~$ cd mapdata/tokyo_bmi/
user@debian:~/mapdata/tokyo_bmi$ shp2pgsql -W sjis AdmArea.shp gyoseikukaku > gyoseikukaku.sql
Shapefile type: Polygon
Postgis type: MULTIPOLYGON[2]
user@debian:~/mapdata/tokyo_bmi$ shp2pgsql -W sjis AdmBdry.shp gyoseisen > gyoseisen.sql
Shapefile type: Arc
Postgis type: MULTILINESTRING[2]
user@debian:~/mapdata/tokyo_bmi$ shp2pgsql -W sjis AdmPt.shp gyoseiten > gyoseiten.sql
Shapefile type: Point
Postgis type: POINT[2]
user@debian:~/mapdata/tokyo_bmi$ shp2pgsql -W sjis BldA.shp kenchikua > kenchikua.sql
Shapefile type: Polygon
Postgis type: MULTIPOLYGON[2]
user@debian:~/mapdata/tokyo_bmi$ shp2pgsql -W sjis RailCL.shp kido > kido.sqlShapefile type: Arc
Postgis type: MULTILINESTRING[2]
user@debian:~/mapdata/tokyo_bmi$ shp2pgsql -W sjis RdEdg.shp doro > doro.sql
Shapefile type: Arc
Postgis type: MULTILINESTRING[2]
user@debian:~/mapdata/tokyo_bmi$ shp2pgsql -W sjis WL.shp suigai > suigai.sql
Shapefile type: Arc
Postgis type: MULTILINESTRING[2]

shp2pgsqlコマンドを使ってシェイプファイルをデータベースに登録します。
一般ユーザでsqlファイルのあるディレクトリに移動して、次のように入力します。

user@debian:~/mapdata/tokyo_bmi$ psql -d tokyo_bmi -f gyoseikukaku.sql
SET
BEGIN
psql:gyoseikukaku.sql:12: NOTICE: CREATE TABLE will create implicit sequence "gyoseikukaku_gid_seq" for serial column "gyoseikukaku.gid"
psql:gyoseikukaku.sql:12: NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "gyoseikukaku_pkey" for table "gyoseikukaku"
CREATE TABLE
addgeometrycolumn
---------------------------------------------------------------
public.gyoseikukaku.the_geom SRID:-1 TYPE:MULTIPOLYGON DIMS:2

(1 row)

INSERT 0 1
---
COMMIT
user@debian:~/mapdata/tokyo_bmi$ psql tokyo_bmi
Welcome to psql 8.3.7, the PostgreSQL interactive terminal.

Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit

tokyo_bmi=> \dt
List of relations
Schema | Name | Type | Owner
--------+------------------+-------+-------
public | geometry_columns | table | user
public | gyoseikukaku | table | user
public | spatial_ref_sys | table | user
(3 rows)

gyoseikukakuテーブル内のカラムとその他の一覧を表示してみます。

tokyo_bmi=> \d gyoseikukaku
Table "public.gyoseikukaku"
Column | Type | Modifiers
----------+-----------------------+------------------------------------------------------------
gid | integer | not null default nextval('gyoseikukaku_gid_seq'::regclass)
id | character varying(7) |
uuid | character varying(24) |
presence | integer |
finished | integer |
orggilvl | character varying(5) |
orgmdid | character varying(3) |
type | character varying(6) |
name | character varying(25) |
aac | integer |
the_geom | geometry |
Indexes:
"gyoseikukaku_pkey" PRIMARY KEY, btree (gid)
Check constraints:
"enforce_dims_the_geom" CHECK (ndims(the_geom) = 2)
"enforce_geotype_the_geom" CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL)
"enforce_srid_the_geom" CHECK (srid(the_geom) = (-1))

tokyo_bmi=> \q

残りのシェイプファイルも登録します。

user@debian:~/mapdata/tokyo_bmi$ psql -d tokyo_bmi -f gyoseisen.sql
user@debian:~/mapdata/tokyo_bmi$ psql -d tokyo_bmi -f gyoseiten.sql
user@debian:~/mapdata/tokyo_bmi$ psql -d tokyo_bmi -f kenchikua.sql
user@debian:~/mapdata/tokyo_bmi$ psql -d tokyo_bmi -f kido.sq
user@debian:~/mapdata/tokyo_bmi$ psql -d tokyo_bmi -f doro.sql
user@debian:~/mapdata/tokyo_bmi$ psql -d tokyo_bmi -f suigai.sql

マップファイル tokyo_bmi_pgis_img.map の例。
標高画像データのレイヤを追加します。
また、kukaku レイヤの TYPE を LINE データ(gyoseisen)にします。

MAP
NAME tokyo_bmi_pgis_map
STATUS ON
SIZE 600 300
EXTENT -279000 1054000 -185000 1104000
UNITS meters
IMAGECOLOR 255 255 255
IMAGETYPE png
FONTSET "fonts.txt"

WEB
IMAGEPATH "/home/user/ka-map/htdocs/tmp/kacache/"
IMAGEURL "/ka-map/tmp/kacache/"
END

LEGEND
TRANSPARENT TRUE
LABEL
TYPE TRUETYPE
FONT vl-gothic
COLOR 0 0 0
ENCODING UTF-8
SIZE 10
OFFSET 0 -4
END
END

SCALEBAR
TRANSPARENT TRUE
END


LAYER
NAME height
TYPE RASTER
STATUS ON
DATA "../mapdata/tokyo_bmi/tokyo_height201-epsg2456.tif"
METADATA
"group_title" "標高"
END
END

LAYER
NAME kukaku
GROUP kukaku
TYPE LINE
STATUS ON
CONNECTIONTYPE POSTGIS
CONNECTION "dbname=tokyo_bmi host=localhost user=user password=password"
DATA "the_geom from gyoseisen"
# DATA "../mapdata/tokyo_bmi/AdmArea.shp"
METADATA
"group_title" "行政区画"
END
CLASS
NAME "行政区画"
STYLE
COLOR 255 255 204
OUTLINECOLOR 204 204 204
END
END
END

LAYER
NAME suigaisen
GROUP suigaisen
TYPE LINE
STATUS ON
CONNECTIONTYPE POSTGIS
CONNECTION "dbname=tokyo_bmi host=localhost user=user password=password"
DATA "the_geom from suigai"
# DATA "../mapdata/tokyo_bmi/WL.shp"
METADATA
"group_title" "水涯線"
END
CLASS
NAME "水涯線"
STYLE
COLOR 102 204 204
SIZE 1
END
END
END

LAYER
NAME kenchiku
GROUP kenchiku
TYPE LINE
STATUS ON
CONNECTIONTYPE POSTGIS
CONNECTION "dbname=tokyo_bmi host=localhost user=user password=password"
DATA "the_geom from kenchikua"
# DATA "../mapdata/tokyo_bmi/BldA.shp"
MAXSCALEDENOM 50000
METADATA
"group_title" "建築物"
END
CLASS
NAME "建築物"
STYLE
COLOR 153 204 153
SIZE 1
END
END
END

LAYER
NAME doro
GROUP doro
TYPE LINE
STATUS ON
CONNECTIONTYPE POSTGIS
CONNECTION "dbname=tokyo_bmi host=localhost user=user password=password"
DATA "the_geom from doro"
# DATA "../mapdata/tokyo_bmi/RdEdg.shp"
MAXSCALEDENOM 100000
METADATA
"group_title" "道路"
"opacity" "50"
"queryable" "true"
"fields" "name:名前"
END
CLASS
NAME "道路"
STYLE
COLOR 204 204 102
SIZE 1
END
END
TEMPLATE temp_tokyo_bmi.html
END

LAYER
NAME tetsudo
GROUP tetsudo
TYPE LINE
STATUS ON
CONNECTIONTYPE POSTGIS
CONNECTION "dbname=tokyo_bmi host=localhost user=user password=password"
# DATA "../mapdata/tokyo_bmi/RailCL.shp"
METADATA
"group_title" "鉄道"
END
CLASS
NAME "鉄道"
STYLE
COLOR 51 51 51
SIZE 1
END
END
END

LAYER
NAME kukaku2
GROUP kukaku2
TYPE ANNOTATION
STATUS OFF
CONNECTIONTYPE POSTGIS
CONNECTION "dbname=tokyo_bmi host=localhost user=user password=password"
DATA "the_geom from gyoseikukaku"
# DATA "../mapdata/tokyo_bmi/AdmArea.shp"
LABELITEM "name"
METADATA
"group_title" "住所1"
"queryable" "true"
"searchfield" "name"
"fields" "name:住所"
END
CLASS
NAME "住所1"
LABEL
MINFEATURESIZE 100
TYPE TRUETYPE
FONT vl-gothic
ENCODING UTF8
SIZE 8
END
END
TEMPLATE temp_tokyo_bmi.html
END

LAYER
NAME kukakuten
GROUP kukakuten
TYPE POINT
STATUS ON
CONNECTIONTYPE POSTGIS
CONNECTION "dbname=tokyo_bmi host=localhost user=user password=password"
DATA "the_geom from gyoseiten"
# DATA "../mapdata/tokyo_bmi/AdmPt.shp"
LABELITEM "name"
METADATA
"group_title" "行政区画代表点"
"queryable" "true"
"searchfield" "name"
"fields" "name:住所"
END
CLASS
NAME "行政区画代表点"
STYLE
COLOR 255 255 255
SIZE 1
END
LABEL
MINFEATURESIZE 100
TYPE TRUETYPE
FONT vl-gothic
ENCODING UTF8
SIZE 8
END
END
TEMPLATE temp_tokyo_bmi.html
END

END #MAP END

水涯線と0m地帯の色が同じになってしまいました。
標高画像データに座標を追加するため行政区画線がちょっと綺麗でないです。





2009年9月13日日曜日

東京都の基盤地図情報 7 シェイプファイルで地図表示

東京都のデータをみてみます。

user@debian:~/mapdata$ ogrinfo tokyo_bmi
INFO: Open of `tokyo_bmi'
using driver `ESRI Shapefile' successful.
1: AdmArea (Polygon)
2: AdmPt (Point)
3: RdEdg (Line String)
4: RailCL (Line String)
5: WL (Line String)
6: BldA (Polygon)
7: AdmBdry (Line String)

AdmAreaのデータの概要をみてみます。

user@debian:~/mapdata$ ogrinfo -summary tokyo_bmi AdmArea
INFO: Open of `tokyo_bmi'
using driver `ESRI Shapefile' successful.

Layer name: AdmArea
Geometry: Polygon
Feature Count: 323
Extent: (-619709.111772, -606129.469810) - (1222781.861788, 1101432.881066)
Layer SRS WKT:
PROJCS["JGD2000_Japan_Zone_14",
GEOGCS["GCS_JGD_2000",
DATUM["Japanese_Geodetic_Datum_2000",
SPHEROID["GRS_1980",6378137.0,298.257222101]],
PRIMEM["Greenwich",0.0],
UNIT["Degree",0.0174532925199433]],
PROJECTION["Transverse_Mercator"],
PARAMETER["False_Easting",0.0],
PARAMETER["False_Northing",0.0],
PARAMETER["Central_Meridian",142],
PARAMETER["Scale_Factor",0.9999],
PARAMETER["Latitude_Of_Origin",26],
UNIT["Meter",1.0]]
ID: String (7.0)
UUID: String (24.0)
PRESENCE: Integer (8.0)
FINISHED: Integer (8.0)
ORGGILVL: String (5.0)
ORGMDID: String (3.0)
TYPE: String (6.0)
NAME: String (25.0)
AAC: Integer (5.0)

GML データでは経緯度のデータですが、シェイプファイルに変換後はメータのデータになっています。

東京都のマップファイルは地図範囲を島部を除いた部分にしました。
ka-Map で表示するように追加しているところがあります。

MAP
NAME tokyo_bmi_shp_map
STATUS ON
SIZE 600 300
EXTENT -279000 1054000 -185000 1104000
UNITS meters
IMAGECOLOR 255 255 255
IMAGETYPE png
FONTSET "fonts.txt"

WEB
IMAGEPATH "/home/user/ka-map/htdocs/tmp/kacache/"
IMAGEURL "/ka-map/tmp/kacache/"
END

LEGEND
TRANSPARENT TRUE
LABEL
TYPE TRUETYPE
FONT vl-gothic
COLOR 0 0 0
ENCODING UTF-8
SIZE 10
OFFSET 0 -4
END
END

SCALEBAR
TRANSPARENT TRUE
END

LAYER
NAME kukaku
GROUP kukaku
TYPE POLYGON
STATUS ON
DATA "../mapdata/tokyo_bmi/AdmArea.shp"
METADATA
"group_title" "行政区画"
END
CLASS
NAME "行政区画"
STYLE
COLOR 255 255 204
OUTLINECOLOR 204 204 204
END
END
END

LAYER
NAME suigaisen
GROUP suigaisen
TYPE LINE
STATUS ON
DATA "../mapdata/tokyo_bmi/WL.shp"
METADATA
"group_title" "水涯線"
END
CLASS
NAME "水涯線"
STYLE
COLOR 102 204 204
SIZE 1
END
END
END

LAYER
NAME kenchiku
GROUP kenchiku
TYPE LINE
STATUS ON
DATA "../mapdata/tokyo_bmi/BldA.shp"
MAXSCALEDENOM 50000
METADATA
"group_title" "建築物"
END
CLASS
NAME "建築物"
STYLE
COLOR 153 204 153
SIZE 1
END
END
END

LAYER
NAME doro
GROUP doro
TYPE LINE
STATUS ON
DATA "../mapdata/tokyo_bmi/RdEdg.shp"
MAXSCALEDENOM 100000
METADATA
"group_title" "道路"
"opacity" "50"
"layer_encoding" "SJIS"
"queryable" "true"
"fields" "name:名前"
END
CLASS
NAME "道路"
STYLE
COLOR 204 204 102
SIZE 1
END
END
TEMPLATE temp_tokyo_bmi.html
END

LAYER
NAME testudo
GROUP tetsudo
TYPE LINE
STATUS ON
DATA "../mapdata/tokyo_bmi/RailCL.shp"
METADATA
"group_title" "鉄道"
END
CLASS
NAME "鉄道"
STYLE
COLOR 51 51 51
SIZE 1
END
END
END

LAYER
NAME kukaku2
GROUP kukaku2
TYPE ANNOTATION
STATUS OFF
DATA "../mapdata/tokyo_bmi/AdmArea.shp"
LABELITEM "name"
METADATA
"group_title" "住所1"
"layer_encoding" "SJIS"
"queryable" "true"
"searchfield" "name"
"fields" "name:住所"
END
CLASS
NAME "住所1"
LABEL
MINFEATURESIZE 100
TYPE TRUETYPE
FONT vl-gothic
ENCODING SJIS
SIZE 8
END
END
TEMPLATE temp_tokyo_bmi.html
END

LAYER
NAME kukakuten
GROUP kukakuten
TYPE POINT
STATUS ON
DATA "../mapdata/tokyo_bmi/AdmPt.shp"
LABELITEM "name"
METADATA
"group_title" "行政区画代表点"
"layer_encoding" "SJIS"
"queryable" "true"
"searchfield" "name"
"fields" "name:住所"
END
CLASS
NAME "行政区画代表点"
STYLE
COLOR 255 255 255
SIZE 1
END
LABEL
MINFEATURESIZE 100
TYPE TRUETYPE
FONT vl-gothic
ENCODING SJIS
SIZE 8
END
END
TEMPLATE temp_tokyo_bmi.html
END

END #MAP END


ka-map/include/config.php に追加。

---
$aszTokyoBmi = array (
'title' => 'Tokyo BMI',
'path' => '/home/user/mapfile/tokyo_bmi_shp.map',
'scales' => array( 500000, 250000, 100000 ),
'format' =>'PNG'
);
---
$aszMapFiles = array( ---
'tokyoBmi' => $aszTokyoBmi

/* Add more elements to this array to offer multiple mapfiles */

);
---


(倍率で非表示になっているレイヤが「Map Info」欄の「Layers」に赤い字で表示されていました。マイナーバージョンアップ?)

2009年9月12日土曜日

東京都の基盤地図情報 6 標高画像データに投影法を追加

4 標高画像データに投影法を追加
Tagchan's Blog
GDALを使って地理座標を与えた地図画像を投影変換する
http://www.tagchan.net/blog/2009/03/gdal_translate_warp.html
を参考にさせてもらいました。

インストール
4-1 「osgeo4w-setup.exe」を保存し、ダブルクリックします。
(「開いているファイル-セキュリティの警告」ダイアログが表示されたら「実行」をクリックします。)
4-2 OSGeo4W Setup:OSGeo4W Net Release Setup Program の「Express Install」を選んで「次へ」ボタンをクリックします。
4-3 OSGeo4W Setup:Select Packages の「GDAL」を選んで「次へ」ボタンをクリックします。
(インストールが始まります。)
4-4 OSGeo4W Setup:Create Icons でアイコンを置く場所を選んで「完了」ボタンをクリックします。

標高画像データに投影法を追加
4-5 OSGeo4W Shell を Windows の スタート->プログラム-> OSGeo4W -> OSGeo4W -> OSGeo4W Shell で起動します。
4-6 座標を追加した標高画像データのあるフォルダに移動します。
4-7 データを確認します。
投影法のデータがありません。

gdalinfo tokyo_height201-modified.tif
Driver: GTiff/GeoTIFF
Files: tokyo_height201-modified.tif
Size is 3825, 2104
Coordinate System is `'
Origin = (-278077.715182927200000,1103508.866089876300000)
Pixel Size = (23.910819753353326,-23.910819753353326)
Image Structure Metadata:
INTERLEAVE=PIXEL
Corner Coordinates:
Upper Left ( -278077.715, 1103508.866)
Lower Left ( -278077.715, 1053200.501)
Upper Right ( -186618.830, 1103508.866)
Lower Right ( -186618.830, 1053200.501)
Center ( -232348.272, 1078354.684)
Band 1 Block=3825x1 Type=Byte, ColorInterp=Red
NoData Value=-10000000000
Band 2 Block=3825x1 Type=Byte, ColorInterp=Green
NoData Value=-10000000000
Band 3 Block=3825x1 Type=Byte, ColorInterp=Blue
NoData Value=-10000000000

4-8 座標の追加で参考にした東京の地図のデータの座標を確認します。

ogrinfo -summary AdmArea.shp AdmArea
INFO: Open of `AdmArea.shp'
using driver `ESRI Shapefile' successful.

Layer name: AdmArea
Geometry: Polygon
Feature Count: 323
Extent: (-619709.111772, -606129.469810) - (1222781.861788, 1101432.881066)
Layer SRS WKT:
PROJCS["JGD2000_Japan_Zone_14",
GEOGCS["GCS_JGD_2000",
DATUM["Japanese_Geodetic_Datum_2000",
SPHEROID["GRS_1980",6378137.0,298.257222101]],
PRIMEM["Greenwich",0.0],
UNIT["Degree",0.0174532925199433]],
PROJECTION["Transverse_Mercator"],
PARAMETER["False_Easting",0.0],
PARAMETER["False_Northing",0.0],
PARAMETER["Central_Meridian",142],
PARAMETER["Scale_Factor",0.9999],
PARAMETER["Latitude_Of_Origin",26],
UNIT["Meter",1.0]]
ID: String (7.0)
UUID: String (24.0)
PRESENCE: Integer (8.0)
FINISHED: Integer (8.0)
ORGGILVL: String (5.0)
ORGMDID: String (3.0)
TYPE: String (6.0)
NAME: String (25.0)
AAC: Integer (5.0)


4-9 PROJCS["JGD2000_Japan_Zone_14",
の EPSG は、/usr/share/proj から 2456 です。

nob61@debian:/usr/share/proj$ grep -A1 JGD2000 epsg
# JGD2000
<4612> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <>
--
...
# JGD2000 / Japan Plane Rectangular CS XIV
<2456> +proj=tmerc +lat_0=26 +lon_0=142 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
...


4-10 gdal_translate コマンドで投影法のデータを追加します。

‾>gdal_translate -a_srs "EPSG:2456" tokyo_height201-modified.tif tokyo_height201-epsg2456.tif
Input file size is 3825, 2104
0...10...20...30...40...50...60...70...80...90...100 - done.

‾>gdalinfo tokyo_height201-epsg2456.tif
Driver: GTiff/GeoTIFF
Files: tokyo_height201-epsg2456.tif
Size is 3825, 2104
Coordinate System is:
PROJCS["JGD2000 / Japan Plane Rectangular CS XIV",
GEOGCS["JGD2000",
DATUM["Japanese_Geodetic_Datum_2000",
SPHEROID["GRS 1980",6378137,298.2572221010002,
AUTHORITY["EPSG","7019"]],
AUTHORITY["EPSG","6612"]],
PRIMEM["Greenwich",0],
UNIT["degree",0.0174532925199433],
AUTHORITY["EPSG","4612"]],
PROJECTION["Transverse_Mercator"],
PARAMETER["latitude_of_origin",26],
PARAMETER["central_meridian",142],
PARAMETER["scale_factor",0.9999],
PARAMETER["false_easting",0],
PARAMETER["false_northing",0],
UNIT["metre",1,
AUTHORITY["EPSG","9001"]],
AUTHORITY["EPSG","2456"]]
Origin = (-278077.715182927200000,1103508.866089876300000)
Pixel Size = (23.910819753353326,-23.910819753353326)
Metadata:
AREA_OR_POINT=Area
Image Structure Metadata:
INTERLEAVE=PIXEL
Corner Coordinates:
Upper Left ( -278077.715, 1103508.866) (138d55'9.60"E, 35d54'52.52"N)
Lower Left ( -278077.715, 1053200.501) (138d56'12.16"E, 35d27'42.40"N)
Upper Right ( -186618.830, 1103508.866) (139d55'54.54"E, 35d56'10.74"N)
Lower Right ( -186618.830, 1053200.501) (139d56'36.59"E, 35d28'59.33"N)
Center ( -232348.272, 1078354.684) (139d25'57.89"E, 35d42'0.07"N)
Band 1 Block=3825x1 Type=Byte, ColorInterp=Red
NoData Value=-10000000000
Band 2 Block=3825x1 Type=Byte, ColorInterp=Green
NoData Value=-10000000000
Band 3 Block=3825x1 Type=Byte, ColorInterp=Blue
NoData Value=-10000000000

2009年9月10日木曜日

東京都の基盤地図情報 5 標高画像データに座標データを追加

標高画像データに Quantum GIS で座標データを追加します。

Tagchan's Blog
QuantumGISを使って地図画像に地理情報を与える(2)
http://www.tagchan.net/blog/2009/03/quantumgis_georeference.html
を参考にさせてもらいました。

1 ダウンロード
1-1 Quantum GIS ホームページ
http://www.qgis.org/

の Download (ダウンロード)ページ
http://www.qgis.org/en/download.html

の Stable Software
http://www.qgis.org/en/download/binaries.html

のオンラインでインストールする 1.0.2 Stable Windows - OSGEO を選びました。
http://trac.osgeo.org/osgeo4w/ をクリックします。
1-2 OSGeo4W
http://trac.osgeo.org/osgeo4w/

の 「Quick Start for OSGeo4W Users」 の「1.Download the OSGeo4W Installer.」をクリックします。

2 インストール
2-1 「osgeo4w-setup.exe」を保存し、ダブルクリックします。
(「開いているファイル-セキュリティの警告」ダイアログが表示されたら「実行」をクリックします。)
2-2 OSGeo4W Setup:OSGeo4W Net Release Setup Program の「Express Install」を選んで「次へ」ボタンをクリックします。
2-3 OSGeo4W Setup:Select Packages の「Quantum GIS」を選んで「次へ」ボタンをクリックします。
(インストールが始まります。)
2-4 OSGeo4W Setup:Create Icons でアイコンを置く場所を選んで「完了」ボタンをクリックします。

3 標高画像データに座標を追加
東京都の行政界を表示
3-1 Quantum GIS を起動します。
3-2 「Add Vector Layer」ボタンをクリックします。
3-3 「OGR のサポートするベクタレイヤを開く」ダイアログで東京都の行政界シェイプファイル「AdmArea.shp」を選んで「オープン」ボタンをクリックします。
3-4 「Zoom In」ボタンをクリックして、東京都の本州部分をドラッグして拡大します。

標高画像データに座標を追
3-5 メニューバーの プラグイン -> Manage Plugins ... をクリックします。
3-6 「地理参照」を選択して「OK」ボタンをクリックします。
3-7 メニューバーの プラグイン -> Georeferencer -> Georeferencer をクリックします。
3-8 「地理参照」ダイアログの「...」ボタンをクリックします。
3-9 東京都の標高画像データを選択して「開く」ボタンをクリックします。
「Reference points」に画像が表示されます。


3-10 「Reference points」ダイアログの「Add Point」(赤い点が3つの)ボタンをクリックします。
3-11 一致させる位置の「Reference points」の画像内をクリックします。
(「地図座標を入力」が表示されます。)


3-12 「地図座標を入力」ダイアログの「from map canvas」をクリックして「Quantum GIS」本体に表示されている地図の対応する位置をクリックします。
(「地図座標を入力」に座標が入力されます。)
3-13 「地図座標を入力」ダイアログの「了解」をクリックします。
(4、5か所繰り返します。)
3-14 「Reference points」ダイアログの「変形種別」を「ヘルマート」に、「修正されたラスタ」の「...」ボタンをクリックして出力先を指定します。
(世界ファイルは自動的に設定されます。)


3-15 「Reference points」ダイアログの「Create and load layer」ボタンをクリックします。
3-16 「Warning」ダイアログの「OK」ボタンをクリックし、「ワープ設定」ダイアログの「了解」ボタンをクリックします。
3-17 「地理参照」ダイアログの「閉じる」ボタンをクリックします。
(「Reference points」ダイアログも閉じます。)