下面,我來介紹一下如何在離線的情況下,在Geoserver 中配置出如同谷歌地圖般絢麗的效果。
為了讓大家有動力看我我接下來寫的東西,我先把結果圖給大伙兒展現一下:
正如上圖所示,該地圖是谷歌第四級的地圖展現。
左上角的工具可以多地圖進一步放大,地圖的縮放層級可以從第4級到第10級,共7層。
左下角是一個比例尺,這個不做過多介紹。
右下角是顯示鼠標點擊地圖上位置的經緯度的展現。
地圖上面還有自定義的幾個文本框,可以對地圖進行二次開發,做自己感興趣的東西。
想配置出上面的地圖,前期的工作還是比較多的。
(注:如果你的應用可以聯網操作,則可以省下很多事情,你可以查查如何使用谷歌地圖的API,就能比較輕松且高效地完成上面那種地圖展示。
下面我所介紹的是如何配置離線谷歌地圖,可以應用於相對封閉和保密性的場景。)
一、谷歌地圖下載器
如果想配置離線的谷歌地圖,很自然地會想到要先去下載完整的谷歌地圖。
而谷歌也提供了名為:Google Map DownLoader ,我們可以利用它來下載地圖。
但是由於各種原因,利用谷歌的軟件下載地圖是一件非常令人沮喪的事情, 我推薦大家使用:
《稻歌Google Map截獲器》,如圖所示:
需要填上截獲的地圖區域和地圖級別之后,才可以點擊確定按鈕下載地圖。
此處左上角坐標我填寫的是:54,73 (英文的",")
右下角坐標填寫的是: 2,136
(注:大家也可以自己通過點擊屏幕獲取坐標。但是我不建議大家這么做,因為由於網絡等原因,每次地圖下載可能都會有缺陷 ,
如果某一層級的地圖不理想,大家可以手動輸入相同的地圖坐標,再次對單個層級地圖進行下載,有利於后期多個地圖的合並使用)
再選擇地圖的層級,從第4級到第10級,這個大家隨意,這里給大家一個數據:
當我下載第10級地圖的時候,該軟件成功下載並且合並成TIFF文件的時候,該地圖已然7.6GB的大小了,想必地圖等級過高,
下載的時間會更長,地圖合並也不是那么順利。如果大家想讓地圖合並成自己想要的大小,或者網速不行想保證下載質量的話,
要在該軟件的“軟件設置”中進行詳細設置,各項參數在此不作贅述:
當你們下載完所有的地圖之后,就可以看下面的步驟了。
說實話,成功下載完所有地圖是個耗時的工作,但這只是一個開始。
二、Geoserver 中制作柵格地圖
當你下載完地圖后,可以打開Geoserver了。
如果你沒有配置好Geoserver,那么你還得花幾個小時查找和配置Geoserver,在此處不做詳細介紹,但可以給大家來點建議:
登陸Geoserver的官方網站,基本是有兩種方式搭配起Geoserver。
(1)一種是下載.war的Geoserver工程,然后丟到服務器的webapp目錄下,(開源的一般是Tomcat和Jetty),然后會生成Geoserver工程。
做過J2EE開發的應該都知道,工程部署成功后,就可以利用: localhost:8080/geoserver/web 來訪問Geoserver了。
(2)windows環境開發的話,官網上還可以下載.exe的安裝包,其實也沒有什么特殊的,里邊就是集成了開源的服務器而已。
如果圖方便,大家可以下載這種安裝包,省事!我下載的是Geoserver 2.4.8 版本,內置的是jetty 6.0的服務器。
你成功登上Geoserver后:
提醒一下,初始賬號:admin 密碼:geoserver
然后添加數據存儲:
點擊添加柵格數據源:
根據步驟一步步填寫內容。
工作區:是為了方便管理自己的地圖,建議大家可以自己新建一個工作區
數據源名稱:唯一標示該數據源的東西
連接參數URL:選取下載好的TIF地圖
保存后,選擇發布地圖。
在“數據”標簽頁中,着重配置一下幾個參數:
其中,SRS是要自己定義的,谷歌地圖是ESPG:900913標准,單位是:米。
由於地球的不規則橢球形,導致各個地方將橢球形表面的地形轉化成平面地圖繪制 的時候各家的標准都不一樣。
中國早年采用的是Beijing-1954大地坐標系,貌似采用的是蘇聯“克拉索夫斯基”測繪標准,而后采用1980-Xian大地坐標系。但是由於早年測繪的數據遷移轉化
的工作量大等一系列原因,某些地圖仍舊采用的是1954-Beijing的大地坐標。普及一下,谷歌地圖用的是ESPG:900913,而默認的國際標准是ESPG:4326。
因為源地圖下載的是谷歌的,所以配置ESPG:900913,但是地圖顯示的時候,要轉化成ESPG:4326經緯度顯示,可讀性比較好,好在openlayers
已經封裝了轉化函數。此是后話。
繼續配置,在title caching 標簽頁中:
看到我們要配置的gridset選擇的是ESPG:900913,且發布的zoom level 從第四級到第10級,cached zoom level 同理。
至此,第四級的圖層已經添加上了。為了能夠得到谷歌瓦片地圖,我們還得做下一步的配置,這里有幾個問題要說明。
其實,我們在添加數據源的時候只是添加了第四級的TIF地圖文件,但是為什么加了共7級的地圖呢?
因為,接下來,我們要重復把第5,6,7,8,9,10級的地圖依次加入數據源。重復地配置7次,然后,把這所有的數據圖層都切割成瓦片,
最后放在第四級的地圖中,這樣,我們只要查看第四級的圖片,就能夠查看到從4~10級的所有圖片。
下面,將第四級的圖層切割成瓦片:
繼續:
這個地方的zoom start 和 zoom stop 只要寫第四級就行了,因為數據源只有第四級。然后按submit 按鈕。
最后,可以在D:\Program Files\Coding Software\GeoServer 2.4.8\data_dir\gwc\ChinaMap_chinaTIFF04 中看到生成的瓦片地圖:
同理,將第5,6,7,8,9,10級的圖片一一添加柵格數據源,然后一一配置並且發布圖層。
最后,將第5,6,7,8,9,10級切割下的瓦片地圖拷貝到第四級地圖下:
加入之后,按圖示操作,即可看到漂亮的地圖了:
附上顯示的圖片:
上圖中,只顯示左上角的縮放工具,你如果查看網頁源碼的話應該能看到這是openlayers自己添加的。地圖也能成功從第四級到第十級縮放。