2010年6月9日水曜日

OpenLayers57h OpenStreetMap & GeoWebCache - GeoWebCache の設定ファイル 8

GeoWebCache 投影法を EPSG:2456でキャッシュ
- シード(資源化:キャッシュタイルの作成)方法


実際にレイヤをシードするために、レイヤのシードリンク「Seed this layer」をクリックします。

メインシードインターフェイス
Number of threads to use: 01(複数スレッドの実行の選択)
Type of operation: Reseed-regenerated all tiles(再シード すべてのタイル、損失タイル、削除タイル)
SRS: EPSG:2456(出力投影法)
Format: image/png (画像フォーマット)
Zoom start: 00(最低倍率)
Zoom stop: 02(最高倍率) 時間がかかるので
Bounding box: -279000, 1054000, -185000, 1104000(東京都の範囲)
「Submit」ボタンをクリックします。

次のスレッドが表示されます。



09 3 17:58:19 INFO [seed.SeedTask] - Thread 0 begins seeding layer : sde:japan_highway
09 3 17:58:33 INFO [seed.SeedTask] - Thread 0 completed (re)seeding level 0 for layer sde:japan_highway (ca. 14.29%)
09 3 17:58:51 INFO [seed.SeedTask] - Thread 0 completed (re)seeding level 1 for layer sde:japan_highway (ca. 33.33%)
09 3 17:59:22 INFO [seed.SeedTask] - Thread 0 completed (re)seeding level 2 for layer sde:japan_highway (ca. 109.52%)
09 3 17:59:22 INFO [seed.SeedTask] - Thread 0 completed (re)seeding layer sde:japan_highway after 46 tiles, of an estimated 42

投影法が EPSG:2456 の基盤地図情報の東京都の地図をベースマップにした HTML コードの解説をちょっとします。

---
<script type="text/javascript">
var map, layer1, layer2, osm;

function init() {
map = new OpenLayers.Map('map', {
projection: new OpenLayers.Projection("EPSG:2456"),
maxResolution: 'auto',
maxExtent: new OpenLayers.Bounds(-279000,1054000,-185000,1104000),
units: 'meters',
displayProjection: new OpenLayers.Projection("EPSG:4326")
});


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

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


osm = new OpenLayers.Layer.WMS( "OSM Layer",
// "http://localhost:8080/geoserver/wms",
"http://localhost:8080/geoserver/gwc/service/wms", // GWC に変更
{
layers: 'sde:japan_highway',
// isBaselayer: true,
transparent: true,
format: 'image/png'
},{
projection: new OpenLayers.Projection("EPSG:2456")
});

map.addLayers([layer1, layer2, osm]);
map.addControl(new OpenLayers.Control.LayerSwitcher());
map.addControl(new OpenLayers.Control.MousePosition());
map.addControl(new OpenLayers.Control.ScaleLine());
map.zoomToMaxExtent();
}
</script>
---

OpenLayers57g OpenStreetMap & GeoWebCache - GeoWebCache の設定ファイル 7

GeoWebCache 投影法を EPSG:2456でキャッシュ
- geowebcache.xml ファイルを作成


EPSG:4326、EPSG:900913 以外の投影法のキャッシュを作成するときは geowebcache.xml ファイルを作成することで実現できます。

geowebcache.xml の場所については、

GeoWebCache の Configurating Layers
http://geowebcache.org/docs/current/configuration/xml/index.html

には、

WEB-INF/classes/geowebcache.xml

5. GWC - GeoWebCache(前バージョンのマニュアル)
http://geoserver.org/display/GEOSDOC/5.+GWC+-+GeoWebCache

には、例えばということで

data_dir/gwc/geowebcache.xml

になっています。
今回は、

geoserver-2.0.1/wbapps/geoserver/WEB-INF/classes/geowebcache.xml

で試してみます。
(geowebcache.xml の場所を変えるには WEB-INF/geowebcache-servlet.xml で設定すると記述されています。)

geowebcache.xml の内容は

Simple Configuration Examples
http://geowebcache.org/docs/current/configuration/xml/simple.html

の Simple を参考に次のようにします。

<gwcConfiguration>
<!-- ... -->
<layers>
<!-- ... -->
<wmsLayer>
<name>sde:japan_highway</name>
<!-- <wmsUrl><string>http://localhost:8080/geoserver/wms</string></wmsUrl> -->
<mimeFormats><string>image/png</string></mimeFormats>
<gridSubsets>
<gridSetName>EPSG:2456</gridSetName>
<extent>
<coords>
<double>-279000</double>
<double>1054000</double>
<double>-185000</double>
<double>1104000</double>
</coords>
</extent>
<zoomStart>13</zoomStart><zoomStart>0</zoomStart>
<zoomStop>13</zoomStop>
</gridSubsets>
<wmsLayers>sde:japan_highway</wmsLayers>
<wmsUrl>
<string>http://localhost:8080/geoserver/wms</string>
</wmsUrl>
<bgColor>0x0066FF</bgColor>
<palette>popshade</palette>
</wmsLayer>
<!-- ... -->
</layers>
</gwcConfiguration>

この様なエラーが表示されました。

---
08 3 20:02:59 ERROR [context.ContextLoader] - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'gwcXmlConfig' defined in URL [jar:file:/home/user/geoserver-2.0.1/webapps/geoserver/WEB-INF/lib/gwc-2.0.1.jar!/applicationContext.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.geowebcache.config.XMLConfiguration]: Constructor threw exception; nested exception is java.lang.NullPointerException

このエラーは、XML ファイルが文章ルール通りでないと、他の XML ファイルを参照するために発生するようです。

geowebcache.xml を

Complete List of Configuration Elements
http://geowebcache.org/docs/current/configuration/xml/exhaustive.html

に従って作成しました。

<?xml version="1.0" encoding="utf-8"?>
<gwcConfiguration
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://geowebcache.org/schema/1.2.2/geowebcache.xsd"
xmlns="http://geowebcache.org/schema/1.2.2">
<version>1.2.1</version>
<formatModifiers>
<formatModifier>
<responseFormat>image/jpeg</responseFormat>
<requestFormat>image/png</requestFormat>
<transparent>true</transparent>
<!-- OPTIONAL Background color
<bgColor>0x0066DD</bgColor> -->
<!-- OPTIONAL Palette used on WMS server
<palette>somepalette</palette> -->
<!-- OPTIONAL Tune the compression level, 1.0 is best quality -->
<compressionQuality>0.9</compressionQuality>
</formatModifier>
</formatModifiers>
<gridSets>
<gridSet>
<name>EPSG:2456</name>
<srs><number>2456</number></srs>
<extent>
<coords>
<double>-279000</double>
<double>1054000</double>
<double>-185000</double>
<double>1104000</double>
</coords>
</extent>
</gridSet>
</gridSets>
<layers>
<!-- ... -->
<wmsLayer>
<name>sde:japan_highway</name>
<mimeFormats>
<string>image/png</string>
<string>image/jpeg</string>
</mimeFormats>
<gridSubsets>
<gridSubset>
<gridSetName>EPSG:2456</gridSetName>
<extent>
<coords>
<double>-279000</double>
<double>1054000</double>
<double>-185000</double>
<double>1104000</double>
</coords>
</extent>
<zoomStart>0</zoomStart>
<zoomStop>25</zoomStop>
</gridSubset>
</gridSubsets>
<wmsUrl>
<string>http://localhost:8080/geoserver/wms</string>
</wmsUrl>
<wmsLayers>sde:japan_highway</wmsLayers>
<!-- <bgColor>0x0066FF</bgColor>
<palette>popshade</palette> -->
</wmsLayer>
<!-- ... -->
</layers>
</gwcConfiguration>

GeoServer のログイン画面の左側の欄の Services -> GWC をクリックします。
GeoWebCache 画面の Automatically Generated Demos: の 「A list of all the layers and automatic demos」リンクをクリックします。
GeoWebCache Demo 画面の sde:japan_highway に EPSG:2456 が追加されているので、OpenLayers の png をクリックして確かめてみます。

OpenLayers57f OpenStreetMap & GeoWebCache - OpenStreetMap の表示 6

GeoWebCache の設定

GeoServer GeoWebCache Configuration ページ
http://geoserver.org/display/GEOSDOC/GeoServer+GeoWebCache+Configuration

を参考に japan_highway レイヤの GeoWebCache 設定をします。
1 左側の欄の Services -> GWC をクリックします。
2 GeoWebCache ページ http://localhost:8080/geoserver/gwc の
「A list of all the layers and automatic demos」リンクをクリックします。
3 sde:japan_highway の OpenLayers の png をクリックします。

http://localhost:8080/geoserver/gwc/demo/sde:japan_highway?gridSet=EPSG:900913&format=image/png

何も表示されていないので、倍率を上げていきます。



キャッシュディレクトリは、/tmp/geowebcache になります。

user@debian:~$ ls /tmp/geowebcache/
meta_jdbc_h2 sde_japan_highway
user@debian:~$ ls /tmp/geowebcache/sde_japan_highway/
EPSG_900913_04 EPSG_900913_05

シード(資源化:キャッシュタイルの作成)方法
実際にレイヤをシードするために、レイヤのシードリンク「Seed this layer」をクリックします。

メインシードインターフェイス
Number of threads to use: 01(複数スレッドの実行の選択)
Type of operation: Reseed-regenerated all tiles(再シード すべてのタイル、損失タイル、削除タイル)
SRS: EPSG:4326(出力投影法)EPSG:900913
Format: image/png (画像フォーマット)
Zoom start: 00(最低倍率)
Zoom stop: 12(最高倍率)
Bounding box: 138.926, 35.468, 139.949, 35.941(東京都の範囲)
15518513, 4258113, 15579051, 4265113
「Submit」ボタンをクリックします。

次のスレッドが表示されます。



キャッシュが完成されるときは次のようになります。

06 3 19:34:55 WARN [geoserver.we] - GWCAdminPage does not have a title set
06 3 19:45:32 INFO [seed.SeedTask] - Thread 0 begins seeding layer : sde:japan_highway
06 3 19:45:36 INFO [seed.SeedTask] - Thread 0 completed (re)seeding level 0 for layer sde:japan_highway (ca. 1.51%)
06 3 19:45:37 INFO [seed.SeedTask] - Thread 0 completed (re)seeding level 1 for layer sde:japan_highway (ca. 3.53%)
06 3 19:45:39 INFO [seed.SeedTask] - Thread 0 completed (re)seeding level 2 for layer sde:japan_highway (ca. 4.53%)
06 3 19:45:40 INFO [seed.SeedTask] - Thread 0 completed (re)seeding level 3 for layer sde:japan_highway (ca. 5.4%)
06 3 19:45:50 INFO [seed.SeedTask] - Thread 0 completed (re)seeding level 4 for layer sde:japan_highway (ca. 8.6%)
06 3 19:45:58 INFO [seed.SeedTask] - Thread 0 completed (re)seeding level 5 for layer sde:japan_highway (ca. 8.82%)
06 3 19:46:08 INFO [seed.SeedTask] - Thread 0 completed (re)seeding level 6 for layer sde:japan_highway (ca. 10.33%)
06 3 19:46:17 INFO [seed.SeedTask] - Thread 0 completed (re)seeding level 7 for layer sde:japan_highway (ca. 12.34%)
06 3 19:46:23 INFO [seed.SeedTask] - Thread 0 completed (re)seeding level 8 for layer sde:japan_highway (ca. 16.37%)
06 3 19:46:41 INFO [seed.SeedTask] - Thread 0 completed (re)seeding level 9 for layer sde:japan_highway (ca. 17.63%)
06 3 19:47:16 INFO [seed.SeedTask] - Thread 0 completed (re)seeding level 10 for layer sde:japan_highway (ca. 37.3%)
06 3 19:48:46 INFO [seed.SeedTask] - Thread 0 completed (re)seeding level 11 for layer sde:japan_highway (ca. 78.59%)
06 3 19:51:31 INFO [seed.SeedTask] - Thread 0 completed (re)seeding level 12 for layer sde:japan_highway (ca. 145.9%)
06 3 19:51:31 INFO [seed.SeedTask] - Thread 0 was terminated after 576 tiles

余計なキャッシュが作成されているようでしたら、スレッド右側にある「Kill Thread」ボタンをクリックしてください。



コードの解説ちょっとします。
投影法が EPSG:2456 の基盤地図情報の東京都の地図をベースマップにすると、投影法をEPSG:4326 で作成した OSM のキャッシュレイヤが表示できませんでした。
ベースマップを国土数値情報の東京都の地図をベースマップにします。

---
<script type="text/javascript">
var map, layer1, layer2, osm;
var lon = 139.4;
var lat = 35.7;
var zoom = 10;

function init() {
map = new OpenLayers.Map('map');

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

osm = new OpenLayers.Layer.WMS( "OSM Layer",
"http://localhost:8080/geoserver/gwc/service/wms",
// "http://localhost:8080/geoserver/wms",
{
layers: 'sde:japan_highway',
transparent: true,
format: 'image/png'
});

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



キャッシュを使ったレイヤは、キャッシュを使用しないときより半分の時間で表示できました。
キャッシュの効果がないようでしたら、倍率を上げてキャッシュを作成します。
Zoom start、Zoom stop を両方13にすると、タイル数 1056、時間3分で作成されました。

user@debian:~$ ls /tmp/geowebcache/sde_japan_highway/
EPSG_4326_00 EPSG_4326_03 EPSG_4326_06 EPSG_4326_09 EPSG_4326_12
EPSG_4326_01 EPSG_4326_04 EPSG_4326_07 EPSG_4326_10 EPSG_4326_13
EPSG_4326_02 EPSG_4326_05 EPSG_4326_08 EPSG_4326_11

タイル数が多いと(メモリに関する)エラーが発生するので注意してください。
キャッシュは、Debian を終了すると消去されてしまいます。

OpenLayers57e OpenStreetMap & GeoWebCache - OpenStreetMap の表示 5

HTML ファイルの作成

HTML ファイルを新規作成します。
「openlayersTokyoproj」 を右クリックして 新規 -> HTML ファイル をクリック。
「HTML ファイル」ウィンドウの「ファイル名(任意:openlayers_osm_gwc.html)」に入力して「完了」ボタンをクリック。
「charset」を「utf-8」にします。

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

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>OpenLayers57 OpenStreetMap & GeoWebCache</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, layer1, layer2, osm;

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)
});
// ここまで


// MapServer WMS リクエスト
layer1 = new OpenLayers.Layer.WMS( "Tokyo Height WMS",
"http://192.168.1.6/cgi-bin/mapserv?",
{
map: '/home/user/mapfile/tokyo_bmi_pgis_img.map',
layers: 'height',
isBaselayer: true,
format: 'image/png'
});

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


// GeoServer WMS リクエスト OSM
osm = new OpenLayers.Layer.WMS( "OSM Layer",
"http://localhost:8080/geoserver/wms",
{
layers: 'sde:japan_highway',
isBaselayer: false,
transparent: true,
format: 'image/png'
},{
projection: new OpenLayers.Projection("EPSG:EPSG:900913")
});

map.addLayers([layer1, layer2, osm]);
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">OpenLayers57 OpenStreetMap & GeoWebCache</h1>
<div id="tags"></div>
<p id="shortdesc">
OpenStreetMap & GeoWebCache.
</p>
<div id="map" class="smallmap"></div>
<div id="docs">
<p>OpenStreetMap を自分の GeoServer に設定します。</p>
<p>次に GeoWebCache を使ってみます。</p>
</div>
</body>
</html>



OpenLayers57d OpenStreetMap & GeoWebCache - OpenStreetMap の表示 4

OpenStreetMap スタイリングの確認

1 左側の欄の「Layer Preview」をクリックします。
2 「sde:japan_highway」の「OpenLayers」リンクをクリックします。
3 「wms を開く」ダイアログで「ファイルを保存する」を選択しボタンをクリックします。
wms の内容はつぎのようになっています。

<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE ServiceExceptionReport SYSTEM "http://localhost:8080/geoserver/schemas/wms/1.1.1/WMS_exception_1_1_1.dtd"> <ServiceExceptionReport version="1.1.1" > <ServiceException>
The requested Style can not be used with this layer. The style specifies an attribute of aeroway and the layer is: sde:japan_highway
</ServiceException></ServiceExceptionReport>

osm_roads スタイルの Runway のデータを削除します。
4 左側の欄の Data -> Styles をクリックします。
5 <!-- Runways from openstreetmap --> から
<-- end of zoom level b --> までを削除します。
(「japan_highway」の「Default Style」が「osm_roads」であることを確認します。)
6 左側の欄の「Layer Preview」をクリックします。
7 「sde:japan_highway」の「OpenLayers」リンクをクリックします。
OpenLayers は表示されましたが、つぎのようにエラーメッセージが表示されました。

The requested Style can not be used with this layer. The style specifies an attribute of highway and the layer is: sde:japan_highway

<NamedLayer> の <Name> を sde:japan_highway にします。<-1
<Rule> の <Name> を sde:japan_highway にします。これは表示に影響はない(?)と思います。<-2
<ogc:Filter> の <ogc:PropertyName> を type にします。<-3

---
<NamedLayer>
<Name>sde:japan_highway</Name> <-1
<UserStyle>
<Title>A boring default style</Title>
<Abstract>A sample style that just prints out a green line</Abstract>

<!-- start of zoom level 3 -->

<FeatureTypeStyle>
<Rule>
<Name>sde:japan_highway</Name> <-2
<Title>freeways- outer zoom level</Title>
<Abstract>freeways style openstreetmap data</Abstract>
<ogc:Filter>
<ogc:Or>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>type</ogc:PropertyName> <-3
<ogc:Literal>residential</ogc:Literal>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>type</ogc:PropertyName>
<ogc:Literal>unclassified</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Or>
</ogc:Filter>
<MinScaleDenominator>1000</MinScaleDenominator>
<MaxScaleDenominator>4000</MaxScaleDenominator>
<LineSymbolizer>
<Stroke>
<CssParameter name="stroke">#f4faf6</CssParameter>
<CssParameter name="stroke-width">12</CssParameter>
<CssParameter name="stroke-linejoin">round</CssParameter>
</Stroke>
</LineSymbolizer>
<TextSymbolizer>
<Label>
<ogc:PropertyName>name</ogc:PropertyName>
</Label>
<Font>
<CssParameter name="font-size">10</CssParameter>
<CssParameter name="font-family">Arial</CssParameter>
<CssParameter name="font-color">#eeeeee</CssParameter>
</Font>
<LabelPlacement>
<LinePlacement>
<PerpendicularOffset>
0
</PerpendicularOffset>
</LinePlacement>
</LabelPlacement>
<Halo>
<Radius>
<ogc:Literal>1</ogc:Literal>
</Radius>
<Fill>
<CssParameter name="fill">#f4faf6</CssParameter>
</Fill>
</Halo>
<Fill>
<CssParameter name="fill">#808080</CssParameter>
</Fill>
<VendorOption name="maxDisplacement">50</VendorOption>
<VendorOption name="labelAllGroup">true</VendorOption>
<VendorOption name="removeOverlaps">true</VendorOption>
<VendorOption name="followLine">true</VendorOption>
<VendorOption name="group">true</VendorOption>
</TextSymbolizer>
</Rule>
</FeatureTypeStyle>
---

japan_highway の type の内容は次の通りです。

user@debian:~$ psql osm
Welcome to psql 8.3.9, 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

osm=> SELECT distinct type from japan_highway;

type
--------------------------
bridleway
construction
crossing
cycleway
footpath
footway
incline,footway
living_street
minor
motorway
motorway_link
pah
pass
path
pedestrian
primary
primary; path
primary_link
raceway
residential
road
runaway_truck_lane
secondary
secondary_link
service
services
slope
steops
steos
steps
tertiary
tertiary; secondary
tertiary_link
track
trunk
trunk_link
unclass
unclassified
unclassified;residential
undefined
unsurfaced
(41 rows)

(END):

このうち、osm_roads.sld に設定されているものは次の通りです。

residential
unclassified
primary
secondary
tertiary
motorway
trunk

倍率によって、表示できる道路、線の太さ、色が変わるように設定されています。
「Layer Preview」をクリックして「sde:japan_highway」の「OpenLayers」リンクをクリックしてください。
最初の倍率では何も表示されません。





<VendorOption... は、

Throw GeoServer a curve (and it will be labeled)
http://blog.geoserver.org/2009/01/08/throw-geoserver-a-curve/

に説明があります。
これによってラベルが道路に沿って表示されます。

OpenLayers57c OpenStreetMap & GeoWebCache - OpenStreetMap の表示 3

OpenStreetMap のスタイリングの設定

GeoServer and OpenStreetMap ページの「Making sense of the data」リンクをクリックすると

Map Features-OpenStreetMap Wiki ページ
http://wiki.openstreetmap.org/wiki/Map_Features

が表示されます。
Available languages の「日本語」リンクをクリックします。
Ja:Map Features-OpenStreetMap Wiki ページの「ご注意」内の「Japan tagging」をクリックします。
ここには日本の道路の表示についてかかれています。
GeoServer and OpenStreetMap ページの Styling の 「final SLD」では英国の道路に対応していまが、これを使ってスタイリングします。

1「final SLD」リンクをクリックします。
2 osm_roadsld.zip を解凍します。
user@debian:~/Desktop$ unzip osm_roadssld.zip
Archive: osm_roadssld.zip
inflating: osm_roads.sld
3 ログインした GeoServer ページの左側の欄の Data -> Styles をクリックします。
4 Styles ページの「Add a new style」をクリックします。
5 New style ページで
Name: osm_roads
と入力します。
6 New style ページの下の方の SLD file の「参照」ボタンをクリックします。
7 「ファイルのアップロード」で osm_roads.sld を選択し「開く」ボタンをクリックします。
8 「Upload...」リンクをクリックします。
9 「Validate」ボタンをクリックします。
次のようなエラーが表示されました。

# org.xml.sax.SAXParseException: cvc-complex-type.2.4.a: Invalid content was found starting with element 'Name'. One of '{"http://www.opengis.net/sld":Symbolizer}' is expected.
# org.xml.sax.SAXParseException: cvc-complex-type.2.4.a: Invalid content was found starting with element 'Halo'. One of '{"http://www.opengis.net/sld":VendorOption}' is expected.
---

GeoServer and OpenStreetMap ページ
http://blog.geoserver.org/2009/01/30/geoserver-and-openstreetmap/

のコメントと

Throw GeoServer a curve (and it will be labeled)ページ
http://blog.geoserver.org/2009/01/08/throw-geoserver-a-curve/

を参考に、osm_roads をつぎのように修正します。
該当するすべての <FeatureTypeStyle> で

---
<FeatureTypeStyle>
<Rule>
<Name>topp:planet_osm_line</Name>
<Title>freeways- outer zoom level</Title>
<Abstract>freeways style openstreetmap data</Abstract>
<ogc:Filter>
<ogc:Or>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>highway</ogc:PropertyName>
<ogc:Literal>residential</ogc:Literal>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>highway</ogc:PropertyName>
<ogc:Literal>unclassified</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Or>
</ogc:Filter>
<!-- Min および MaxScaleDenominator を LineSymbolizer の直前に -->
<MinScaleDenominator>1000</MinScaleDenominator>
<MaxScaleDenominator>4000</MaxScaleDenominator>
<!-- ここまで -->
<LineSymbolizer>
<Stroke>
<CssParameter name="stroke">#f4faf6</CssParameter>
<CssParameter name="stroke-width">12</CssParameter>
<CssParameter name="stroke-linejoin">round</CssParameter>
</Stroke>
</LineSymbolizer>
<TextSymbolizer>
<Label>
<ogc:PropertyName>name</ogc:PropertyName>
</Label>
<Font>
<CssParameter name="font-size">10</CssParameter>
<CssParameter name="font-family">Arial</CssParameter>
<CssParameter name="font-color">#eeeeee</CssParameter>
</Font>
<LabelPlacement>
<LinePlacement>
<PerpendicularOffset>
0
</PerpendicularOffset>
</LinePlacement>
</LabelPlacement>
<Halo>
<Radius>
<ogc:Literal>1</ogc:Literal>
</Radius>
<Fill>
<CssParameter name="fill">#f4faf6</CssParameter>
</Fill>
</Halo>
<Fill>
<CssParameter name="fill">#808080</CssParameter>
</Fill>
<!-- VendorOption を TextSymbolizer 終了タグの直前にに -->
<VendorOption name="maxDisplacement">50</VendorOption>
<VendorOption name="labelAllGroup">true</VendorOption>
<VendorOption name="removeOverlaps">true</VendorOption>
<VendorOption name="followLine">true</VendorOption>
<VendorOption name="group">true</VendorOption>
<!-- ここまで -->
</TextSymbolizer>
</Rule>
</FeatureTypeStyle>
---

no validation error と表示されたら「submit」ボタンをクリックします。

10 左側の欄の Data -> Layers をクリックします。
11 「japan_highway」をクリックします。
12 ページ上部の「Publishing」タブをクリックします。
13 「Default Title」の「Default Style」が「osm_roads」にします。
(他は変更しません。)
14 ページ下部の「Save」ボタンをクリックします。

OpenLayers57b OpenStreetMap & GeoWebCache - OpenStreetMap の表示 2

OpenLayers57b OpenStreetMap & GeoWebCache - OpenStreetMap の表示 2

GeoServer に OpenStreetMap のデータを追加

PostGIS データベース "tokyo" の data store を作成します。
1 左側の欄の「Data」の「Stores」をクリックします。
2 「Add new Store」をクリックします。
3 「PostGIS」をクリックします。
4 Workspace の初期設定は変えずに、Basic Store Info の Name と Description を入力します。

Workspace: sde (変更なし)
Data Source Name: OSM
Description: Open Street Map (説明、任意です)
Enabled: チェックする(変更なし)

5 PostGIS データベースの Connection Parameters を指定します。

dbtype: postgis (変更なし)
host: localhost (変更なし)
port: 5432 (変更なし)
database: osm
schema: public (変更なし)
user: user (japan_highway テーブルに接続できるユーザ)
password: ●●●●●●● (user がテーブルに接続するときのパスワード)
Namespace: http://geoserver.sf.net(固定)
max connections: 10 (変更なし、任意です)
min connections: 1 (変更なし、任意です)
fetch size: 1000 (変更なし、任意です)
Connection timeout: 20 (変更なし、任意です)
validate connection: チェックする
Primary key metadata table: (空、変更なし、任意です)
Loose bbox: チェックする(変更なし)
preparedStatements: チェッしない(変更なし)
Max open prepared statements: 50 (変更なし、任意です)

6 「Save」ボタンをクリックします。
追加されたレイヤ一覧が表示されます。

「Layer Configration」
0 「Create a new data store」から続けて操作しても OK です。
1 左側の欄の「Data」の「Layers」をクリックします。
2 「Add a new resource」をクリックします。
3 「New Layer chooser」の「Add a layer from」ドロップダウンから「sde:Tokyo」を選択します。
4 OSM store のリソース(レイヤ)のリストが表示されます。
「japan_highway」の「Publish」をクリックします。
5 選択したレイヤのリソースと編集した情報の設定をします。

「Basic Resource Info」を入力します。
Name: japan_highway (変更なし)
Title: Japan Highway (最初の文字を大文字に変更 任意)
Abstract: Open Street Map Japan Highway (任意)

「Keywords」を入力します。
Current Keywords: (追加したキーワードが表示されます)
New Keyword: japan highway, OSM (1つずつ入力して「追加」ボタンをクリック)
「Metadata links」は変更しません。
「Coordinate Reference Systems」を入力します。
Native SRS: 空(変更なし)
Declared SRS: EPSG:4326 (「Find」ボタンをクリックして「4326」を検索して表示された「4326」をクリック)
SRS handling: Force declared (変更しない)

6 「Bounding Boxes」を入力します。
Native Bounding Box: (「Compute from data」をクリック -以下の値が入力されました)
Min X: 122.94
Min Y: 24.322
Max X: 145.82
Max Y: 45.522
Lat/Lon Bounding Box: (「Compute from native bounds」をクリック -以下の値が入力されました)
Min X: 122.94
Min Y: 24.322
Max X: 145.82
Max Y: 45.522

7 ページ上部の「Publishing」タブをクリックします。
8 「Default Title」の「Default Style」が「simple_roads」にします。
(他は変更しません。)
9 ページ下部の「Save」ボタンをクリックします。

「Layer」ページの一番下に「japan_highway」が追加されます。

「Preview the Layer」
1 左側の欄の「Layer Preview」をクリックし、「japan_highway」を検索します。
2 Common Formats 列の「OpenLayers」をクリックします。
3 成功すれば、OpenLayers Map がポリゴンで表示されます。

OpenLayers57a OpenStreetMap & GeoWebCache - OpenStreetMap の表示 1

Open Street Map のレイヤをデータをダウンロードして自分の GeoServer に追加して表示します。

GeoServer and OpenStreetMap ページ
http://blog.geoserver.org/2009/01/30/geoserver-and-openstreetmap/

を参考に Open Street Map(OSM)を GeoServer の gwc にキャッシュします。

OSM をデータベース(PostGIS [PostgreSQL])に登録

OSM のデータをダウンロードします。
1 GeoServer and OpenStreetMap ページの 「download sections of the data set」リンクをクリックします。
2 Cloudmade の Mappers の Download ページ
http://downloads.cloudmade.com/
の Last maps update: 16 February 2010 の「Asia」リンクをクリックします。
3 Last maps update: 16 February 2010 の「World > Asia」の「Japan」リンクをクリックします。
4 「japan.shapefiles.zip」をクリックし、「japan.shapefiles.zip を開く」で「ファイルを保存」ボタンをクリックしてダウンロードします。
5 japan.shapefiles.zip を解凍します。

user@debian:~/Desktop$ unzip japan.shapefiles.zip
Archive: japan.shapefiles.zip
inflating: japan_water.shp
inflating: japan_administrative.prj
inflating: japan_poi.dbf
inflating: japan_poi.prj
inflating: japan_water.dbf
inflating: japan_coastline.dbf
inflating: japan_administrative.shp
inflating: japan_highway.prj
inflating: japan_coastline.shp
inflating: japan_natural.prj
inflating: readme.txt
inflating: japan_highway.shx
inflating: japan_natural.shp
inflating: japan_coastline.prj
inflating: japan_water.shx
inflating: japan_administrative.shx
inflating: japan_administrative.dbf
inflating: japan_highway.shp
inflating: japan_poi.shx
inflating: japan_highway.dbf
inflating: japan_poi.shp
inflating: japan_natural.dbf
inflating: japan_coastline.shx
inflating: japan_natural.shx
inflating: japan_water.prj
6 japan_shapefile フォルダに入れます。
user@debian:~/Desktop$ cd
user@debian:~$ mkdir download/japan_shapefile
user@debian:~$ mv Desktop/japan* download/japan_shapefile/

PostGIS に japan_highway.shp を追加します。

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

user@debian:~$ su - postgres
パスワード:
postgres@debian:~$ createdb -T template_postgis -O user osm
postgres@debian:~$ psql -l
List of databases
Name | Owner | Encoding
------------------+----------+----------
osm | user | UTF8
postgres | postgres | UTF8
template0 | postgres | UTF8
template1 | postgres | UTF8
template_postgis | postgres | UTF8
tokyo | user | UTF8
tokyo_bmi | user | UTF8
(7 rows)

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

postgres@debian:~$ psql osm
Welcome to psql 8.3.9, 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

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

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

osm=# \q

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

postgres@debian:~$ exit
logout
user@debian:~$ mv geoserver-2.0.1/data_dir/data/japan_shapefile/ download/
user@debian:~$ cd download/japan_shapefile/
user@debian:~/download/japan_shapefile$ shp2pgsql japan_highway.shp japan_highway > japan_highway.sql
Shapefile type: Arc
Postgis type: MULTILINESTRING[2]

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

user@debian:~/download/japan_shapefile$ psql -d osm -f japan_highway.sql

メッセージが流れて、終了するまでに時間がかかります。
データベースを確かめてみます。

user@debian:~/download/japan_shapefile$ psql osm
Welcome to psql 8.3.9, 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

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

osm=> \d japan_highway
Table "public.japan_highway"
Column | Type | Modifiers
----------+------------------------+-------------------------------------------------------------
gid | integer | not null default nextval('japan_highway_gid_seq'::regclass)
type | character varying(24) |
name | character varying(255) |
oneway | character varying(9) |
the_geom | geometry |
Indexes:
"japan_highway_pkey" PRIMARY KEY, btree (gid)
Check constraints:
"enforce_dims_the_geom" CHECK (ndims(the_geom) = 2)
"enforce_geotype_the_geom" CHECK (geometrytype(the_geom) = 'MULTILINESTRING'::text OR the_geom IS NULL)
"enforce_srid_the_geom" CHECK (srid(the_geom) = (-1))

osm=> \q

2010年6月8日火曜日

OpenLayers 56b Snap/Split and Persist via WFS - Snap と Split を WFS で保存 2

HTML ファイルの作成

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

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

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>OpenLayers56 Snap/Split and Persist via WFS</title>
<!-- 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>

<!-- スタイルシート -->
<link rel="stylesheet" href="./theme/default/style.css" type="text/css" />
<link rel="stylesheet" href="./examples/style.css" type="text/css" />


<!-- Editing Tool Bar スタイルシート -->
<style>
.customEditingToolbar {
float: right;
right: 0px;
height: 30px;
width: 200px;
}
.customEditingToolbar div {
float: right;
margin: 5px;
width: 24px;
height: 24px;
}
.olControlNavigationItemActive {
background-image: url("./theme/default/img/editing_tool_bar.png"); /* 修正 */
background-repeat: no-repeat;
background-position: -103px -23px;
}
.olControlNavigationItemInactive {
background-image: url("./theme/default/img/editing_tool_bar.png"); /* 修正 */
background-repeat: no-repeat;
background-position: -103px -0px;
}
.olControlDrawFeaturePointItemInactive {
background-image: url("./theme/default/img/editing_tool_bar.png"); /* 修正 */
background-repeat: no-repeat;
background-position: -77px 0px;
}
.olControlDrawFeaturePointItemActive {
background-image: url("./theme/default/img/editing_tool_bar.png"); /* 修正 */
background-repeat: no-repeat;
background-position: -77px -23px;
}
.olControlModifyFeatureItemActive {
background-image: url(./theme/default/img/move_feature_on.png); /* 修正 */
background-repeat: no-repeat;
background-position: 0px 1px;
}
.olControlModifyFeatureItemInactive {
background-image: url(./theme/default/img/move_feature_off.png); /* 修正 */
background-repeat: no-repeat;
background-position: 0px 1px;
}
.olControlDeleteFeatureItemActive {
background-image: url(./theme/default/img/remove_point_on.png); /* 修正 */
background-repeat: no-repeat;
background-position: 0px 1px;
}
.olControlDeleteFeatureItemInactive {
background-image: url(./theme/default/img/remove_point_off.png); /* 修正 */
background-repeat: no-repeat;
background-position: 0px 1px;
}
</style>


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

var DeleteFeature = OpenLayers.Class(OpenLayers.Control, {
initialize: function(layer, options) {
OpenLayers.Control.prototype.initialize.apply(this, [options]);
this.layer = layer;
this.handler = new OpenLayers.Handler.Feature(
this, layer, {click: this.clickFeature}
);
},
clickFeature: function(feature) {
// if feature doesn't have a fid, destroy it
if(feature.fid == undefined) {
this.layer.destroyFeatures([feature]);
} else {
feature.state = OpenLayers.State.DELETE;
this.layer.events.triggerEvent("afterfeaturemodified", {feature: feature});
feature.renderIntent = "select";
this.layer.drawFeature(feature);
}
},
setMap: function(map) {
this.handler.setMap(map);
OpenLayers.Control.prototype.setMap.apply(this, arguments);
},
CLASS_NAME: "OpenLayers.Control.DeleteFeature"
});


function init() {
OpenLayers.ProxyHost= "/cgi-bin/proxy.cgi?url="; // 修正
map = new OpenLayers.Map('map', {
maxResolution: 156543.03390625,
restrictedExtent: new OpenLayers.Bounds(15518513, 4258113, 15518513, 4265113),// 表示範囲 東京駅周辺に変更
maxExtent: new OpenLayers.Bounds(-2.003750834E7,-2.003750834E7,2.003750834E7,2.003750834E7),// 世界全図
projection: new OpenLayers.Projection("EPSG:900913"),
displayProjection: new OpenLayers.Projection("EPSG:4326"), // 追加
controls: [
new OpenLayers.Control.PanZoom()
]
});


// Open Street Map レイヤ
var wms = new OpenLayers.Layer.WMS("Base Layer",
"http://demo.opengeo.org/geoserver_openstreetmap/gwc/service/wms",
{
layers: 'openstreetmap',
format: 'image/png'
});

// 描画したフィーチャのスタイル
var styles = new OpenLayers.StyleMap({
"default": new OpenLayers.Style(null, {
rules: [
new OpenLayers.Rule({
symbolizer: {
"Point": {
pointRadius: 5,
graphicName: "square",
fillColor: "white",
fillOpacity: 0.25,
strokeWidth: 1,
strokeOpacity: 1,
strokeColor: "#333333"
},
"Line": {
strokeWidth: 3,
strokeOpacity: 1,
strokeColor: "#666666"
}
}
})
]
}),
"select": new OpenLayers.Style({
strokeColor: "#00ccff",
strokeWidth: 4
}),
"temporary": new OpenLayers.Style(null, {
rules: [
new OpenLayers.Rule({
symbolizer: {
"Point": {
pointRadius: 5,
graphicName: "square",
fillColor: "white",
fillOpacity: 0.25,
strokeWidth: 1,
strokeOpacity: 1,
strokeColor: "#333333"
},
"Line": {
strokeWidth: 3,
strokeOpacity: 1,
strokeColor: "#00ccff"
}
}
})
]
})
});


var saveStrategy = new OpenLayers.Strategy.Save();
wfs = new OpenLayers.Layer.Vector("Editable Features", {
strategies: [new OpenLayers.Strategy.BBOX(), saveStrategy],
projection: new OpenLayers.Projection("EPSG:4326"),
styleMap: styles,
protocol: new OpenLayers.Protocol.WFS({
version: "1.1.0",
srsName: "EPSG:4326",
url: "http://localhost:8080/geoserver/wfs", // 自分の GeoServer
featureNS : "http://geoserver.sf.net", // drawinglineLine がある Workspace の名前空間
featureType: "drawinglineLine", // 修正
geometryName: "the_geom",
schema: "http://localhost:8080/geoserver/wfs/DescribeFeatureType?version=1.1.0&typename=sde:drawinglineLine" // 修正
})
});

map.addLayers([wms, wfs]);


  // configure the snapping agent
var snap = new OpenLayers.Control.Snapping({layer: wfs});
map.addControl(snap);
snap.activate();

// configure split agent
var split = new OpenLayers.Control.Split({
layer: wfs,
source: wfs,
tolerance: 0.0001,
deferDelete: true,
eventListeners: {
aftersplit: function(event) {
var msg = "Split resulted in " + event.features.length + " features.";
flashFeatures(event.features);
}
}
});
map.addControl(split);
split.activate();


// add some editing tools to a panel
var panel = new OpenLayers.Control.Panel(
{displayClass: 'customEditingToolbar'}
);
var draw = new OpenLayers.Control.DrawFeature(
wfs, OpenLayers.Handler.Path,
{
title: "Draw Feature",
displayClass: "olControlDrawFeaturePoint",
handlerOptions: {multi: true}
}
);
modify = new OpenLayers.Control.ModifyFeature(
wfs, {displayClass: "olControlModifyFeature"}
);
var del = new DeleteFeature(wfs, {title: "Delete Feature"});

var save = new OpenLayers.Control.Button({
title: "Save Changes",
trigger: function() {
if(modify.feature) {
modify.selectControl.unselectAll();
}
saveStrategy.save();
},
displayClass: "olControlSaveFeatures"
});

panel.addControls([
new OpenLayers.Control.Navigation(),
save, del, modify, draw
]);

panel.defaultControl = panel.controls[0];
map.addControl(panel);
map.addControl(new OpenLayers.Control.LayerSwitcher()); // 追加
map.addControl(new OpenLayers.Control.MousePosition()); // 追加
map.addControl(new OpenLayers.Control.ScaleLine()); // 追加
map.zoomTo(14);
}


function flashFeatures(features, index) {
if(!index) {
index = 0;
}
var current = features[index];
if(current && current.layer === wfs) {
wfs.drawFeature(features[index], "select");
}
var prev = features[index-1];
if(prev && prev.layer === wfs) {
wfs.drawFeature(prev, "default");
}
++index;
if(index <= features.length) {
window.setTimeout(function() {flashFeatures(features, index)}, 100);
}
}

</script>
</head>
<body onload="init()">

<h1 id="title">Snap/Split and Persist via WFS</h1>
<div id="tags"></div>
<p id="shortdesc">
Shows snapping, splitting, and use of the WFS Transactions (WFS-T).
</p>
<div id="map" class="smallmap"></div>
<div id="docs">
<p>The WFS protocol allows for creation of new features and reading,
updating, or deleting of existing features.</p>
<p>Use the tools to create, modify, and delete (in order from left
to right) features. Use the save tool (picture of a disk) to
save your changes. Use the navigation tool (hand) to stop editing
and use the mouse for map navigation.</p>
</div>
</body>
</html>



OpenLayers 56a Snap/Split and Persist via WFS - Snap と Split を WFS で保存 1

Snap/Split and Persist via WFS(wfs-snap-split.html)を参考に WFS レイヤに Snap and Split の結果の保存を試してみます。

シェイプファイルと GeoServer の設定

データベース tokyo に描画用テーブル drawingline を作成します。
PostGIS では保存できなかったので、Shapefile で編集可能レイヤを作成します。
river2_tokyo テーブルをコピーし1つのデータだけのテーブルを作成します。

user@debian:~$ psql tokyo
Welcome to psql 8.3.9, 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=> create table drawingline as select * from river_tokyo2 where gid = '1';
SELECT
tokyo=> \dt
List of relations
Schema | Name | Type | Owner
--------+------------------+-------+-------
public | drawing | table | user
public | drawingline | table | user
public | drawingpoint | table | user
public | geometry_columns | table | user
public | gyoseikai | table | user
public | pf_tokyo | table | user
public | population | table | user
public | railroad2 | table | user
public | railroad3 | table | user
public | river_tokyo2 | table | user
public | river_tokyo3 | table | user
public | spatial_ref_sys | table | user
(12 rows)

tokyo=> select gid, ric, cpu, wsc, eps, dus, slb, cop, rin, sos, eos, odc, dfd, sor, eor from drawingline ;
gid | ric | cpu | wsc | eps | dus | slb | cop | rin | sos | eos | odc | dfd | sor | eor
-----+------------+-----+--------+-----+-----+-----+-----+--------+-----+-----+-----+-----+-----+-----
1 | 8303050000 | | 830305 | | | | 0 | 小川谷 | | | 3 | 1 | |
(1 row)

tokyo=> \q

drawingline レイヤを GeoServer に追加します。
「Layer Configration」
1 ログインした GeoServer ページの左側の欄の「Data」の「Layers」をクリックします。
2 「Add a new resource」をクリックします。
3 「New Layer chooser」の「Add a layer from」ドロップダウンから「sde:Tokyo」を選択します。
4 Tokyo store のリソース(レイヤ)のリストが表示されます。
「drawingline」の「Publish」をクリックします。
5 選択したレイヤのリソースと編集した情報の設定をします。

「Basic Resource Info」を入力します。
Name: drawingline (変更なし)
Title: Drawing Line (最初の文字を大文字に変更 任意)
Abstract: Tokyo Drawing Line(任意)

「Keywords」を入力します。
Current Keywords: (追加したキーワードが表示されます)
New Keyword: drawing, line, tokyo (1つずつ入力して「追加」ボタンをクリック)

「Metadata links」は変更しません。

「Coordinate Reference Systems」を入力します。
Native SRS: 空(変更なし)
Declared SRS: EPSG:4326 (「Find」ボタンをクリックして「4326」を検索して表示された「4326」をクリック)
SRS handling: Force declared (変更しない)

6 「Bounding Boxes」を入力します。
Native Bounding Box: (「Compute from data」をクリック -以下の値が入力されました)
Min X: 139.018
Min Y: 35.89
Max X: 139.018
Max Y: 35.89
Lat/Lon Bounding Box: (「Compute from native bounds」をクリック -以下の値が入力されました)
Min X: 139.018
Min Y: 35.89
Max X: 139.018
Max Y: 35.89

7 ページ上部の「Publishing」タブをクリックします。
8 「Default Title」の「Default Style」を「line」にします。
(他は変更しません。)
9 ページ下部の「Save」ボタンをクリックします。

「Layers」ページの一番最後に「drawingline」が追加されます。
drawing レイヤの Shapefile を作成します。

1 GeoServer ページの左側の欄の「Layer Preview」をクリックします。
2 sde:drawingline の All Formats のドロップダウンリストで 「Shapefile」を選択します。
3 「drawingline.zip を開く」ダイアログで「ファイルを保存する」を選択し「OK」ボタンをクリックします。
4 「ファイル名を入れてください」ダイアログでデスクトップに保存しました。

この Shapefile を GeoServer に設定します。
1 drawingpoint.zip を解凍します。
2 geoserver-2.0.1/data_dir/data/drawing を作成します。
3 解凍したファイルを全部 geoserver-2.0.1/data_dir/data/drawing に入れます。

user@debian:~/Desktop$ ls
drawingline.zip featureserver-1.12 sld_data tilecache.csv
eclipse quicktime4linux-2.0.0 streaming tilecache2.csv
user@debian:~/Desktop$ unzip drawingline.zip
Archive: drawingline.zip
inflating: drawinglineLine.shx
inflating: drawinglineLine.shp
inflating: drawinglineLine.dbf
inflating: drawinglineLine.prj
inflating: drawinglineLine.cst
user@debian:~/Desktop$ ls
drawingline.zip drawinglineLine.shp quicktime4linux-2.0.0 tilecache2.csv
drawinglineLine.cst drawinglineLine.shx sld_data
drawinglineLine.dbf eclipse streaming
drawinglineLine.prj featureserver-1.12 tilecache.csv
user@debian:~/Desktop$ mv drawingline* ../geoserver-2.0.1/data_dir/data/drawing/

4 GeoServer ページの左側の欄の Data -> layers をクリックします。
5 Layers 画面の Add a new resource をクリックします。
6 New layer chooser 画面の Add layer from で sde:Tokyo_Shapefile を選択します。7 drawinglineLine の「Publish」をクリックします。

8 sde:drawinglineLine 画面で次のように設定します。

Data タブの
「Basic Rsource Info」を入力します。
Name: drawinglineLine(変更なし)
Title: Drawingline Line
Abstract: Tokyo MLIT River2 Shapefile

「Keywords」を入力します。
New Keyword: tokyo, river

「Metadata links」は入力しません。

「Coordinate Reference Systems」を入力します。
Native SRS: EPSG;4326(変更なし)
Declared SRS: EPSG;4326(変更なし)
SRS handling: Force declared(変更なし)

「Bounding Boxes」を入力します。
Native Bounding Box: (「Compute from data」をクリック -以下の値が入力されました)
Native Bounding Box: ()
Min X: 139.018
Min Y: 35.89
Max X: 139.018
Max Y: 35.89
Lat/Lon Bounding Box: (手動で入力してください。)
Min X: 139.018
Min Y: 35.89
Max X: 139.018
Max Y: 35.89

ページ上部の「Publishing」タブをクリックします。
「Default Title」の「Default Style」が「line」になっていることを確認します。
(他は変更しません。)
ページ下部の「Save」ボタンをクリックします。
「Layer」ページの一番下に「drawingpointLine」が追加されます。