GeoServer使用CSS渲染地图
CSS Style是GeoServer的一個擴展插件,使用CSS寫起來的地圖渲染策略文件相比較SLD而言,非常的簡潔,本文根據GeoServer用戶手冊,稍微改寫,便于該知識點的推廣。
一 CSS Style安裝
1 從geoserver下載頁面下載 對應版本的geoserver-A.B.C-css-plugin.zip。A.B.C對應的是GeoServer的版本號。
2 解壓geoserver-A.B.C-css-plugin.zip,將解壓后的jar文件,復制到對應geoserver版本的WEB-INF/lib目錄中。
3 重啟GeoServer即可。
在新建Style頁面看到Format有CSS選項即代表可以正常使用了。
新建CSS Style.png
二 CSS應用基礎
CSS Style和SLD一樣是一個地圖渲染策略文件,新建樣式,綁定圖層等操作和sld是一模一樣的,只是寫起來更加簡潔。
SLD的策略文件舉例如下:
改寫CSS樣式如下:
[PERSONS < 2000000] {fill: #4DFF4D;fill-opacity: 0.7;stroke-width: 0.2;label: [STATE_ABBR];label-anchor: 0.5 0.5;font-family: "Times New Roman";font-fill: black;font-style: normal;font-size: 14; }[PERSONS >= 2000000] [PERSONS < 4000000] {fill: #FF4D4D;fill-opacity: 0.7;stroke-width: 0.2;label: [STATE_ABBR];label-anchor: 0.5 0.5;font-family: "Times New Roman";font-fill: black;font-style: normal;font-size: 14; }[PERSONS >= 4000000] {fill: #4D4DFF;fill-opacity: 0.7;stroke-width: 0.2;label: [STATE_ABBR];label-anchor: 0.5 0.5;font-family: "Times New Roman";font-fill: black;font-style: normal;font-size: 14; }一個rule對應css的一個{},注意{}后面沒有;,等符號。
注意觀察可知,每個規則,僅僅fill是不同的,其他的參數都是一樣的,可以考慮將公共的樣式部分,放到通用規則里,通用規則是 *{},改寫如下:
每一個完整的規則,都是規則+*(通用)規則組成完整的樣式策略。
對比sld可知,文件寫起來更簡單,可讀性更強。
三 CSS應用提高
3.1 使用Scale
sld中,常常比如說某個樣式,在scale大于某個比例尺下才顯示,在小于某個比例尺下不顯示。CSS Style中使用@scale來標志,例子如下:
[@scale >= 20000000]{label:''; } [@scale < 20000000] {label: [STATE_ABBR];label-anchor: 0.5 0.5;font-family: "Times New Roman";font-fill: black;font-style: normal;font-size: 14; }該例子說明,在scale >= 20000000不顯示地圖標注,在scale < 20000000顯示設置的標注。
3.2 使用圖例
圖例的描述性信息以/*@title */說明,如下:
/* @title Population < 2M */ [PERSONS < 2000000] {fill: #4DFF4D; } Legend.png描述的信息就會作用在Legend上。
3.3 規則嵌套
* {stroke: black;stroke-width: 0.2;fill-opacity: 0.7;/* @title Population < 2M */[PERSONS < 2000000] {fill: #4DFF4D;};/* @title 2M < Population < 4M */[PERSONS >= 2000000] [PERSONS < 4000000] {fill: #FF4D4D;};/* @title Population > 4M */[PERSONS >= 4000000] {fill: #4D4DFF;};/* Labelling */[@scale < 20000000] {label: [STATE_ABBR];label-anchor: 0.5 0.5;font-family: "Times New Roman";font-fill: black;font-style: normal;font-size: 14;} }長話短說,這里使用了 常規樣式+條件過濾樣式+scale比例尺 三個規則組合嵌套。
3.4 條件篩選
3.4.1 or與and
條件中常常使用多個條件組合應用。
and應用如下:
and時,條件之間是空格,無符號。
or應用如下:
or時,條件之間是逗號,也可以寫成如下:
[rainfall>12 or lakes>1] {fill: blue; }3.4.2 運算符號
=,<>,>,<,>=,<=,LIKE等操作。
3.4.3 根據圖層名稱Filter
這個用的不多,除非把若干個圖層的渲染策略寫到了一個文件。舉例說明如下:
line1 {stroke: black; } line2 {stroke: red; } line3 {stroke: blue; }line1,line2,line3是三個圖層的名字,這三個圖層都綁定了這個樣式文件。那么使用Filter圖層定義不同的圖層分別的渲染策略。
3.4.4 根據Feature的ID Filtering
#states.2 {stroke: black; }選擇states圖層中,id為2的要素。
3.4.5 根據symbols Filtering
當圖形組合內聯時,有時需要對一些符號做些可選設置。
官網說明.png
舉例如下:
* {stroke: #333333, symbol("shape://vertline");stroke-width: 3px;:nth-stroke(2) {size: 12;stroke: #333333;stroke-width: 1px;}} 鐵路.png該線是由 #333333, symbol("shape://vertline")兩個線樣式組合而來,其中,選擇symbol("shape://vertline")并進行設置,選擇symbol就是使用:nth-stroke這種格式來選擇symbol。
更多更豐富的使用詳細見官網,后續會有具體使用說明。
總結
以上是生活随笔為你收集整理的GeoServer使用CSS渲染地图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我就是互联网的老不死
- 下一篇: 纯CSS实现移动端常见布局——高度和宽度