系列鏈接:
Java web與web gis學習筆記(一)——Tomcat環境搭建
Java web與web gis學習筆記(二)——百度地圖API調用
JavaWeb和WebGIS學習筆記(三)——GeoServer 發布shp數據地圖
前言:GeoServer 是 OpenGIS Web 服務器規范的 J2EE 實現,利用 GeoServer 可以方便的發布地圖數據,允許用戶對特征數據進行更新、刪除、插入操作,通過 GeoServer 可以比較容易的在用戶之間迅速共享空間地理信息。因此運行GeoServer服務的前提是配置好Java環境。本文將GeoServer部署在Tomcat服務器上。
關於Tomcat服務器的部署,可以參考Java web與web gis學習筆記(一)——Tomcat環境搭建
一、關於數據
地理數據一般可分為矢量數據和柵格數據,本文使用shp矢量數據作為數據源發布地圖。對於最常見的幾種地理數據源,GeoServer的支持情況如下:
| 數據源 | GeoServer支持情況 |
|---|---|
| shp | √ |
| GeoJSON | × |
| mid/mif | × |
| GeoTIFF | √ |
| PostGIS | √ |
| 其他數據庫 | 需要插件 |
二、GeoServer安裝
首先在GeoServer的官網下載GeoServer。為了部署到Tomcat服務器上,這里選擇下載war包。

將下載好的war包部署到Tomcat的webapps目錄下,並運行Tomcat,在本地即可通過URL:http://localhost:8080/geoserver訪問。
如果你更改了Tomcat的默認端口,則需要通過自己設置的端口訪問。
如果Tomcat部署在雲服務器上,通過公網可以使用URL:http://ip:port/geoserver訪問,其中ip為雲服務器公網ip,port為開放的端口。
GeoServer默認用戶名為:admin,密碼為:geoserver。在網頁右上角輸入用戶名和密碼即可登錄到GeoServer。

三、通過shp文件發布地圖
1. 新建工作區

在左側數據欄打開工作區,並選擇添加新的工作區,按照下圖設置即可。

2. 添加shp數據源
在左側數據欄打開數據存儲,並選擇添加新的數據存儲,出現如下界面:

這里主要先介紹兩個選項:
-
Directory of spatial files(shapefiles),將一個包含shp的文件夾連接到數據源
-
Shapefile,加載單個shp文件到數據源
對於單個shp數據而言,兩種方式創建數據源區別不是特別大。因為我有多個shp數據,所以這里選擇Directory of spatial files(shapefiles)。出現如下界面:

根據圖中提示設置相應的參數,注意被連接的shp文件(或文件夾)必須儲存在本地,也就是說如果你在雲服務器上進行上述操作,就需要將數據儲存到雲服務器上。點擊保存按鈕完成數據源的創建。
3. 發布地圖圖層
一般在完成數據源創建后會自動彈出新建圖層的窗口。如果你加載的也是多個shp文件的文件夾,那你將在此頁面看到多個待發布的圖層(每個圖層對應一個shp文件)。不過在這里只能先發布其中一個圖層。

點擊其中一個發布按鈕,可以看到圖層信息的編輯頁面,其中需要設置的參數主要是基本信息、坐標參考和邊框信息,見下圖:


為了解釋上圖中的參數,這里補充一些名詞解釋(。)
-
OGC:Open Geospatial Consortium (OGC)開放地理空間信息聯盟,它制定了數據和服務的一系列標准,GIS廠商按照這個標准進行開發可保證空間數據的互操作。相信這也是各位GIS開發者的“老朋友”了。
-
EPSG和OGP:European Petroleum Survey Group (EPSG)歐洲石油調查組,它成立於1986年,並在2005年重組為Internation Association of Oil & Gas Producers(OGP)國際石油和天然氣生產者協會。它負責維護並發布坐標參考系統的數據集參數,以及坐標轉換描述。
-
SRS:代表空間參考系(Spatial Reference System),也叫坐標參考系統CRS(coordinate reference system),是基於局部的、區域的或者全球的坐標系統,常被用來定位地理實體。
-
WKT:WKT(well-known text)是OGC的簡單要素規范(Simple Feature Specification,SFS)中定義的一種文本標記語言,用於表示矢量幾何對象、空間參照系統及空間參照系統之間的轉換。
WKT可以描述SRS,其中包括對參考橢球SPHEROID、基准面DATUM、坐標系(地心坐標系GEOCCS、地理坐標系GEOGCS、投影坐標系PROJCS)等描述。例如:WGS 84的OGC-WKT描述如下(注意這里的“WGS 1984”是指大地基准面,“WGS 84”既指參考橢球,又指地理坐標系(即WGS 84坐標系)。不過有時,”WGS 84“兼有三者的含義)
GEOGCS["WGS 84", DATUM["WGS_1984", SPHEROID["WGS 84",6378137,298.257223563, AUTHORITY["EPSG","7030"]], AUTHORITY["EPSG","6326"]], PRIMEM["Greenwich",0, AUTHORITY["EPSG","8901"]], UNIT["degree",0.01745329251994328, AUTHORITY["EPSG","9122"]], AUTHORITY["EPSG","4326"]] -
SRID:Spatial Reference System Identifier (SRID)空間參考系統標識符,是用來明確標識投影的、非投影的、獨立的空間坐標系定義的獨一無二的值。每一個SRS都可以用一個唯一的SRID整數來表示。OGP定義的EPSG code實質上是權威機構對SRID的一種實現,因此二者是一致的。
例如:WGS84 — SRID 4326,也表示為EPSG 4326
所以上圖中SRS設置為EPSG:4326就是將空間參考系設置為WGS84,通過查找按鈕可以查詢每種空間參考系對應的EPSG代碼。
若發布后的地圖不能正常預覽,可以嘗試更改這里的SRS,例如:在web map中同樣常見的 EPSG:3857 (Pseudo-Mercator),偽墨卡托投影,即我們經常提到的web墨卡托投影,諸如Google地圖,OpenStreetMap等web地圖都使用這一坐標系。
4. 發布剩余圖層
前面提到了,對於文件夾的數據源,新建圖層時只能發布其中一個shp數據,因此,我們還需要將文件夾中剩余的shp數據進行發布。在左側找到圖層,選擇添加新的資源。

在接下來的頁面中,選擇我們之前創建的數據源,即可看到之前尚未發布的圖層,在這里重復之前的操作,將這兩個圖層進行發布即可。

5. 預覽發布的圖層
在左側數據欄選擇Layer Preview 可以在右側看到已經發布的所有圖層,找到剛才發布的圖層,選擇OpenLayers即可預覽。

也可以在下拉菜單中選擇一種服務進行預覽,這里有WMS和WFS兩類服務可選。關於WMS、WFS以及WMTS、WCS、WPS等常見地圖服務的詳細區別見我另一篇博客:WMS、WFS、WCS、WPS、WMTS等常見地圖服務的區別。
這里直接用Openlayers預覽看效果。

不難看到,我們的WMS服務的URL就是:http://localhost:8080/geoserver/xjs/wms,在后面跟上一系列請求參數就訪問到我們發布的圖層了。
把瀏覽器上的URL復制下來,localhost改成公網ip就能通過公網訪問我們發布的地圖啦!
http://localhost:8080/geoserver/xjs/wms?service=WMS&version=1.1.0&request=GetMap&layers=xjs%3ABoundaryChn2_4l&bbox=73.44696044921875%2C3.408477306365967%2C135.08583068847656%2C53.557926177978516&width=768&height=624&srs=EPSG%3A4326&format=application/openlayer
關於地圖的配置、美化等操作將會在下一篇博客中進行說明。

