GeoServer รองรับการปรับแต่งสัญลักษณ์แผนที่(SLD)จากกราฟิกแบบ SVG

•MAPEDIA•
MAPEDIA BLOG
Published in
2 min readJul 19, 2019

สวัสดีครับ MAPEDIA ได้มีโอกาสในการเริ่มเขียน blog ใหม่โดยหันมาใช้ medium ซึ่งถือว่าใช้ง่ายและสะดวกมากเลยทีเดียว วันนี้ผมขอนำเสนอวิธีการปรับแต่งสัญลักษณ์แผนที่ใน GeoServer ด้วย Styled Layer Descriptor (SLD) โดยเรียกไฟล์สัญลักษณ์กราฟิกแบบในรูปแบบ SVG ซึ่งหลายๆ ท่านที่เคยใช้ GeoServer คงจะทราบกันดีอยู่แล้วว่าใน SLD Cookbook ในกลุ่มของสัญลักษณ์แบบจุดนั้นจะมีค่าเริ่มต้นของสัญลักษณ์ในส่วนของ มาให้บ้างแล้วแต่ก็ไม่มากเท่าไหร่ เช่น circle, star, square, cross, triangle หรือ x เป็นต้น โดยครั้งนี้ผมจะลองทดสอบการเรียกไฟล์ไอคอนจาก SVG แทน โดยมีอยู่ 2 รูปแบบ ดังนี้

1. การเขียน SLD ข้อมูลจุดในรูปแบบ ExternalGraphic โดยมี 2 ตัวอย่างคือ แบบ Pain หรือ No parameters และ แบบระบุ parameters

1.1 แบบ Pain หรือ No parameters

<PointSymbolizer>
<Graphic>
<ExternalGraphic>
<OnlineResource xlink:type=”simple” xlink:href=”fire_station.svg” />
<Format>image/svg+xml</Format>
</ExternalGraphic>
<Size>
<ogc:Literal>30</ogc:Literal>
</Size>
</Graphic>
</PointSymbolizer>

1.2 แบบระบุ parameters รูปแบบสัญลัษณ์ลงไป

<PointSymbolizer>
<Graphic>
<ExternalGraphic>
<OnlineResource xlink:type=”simple” xlink:href=”fire_station.svg?fill=#FF0000&amp;fill-opacity=0.5&amp;outline=#FFFF00&amp;outline-opacity=0.5&amp;outline-width=30″ />
<Format>image/svg+xml</Format>
</ExternalGraphic>
<Size>
<ogc:Literal>30</ogc:Literal>
</Size>
</Graphic>
</PointSymbolizer>

2. การเขียน SLD ข้อมูลจุดในรูปแบบ Mark โดยอาศัยการเรียกไฟล์ SVG ในแบบของWellknownName

<PointSymbolizer>
<Graphic>
<Mark>
<WellKnownName>file://fire_station.svg</WellKnownName>
<Fill>
<CssParameter name=”fill”>#ff0000</CssParameter>
</Fill>
<Stroke>
<CssParameter name=”stroke”>#f9b54f</CssParameter>
<CssParameter name=”stroke-width”>2</CssParameter>
</Stroke>
</Mark>
<Size>25</Size>
</Graphic>
</PointSymbolizer>

ชสามารถเข้าไปอ่านเพิ่มเติมได้ที่นี่ครับ https://docs.geoserver.org/stable/en/user/styling/sld/index.html

--

--