目錄
前言
一、關于圖層組
1、使用圖層圖組的好處
2、創(chuàng)建圖層組
二、在Leaflet中展示圖層組
1、新建Html模板框架
2、綁定地圖map和底圖設置
3、綁定圖層組
總結
前言
????????在之前的博文中,曾經(jīng)重點介紹如何使用LeafLet疊加Geoserver wms圖層到已有底圖的方法 ,這里采用的辦法是將單個wms圖層直接疊加到Leaflet中。如果場景中需要展示的圖層數(shù)量不多,我們可以使用這種方式,在Leaflet前端組件中綁定多個即可。如果需要展示的圖層較多,那么對于前端組件來說無疑是一種災難。
????????那如何解決這種需求呢?本文提供一種思路,就是基于Geoserver,在GeoServer中,將需要統(tǒng)一展示的圖層放在一個圖層組中,每個圖層由自己獨立的樣式來進行控制。通過圖層組的統(tǒng)一設置,合并兩個圖層,對于Leaflet前端來說,依然是加載一個圖層,從而減少前端的代碼量。本文將詳細介紹GeoServer中的圖層組,以及如何在GeoServer中管理圖層組,最后介紹如何使用Leaflet進行圖層組數(shù)據(jù)的加載。
一、關于圖層組
????????Geoserver圖層組可以將多個圖層組織在一起,方便地管理和展示這些圖層,從而提高地圖服務的效率和可用性。以下是Geoserver圖層組的優(yōu)缺點介紹:
1、使用圖層圖組的好處
-
管理方便:圖層組可以將多個圖層組織在一起,方便地管理和展示這些圖層。
-
便于使用:圖層組可以讓用戶輕松地選擇需要的圖層,提高地圖服務的可用性。
-
提高效率:圖層組可以減少地圖服務的請求次數(shù),提高地圖服務的效率。
-
界面友好:圖層組的展示界面通常比單個圖層更美觀、更易于使用。
2、創(chuàng)建圖層組
????????登錄GeoServer的Web端管理界面,在輸入登錄密碼后可以看到以下的管理界面:
?????????在左側的菜單中,點擊圖層組操作按鈕,進入圖層組的管理操作頁面。
?????????在這里可以完成對圖層組的新增、刪除、查看已有圖層圖的信息。在管理列表頁面可以看到圖層組的名字,所屬的工作區(qū),以及是否可用。其中工作區(qū)是用于區(qū)分不同的工作空間的,即相同名字的圖層組不能在一個工作區(qū)中。
????????點擊添加新圖層組,進入圖層的創(chuàng)建操作。
?注意,這里需要將要展示的圖層添加到圖層組中,同時設置合適的坐標參考系,還有圖層的展示樣式。關于圖層的SLD樣式,可以看之前的博客,有相關的介紹,在此不再贅述。
?????????注意,在這里由于圖層圖已經(jīng)設置了工作區(qū),因此只能將一個工作區(qū)的圖層合成一個圖層圖,不支持多工作區(qū)發(fā)布。
?????????設置完成后,即完成圖層組的編輯。在Geoserver中,采用默認的OpenLayers組件進行圖層圖組的預覽,效果如下:
二、在Leaflet中展示圖層組
1、新建Html模板框架
<!DOCTYPE html>
<html>
<head>
<title>geoserver 圖層group展示</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" type="image/x-icon" href="docs/images/favicon.ico" />
<link rel="stylesheet" href="/2d/leaflet/leaflet.css" />
<script src="/2d/leaflet/leaflet.js?v=1.0.0"></script>
</head>
<body>
<div id="mapid" style="width: 100%; height: 600px;"></div>
<script>
</body>
</html>
2、綁定地圖map和底圖設置
var mymap = L.map('mapid').setView([29.052934, 104.0625], 5);
L.tileLayer('http://localhost:8086/data/basemap_water/{z}/{x}/{y}.png', {
maxZoom: 16,
attribution: '夜郎king多圖層展示 GeoServer多圖層展示',
id: 'mapbox/streets-v11',
crs:L.CRS.EPSG3857,
tileSize: 512,
zoomOffset: -1
}).addTo(mymap);
????????在這里,先將地圖和底圖進行綁定。
3、綁定圖層組
????????圖層組的綁定和單wms的綁定方式差不多的,都是通過Leaflet的api進行圖層綁定。關鍵代碼代碼如下:
//加載wms服務的圖層
var dtLineLayer = L.tileLayer.wms('http://localhost:8083/geoserver/gisdev/wms', {
layers: 'gisdev:group_bqx',
format: 'image/png',
transparent: true
}
);
dtLineLayer.addTo(mymap);
????????經(jīng)過以上的步驟,基本完成圖層組的加載,我們通過nginx將靜態(tài)網(wǎng)頁發(fā)布后,在瀏覽器中輸入訪問地址后可以看到如下的界面。
?????????完整的網(wǎng)頁代碼如下所示:
<!DOCTYPE html>
<html>
<head>
<title>geoserver 圖層group展示</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" type="image/x-icon" href="docs/images/favicon.ico" />
<link rel="stylesheet" href="/2d/leaflet/leaflet.css" />
<script src="/2d/leaflet/leaflet.js?v=1.0.0"></script>
</head>
<body>
<div id="mapid" style="width: 100%; height: 600px;"></div>
<script>
var mymap = L.map('mapid').setView([29.052934, 104.0625], 5);
L.tileLayer('http://localhost:8086/data/basemap_water/{z}/{x}/{y}.png', {
maxZoom: 16,
attribution: '夜郎king多圖層展示 GeoServer多圖層展示',
id: 'mapbox/streets-v11',
crs:L.CRS.EPSG3857,
tileSize: 512,
zoomOffset: -1
}).addTo(mymap);
//加載wms服務的圖層
var dtLineLayer = L.tileLayer.wms('http://localhost:8083/geoserver/gisdev/wms', {
layers: 'gisdev:group_bqx',
format: 'image/png',
transparent: true
}
);
dtLineLayer.addTo(mymap);
</script>
</body>
</html>
????????溫馨提示,以上代碼比如投。影坐標系采用默認WGS84,如果您的底圖不是這個格式,請進行修改。
總結
????????以上就是本文的主要內容,本文將詳細介紹GeoServer中的圖層組,以及如何在GeoServer中管理圖層組,最后介紹如何使用Leaflet進行圖層組數(shù)據(jù)的加載。在最后,關于使用圖層組的一些場景,需要進行抉擇。因為圖層組有以下的一些缺點,如有遺漏,敬請補充:
缺點:
-
維護成本高:圖層組可能需要更多的維護和管理,包括圖層更新、權限設置、數(shù)據(jù)源管理。
-
可能存在性能問題:當圖層組中包含大量圖層時,可能會影響地圖服務的性能。
-
可能存在安全問題:不正確的權限設置可能導致圖層組中某些圖層被未經(jīng)授權用戶訪問。文章來源:http://www.zghlxwxcb.cn/news/detail-518165.html
-
可能存在兼容性問題:某些地圖客戶端可能不支持圖層組,無法正常使用相關地圖服務。文章來源地址http://www.zghlxwxcb.cn/news/detail-518165.html
到了這里,關于詳解LeafLet中如何展示GeoServer發(fā)布的圖層組的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!