2010年6月9日水曜日

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/

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

0 件のコメント: