日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

GeoServer离线地图

發布時間:2023/12/20 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GeoServer离线地图 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.geoserver部分

需要安裝好 jdk 環境

1.1下載geoserver

選擇Stable穩定版下載,選擇Binary解壓版下載,下載成功之后將其上傳到Linux服務器。下載地址:http://geoserver.org/release/stable/

選擇Binary解壓版下載,下載成功之后將其上傳到Linux服務器上并解壓,然后編輯start.ini文件修改端口號。

1.2 安裝geoserver

解壓文件

unzip -n geoserver-2.20.1-bin.zip -d ./geoserver

編輯start.ini文件修改端口號:

然后進入到bin目錄,授予執行.sh的權限

chmod u+x *.sh

啟動運行

nohup ./startup.sh &

然后在瀏覽器中訪問服務器的7070端口加geoserver就能訪問了

例如:http://ip:7070/geoserver

賬號密碼:admin/geoserver

1.4上傳文件

地圖下載

工具:全能地圖下載器,請自行安裝
地圖類型設置為 高德地圖 街道圖

下載瓦片,瓦片級別大于13級時,要分批下載,一次下載一個級別的瓦片

下載完成,選擇是,拼接成tif格式的地圖

將tif文件上傳到服務器

geoserver/data_dir目錄下創建tif文件存放位置,文件名稱按地圖級別命名

mkdir sxmap

1.4配置geoserver

創建工作區

選擇菜單欄左側 數據 下的 工作區 這一項

給你的工作區起一個名字,命名空間填寫一個網址(這個網址不一定存在)用于標識你的工作區

配置數據存儲

選擇菜單欄左側 數據 下的 數據存儲 這一項
數據存儲是真正用于數據存儲的,你可以選擇用來存儲的數據類型


選擇 GeoTIFF 這一項


創建工作區時已將 sxmap 設置為默認工作區,這里不需要更換了,否則需要手動指定工作區
數據源名稱填寫為 3
連接參數選擇 3.tif 文件
之后點擊保存
系統生成的圖層名稱格式為 工作區:數據源名稱

發布圖層
上述操作點擊保存后跳轉到如下頁面,點擊發布按鈕

編輯圖層 數據 一欄下拉
坐標參考系統 一項 定義SRS 點擊查找,輸入 4326 后回車
地圖采用 EPSG:4326 格式,下圖中本機 SRS 是指我們下載的地圖資源是 EPSG:3857 格式的

設置圖片瓦片大小為512

編輯圖層頁面 上拉 從數據一欄更換為 Tile Caching 這一項

EPSG:4326 這一欄 Published zoom levels(限制縮放級別) 和 Cached zoom levels(設置緩存的縮放級別)設置為 3/3
EPSG:900913 這一欄刪除,不需要

完成上述操作,點擊保存,完成一層圖層發布
上述 配置數據存儲和發布圖層 操作是添加和發布了一個圖層,其它 tif 文件用同樣的方式添加進來,工作區不需要再次創建
注意以下幾處需要修改,其余操作按照文檔正常操作(以 4.tif 為例,其它同理)


按照上面的步驟所發布的是一個完整的TIF數據,但在實際瀏覽地圖的時候,是按照瓦片的方式只加載當前區域、當前層級的地圖數據。這個過程,就需要對完整的TIF進行切片,并緩存起來。為了增強用戶的瀏覽體驗,加快瀏覽的速度,可以通過切片功能預先生成這些切片數據,并將其緩存。

切片圖層

將 tif 文件切片為瓦片,切片生成的文件在 geoserver/data_dir/gwc 目錄下

根據地圖層級選擇切片范圍
如果在發布圖層 配置 Tile Caching 這一項操作正確的話,這里 Zoom start 和 Zoom stop是不需要重新配置的

  • Number of tasks to use:該選項表示可以用多少個任務來切圖,類似于多線程的模式,如果電腦性能允許的情況下,可以適當增加這個數量,這樣切片的速度會更快些;如果電腦性能不高的話,數值太大的話,反而可能會影響性能。
  • Type of operation:操作類型,包括:Reseed-regenerate all tiles(重新進行完整的切片操作)、Seed-generate missing tiles(只對缺失的部分進行切片)、Truncate-remove tiles(清空切片數據)。
  • Grid Set:選擇切片的Gridset,這個和圖層配置時候設置的Gridset有關。
  • Format:切片的數據格式。比如image/png
  • Zoom start:切片的開始層級。
  • Zoom stop:切片的結束層級,結合Zoom start的選項,就可以將這層級數據之間的所有層級數據進行切片。
  • Modifiable Parameters:修飾參數,比如給切片選擇樣式等內容。
  • Bounding box:切片的邊界范圍,是個可選項。

2.高德API使用

高德三方標準圖層示例
復制上方示例中的html到本地html中
高德API提供的示例代碼

<!doctype html> <!doctype html> <html> <head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width"><title>TileLayer.WMTS</title><style>html,body,#container {margin: 0;padding: 0;width: 100%;height: 100%;}</style> </head> <body> <div id="container"></div> <script src="//webapi.amap.com/maps?v=1.4.15&key=您申請的key值"></script> <script> // 把這里的代碼刪掉替換成高德官網的另一段代碼// 創建地圖實例var map = new AMap.Map('container', {zoom: 3,center:[-99.241291, 39.51401]}); // 創建 WMS 標準圖層var wms = new AMap.TileLayer.WMS({url: 'https://ahocevar.com/geoserver/wms', // wms服務的url地址blend: false, // 地圖級別切換時,不同級別的圖片是否進行混合tileSize: 512, // 加載WMS圖層服務時,圖片的分片大小params: {'LAYERS': 'topp:states',VERSION:'1.3.0'} // OGC標準的WMS地圖服務的GetMap接口的參數});map.add(wms); </script> </body> </html>

上方替換的代碼來源于高德API中提供的代碼,如下

把script 標簽中 src="//webapi.amap.com/maps?v=1.4.15&key=您申請的key值"中的js下載到本地
訪問 webapi.amap.com/maps?v=1.4.15得到js
保存到本地 maps.js
新建目錄 js maps.js文件放到該目錄下

修改html以下部分,代碼在下方

<!doctype html> <html> <head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width"><title>TileLayer.WMTS</title><style>html,body,#container {margin: 0;padding: 0;width: 100%;height: 100%;}</style> </head> <body> <div id="container"></div> <script src="../js/maps.js"></script> <script>// 創建地圖實例var map = new AMap.Map('container', {zoom: 8, // 地圖縮放級別 LAYERS: 'sxmap:8'匹配 如果縮放級別為7,下方修改為Layer: 'sxmap:7'center:[108.79687499999865, 34.90973623453678] // 地圖中心坐標}); // 創建 WMS 標準圖層var wms = new AMap.TileLayer.WMS({url: 'http://10.1.5.144:7070/geoserver/wms', // wms服務的url地址,即自己搭建的wms服務的url地址blend: false, // 地圖級別切換時,不同級別的圖片是否進行混合tileSize: 512, // 加載WMS圖層服務時,圖片的分片大小,我們之前在發布圖層操作中,將圖片瓦片大小設置為512,所以這里設置為512params: {LAYERS: 'sxmap:8', // 需要加載的圖層VERSION:'1.3.0',Format: 'image/png', // 返回的數據格式TileMatrixSet: 'EPSG:4326' // 設置為EPSG:4326} // OGC標準的WMS地圖服務的GetMap接口的參數});map.add(wms);</script> </body> </html>

打開html文件,效果如下,頁面被渲染了兩次,因為 maps.js 文件中訪問了高德的數據對頁面也進行了渲染

如下,高德服務的數據也對圖層進行了渲染

修改本地 maps.js 把文件中的 vdata.amap.com 這一段刪掉(js中共有兩處,本人不會js,通過這種方式不讓訪問高德的服務)

高德的渲染失敗了,只有我們搭建的地圖服務的渲染成功了

前端通過修改這兩處的值實現地圖縮放

總結

以上是生活随笔為你收集整理的GeoServer离线地图的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。