2011年4月23日土曜日

14 Open Street Map 3 - スタイリングの設定

14-4 OpenStreetMap のスタイリングの設定

GeoServer and OpenStreetMap ページ
http://blog.geoserver.org/2009/01/30/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@deb6-vmw:~/ダウンロード$ 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 の直前に Property(type) によって値が違うので一つずつ修正してください -->
<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」ボタンをクリックします。

0 件のコメント: