一.Geoserver簡介
-
官網:http://geoserver.org/
-
簡介:GeoServer是 OpenGIS Web 服務器規(guī)范的 J2EE 實現(xiàn),利用 GeoServer 可以方便的發(fā)布地圖數據迫像,允許用戶對特征數據進行更新戒悠、刪除径筏、插入操作,通過 GeoServer 可以比較容易的在用戶之間迅速共享空間地理信息
- 其他入門教程
二.Geoserver安裝與訪問
- 1.環(huán)境準備:GeoServer是基于Java的軟件童本,運行的時候需要JDK的支持。在Oracle官網上下載JDK1.8【http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html】
- 2.安裝包說明【Stable】:Geoserver安裝包有兩種,一種是與平臺無關的二進制文件秒拔,自帶容器,下載完之后直接啟動jar包飒硅,就可以砂缩。另一種是GeoServer打包為獨立的servlet,可與現(xiàn)有的應用程序服務器【Apache Tomcat或Jetty】一起作用三娩。本文下載的是二進制文件庵芭,直接啟動jar包的形式
- 3.安裝包下載:
- 4.解壓啟動
- 5.訪問:
- 【1】默認端口是8080,可以在start.ini中改動
- 【2】訪問路徑:localhost:8080/geoserver/web/
- 【3】默認用戶名/密碼:admin/geoserver
三.Geoserver發(fā)布服務
- geoserver發(fā)布服務的時候雀监,如果需要在圖層上加載屬性信息双吆,需要加載.SLD樣式文件,這個文件可以通過ArcMap導出会前,也可以通過uDig桌面軟件導出好乐,推介使用uDig導出,下面表格中“加載.sld”博客中瓦宜,是使用ArcMap2SLD軟件和ArcGis軟件配合導出蔚万,到后將.sld文件加載到geoserver中,但是鄙人按照操作導出的線路.sld文件临庇,加載到geoserver中時無法看到屬性信息笛坦,如線路名,最后使用uDig軟件導出了一份線路.sld文件
四.uDig導出.sld文件
- uDig是一款開源桌面GIS軟件苔巨,基于Java和Eclipse平臺版扩,可以進行shp格式地圖文件的編輯和查看。uDig如果下載比較慢的話侄泽,可以復制下載鏈接到迅雷中下載礁芦,速度很快
五.Cesium調用Geoserver地圖服務與刪除圖層
5.1 Cesium調用geoserver
//聲明一個對象保存圖層,方便刪除
map.geoServerLayers = {};
//geoserver服務調用
_.prototype.addGeoserver = function(){
var tmpProvider = new Cesium.WebMapServiceImageryProvider({
url: "http://172.16.32.55:8080/geoserver/chinaProvince/wms",
layers: "chinaProvince:quanguo_shengji_hantaiwan",
parameters: {
service : 'WMS',
format: 'image/png',
transparent: true,
version: "1.1.1",
srs: "EPSG:4326"
}
});
map.geoServerLayers[layersName] = viewer.imageryLayers.addImageryProvider(tmpProvider);
}
#####5.2 cesium刪除圖層
_.prototype.removeGeoserverLayerByName = function(layerName){
if(!layerName){
console.log("圖層名為空,圖層刪除失敗");
return;
}
var isEmpty = $.isEmptyObject(map.geoServerLayers);
if(!isEmpty){
for(var layer in map.geoServerLayers){
if(layer == layerName){
viewer.imageryLayers.remove(map.geoServerLayers[layer]);
}
}
}
}
//清空geoserver提供的所有圖層
_.prototype.removeGeoserverAllLayer = function(){
var isEmpty = $.isEmptyObject(map.geoServerLayers);
if(!isEmpty){
for(var layer in map.geoServerLayers){
viewer.imageryLayers.remove(map.geoServerLayers[layer]);
}
}
}