การปรับแต่งคุณสมบัติของข้อมูลพื้นที่ (Polygon) ให้โปร่งแสงและสามารถ Identify ข้อมูลเชิงบรรยายได้ ด้วย SLD ใน GeoServer

ผมเชื่อว่าทุกคนน่าจะพบปัญหานี้ ซึ่งมีอยู่ว่าเราต้องการจะทำให้ชั้นข้อมูลในรูปแบบพื้นที่รูปปิด (Polygon) นั่นโปร่งแสง (transparent) ให้เหลือแค่เส้นขอบในโปรแกรม GeoServer ตัวอย่างเช่น ชั้นข้อมูลขอบเขตการปกครอง เป็นต้น แต่ทีนี้ปัญหาที่ตามก็คือเมื่อมันเหลือแค่เส้นขอบแผนที่ ทำให้เมื่อเราคลิก Identify ชั้นข้อมูลในแต่ละ feature นั้นจะไม่มีข้อมูลเชิงบรรยาย (attribute) ปรากฏออกมา (รูปที่ 1) ซึ่งการแก้ปัญหาเบื้องต้นก็จะเป็นการคลิกไปตรงที่เส้นขอบแผนที่ จึงจะปรากฎข้อมูลออกมา (รูปที่ 2) และเมื่อสังเกต code ของ SLD (Styled Layer Descriptor) ตามมาตรฐานของ OGC  (ชุดคำสั่งที่ 1)  ซึ่งเป็นโครงสร้างแบบ XML ก็จะเห็นว่าเราได้ปรับ fill-opacity เท่ากับ 0 ไว้ ซึ่งวิธีแก้ไขก็แค่ตัดในส่วนของแท็ก fill ทิ้งไป ก็จะทำให้เราคลิก Identify ได้ทุกทีแล้วครับ สามารถใช้ SLD (ชุดคำสั่งที่ 2)  ตัวนี้ไปประยุกต์ใช้ได้ ซึ่งจะได้ผลลัพธ์ดังรูปที่ 3

      <FeatureTypeStyle>
        <Rule>
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill">#000080</CssParameter>
              <CssParameter name="fill-opacity">0</CssParameter>
            </Fill>
            <Stroke>
              <CssParameter name="stroke">#000000</CssParameter>
              <CssParameter name="stroke-width">1</CssParameter>
            </Stroke>
          </PolygonSymbolizer>
          <TextSymbolizer>
            <Label>
              <ogc:PropertyName>STATE_ABBR</ogc:PropertyName>
            </Label>
            <Font>
              <CssParameter name="font-family">Times New Roman</CssParameter>
              <CssParameter name="font-style">Normal</CssParameter>
              <CssParameter name="font-size">14</CssParameter>
            </Font>
            <LabelPlacement>
              <PointPlacement>
                <AnchorPoint>
                  <AnchorPointX>0.5</AnchorPointX>
                  <AnchorPointY>0.5</AnchorPointY>
                </AnchorPoint>
              </PointPlacement>
            </LabelPlacement>
          </TextSymbolizer>
        </Rule>
      </FeatureTypeStyle>
gs1

รูปที่ 1

gs2

รูปที่ 2

      <FeatureTypeStyle>
        <Rule>
          <PolygonSymbolizer>
            <Stroke>
              <CssParameter name="stroke">#000000</CssParameter>
              <CssParameter name="stroke-width">1</CssParameter>
            </Stroke>
          </PolygonSymbolizer>
          <TextSymbolizer>
            <Label>
              <ogc:PropertyName>STATE_ABBR</ogc:PropertyName>
            </Label>
            <Font>
              <CssParameter name="font-family">Times New Roman</CssParameter>
              <CssParameter name="font-style">Normal</CssParameter>
              <CssParameter name="font-size">14</CssParameter>
            </Font>
            <LabelPlacement>
              <PointPlacement>
                <AnchorPoint>
                  <AnchorPointX>0.5</AnchorPointX>
                  <AnchorPointY>0.5</AnchorPointY>
                </AnchorPoint>
              </PointPlacement>
            </LabelPlacement>
          </TextSymbolizer>
        </Rule>
      </FeatureTypeStyle>
gs3

รูปที่ 3

References:
[1] http://docs.geoserver.org/stable/en/user/styling/sld/cookbook/index.html
[2]http://www.opengeospatial.org/standards/sld

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s