2013年11月19日火曜日

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

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

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

の「Making sense of the data」の「map key」リンクをクリックすると

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@debian7-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
Workspace: npn

と入力します。


6 New style ページの下の方の SLD file の「参照」ボタンをクリックします。


7 「ファイルのアップロード」で osm_roads.sld を選択し「開く」ボタンをクリックします。





8 「Upload...」リンクをクリックします。



9 「Validate」ボタンをクリックします。
次のようなエラーが表示されました。

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

h 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」ボタンをクリックします。




i 左側の欄の Data -> Layers をクリックします。






j 「osm」の「roads」をクリックします。
k ページ上部の「Publishing」タブをクリックします。
l 「WMS Setting」の「Default Style」を「osm_roads」にします。
(他は変更しません。)

m ページ下部の「Save」ボタンをクリックします。

0 件のコメント: