2011年4月23日土曜日

14 Open Street Map 4 - スタイリングの確認

14-5 OpenStreetMap スタイリングの確認

1 左側の欄の「Layer Preview」をクリックします。
2 「npn: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: npn:japan_highway
</ServiceException></ServiceExceptionReport>

osm_roads スタイルの Runway のデータを削除します。
4 左側の欄の Data -> Styles をクリックします。
5 osm_roads をクリックし、<!-- Runways from openstreetmap --> から
<-- end of zoom level b --> までを削除します。
(「japan_highway」の「Default Style」が「osm_roads」であることを確認します。)
6 左側の欄の「Layer Preview」をクリックします。
7 「npn:japan_highway」の「OpenLayers」リンクをクリックします。
「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 highway and the layer is: npn:japan_highway
</ServiceException></ServiceExceptionReport>

osm_roads.sld ファイルのすべての
<NamedLayer> の <Name> を npn:japan_highway にします。<-1
<Rule> の <Name> を npn:japan_highway にします。これは表示に影響はない(?)と思います。<-2
<ogc:Filter> の <ogc:PropertyName> を type にします。<-3

---
<NamedLayer>
<Name>npn: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>npn: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> <-3
<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@deb6-vmw:~/ダウンロード/japan_shapefiles$ psql osm
psql (8.4.7)
"help" でヘルプを表示します.

osm=> \dt

リレーションの一覧
スキーマ | 名前 | 型 | 所有者
----------+------------------+----------+--------
public | geometry_columns | テーブル | user
public | japan_highway | テーブル | user
public | japan_natural | テーブル | user
public | japan_poi | テーブル | user
public | spatial_ref_sys | テーブル | user
(5 行)

osm=> SELECT distinct type from japan_highway;

type
--------------------------
unclassified

footway
motorway
proposed
residential;unclassified
raceway
motorway_link
steps
pedestrian
bridleway
primary_link
crossing
platform
services
motorway_junction
service
trunk_link
cycleway
byway
bus_guideway
runaway_truck_lane
living_street
plathome
path
residential
slope
road
rest_area
construction
residential;tertiary
minor
primary
secondary
track
sericve
escalator
tertiary
trunk
tertiary_link
unclassificed
secondary_link
bridge
(43 行)

(END):q


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

residential
unclassified
primary
secondary
tertiary
motorway
trunk

倍率によって、表示できる道路、線の太さ、色が変わるように設定されています。
「Layer Preview」をクリックして「npn: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 件のコメント: