【森城市】GIS資料漫談(二)

ThingJS發表於2022-07-06

在上篇“GIS資料漫談(一)”中簡單介紹了GIS資料中向量資料和柵格資料的概念,以及常見的GIS資料檔案型別。這篇漫談中我們繼續講講地圖服務。

空間資料庫

GIS的發展史是跟隨IT技術的發展史進展的,比如前面提到的各種向量資料、柵格資料的檔案都屬於空間資料。由於地理資料本身的大資料屬性,一個城市地理資訊系統的資料量可能達幾十GB,如果考慮影像資料的儲存,可能達幾百個GB。地理資訊系統的海量資料,帶來了系統運轉、資料組織與儲存、網路傳輸等一系列技術困難,自然也給資料管理增加了難度。

為了 更好的管理GIS資料便發展出了 空間資料庫,隨著技術的發展很多主流資料庫基本上都支援空間資料擴充套件,比如MySQL、Oracle、PostGIS等。

地圖服務

有了空間資料庫管理GIS資料,怎麼去對接這些資料呢?總不能一個個去導GeoJSON吧。OGC【開放地理空間資訊聯盟 (Open Geospatial Consortium-OGC)】為上面講過的資料來源設計了一些服務比如WMS、WMTS、WFS 等等。

在GIS的Web應用中,無論原始資料存在檔案裡也好,還是存在資料庫裡也好,都可以利用這些標準的地圖服務在網路中通過http(s)協議進行訪問共享。一般GIS大廠的Server產品或開源的GIS Server(比如 GeoServer)都支援釋出這些地圖服務。

WMS(Web Map Service)

該服務的最主要能力就是將GIS資料(無論原始資料是向量資料還是柵格資料)釋出成“圖片”。即根據客戶端請求引數(主要是bbox範圍),伺服器端返回相應的“圖片”。

WMS常用的三種操作:

• GetMap:根據請求引數,返回一個圖片

• GetFeatureinfo:根據請求引數裡的座標,返回查詢到的物件屬性資訊

• GetCapabilities:返回服務的後設資料

將“站點”、“鐵路”、“湖泊”資料釋出成WMS服務,則可以通過WMS服務根據bbox範圍請求相應資料渲染後的地圖圖片。絕大部分的地圖應用前端庫對WMS服務都有相應圖層支援。


【森城市】GIS資料漫談(二)


WMS 有時又被稱為“動態”地圖服務,伺服器會從客戶端發出請求的引數(比如圖層名稱、BBox範圍內)去資料庫或檔案中檢索查詢相應範圍的資料,然後再根據配置的樣式渲染成圖片,最終返回給客戶端。

如果客戶端請求頻發或併發請求高,地圖圖層包含的資料量又非常龐大、配置的樣式複雜時,服務端承擔的負載就會增大。因此,後來又發展出了地圖瓦片快取機制。簡單說就是按一定的規則把“渲染”後的地圖圖片存放在伺服器上,當客戶端再次呼叫時服務端就直接返回“快取”的圖片,不用再次“動態”渲染,所以就有了 地圖瓦片服務。

地圖瓦片服務

地圖瓦片指將一定範圍內的地圖按照一定的尺寸和格式,按縮放級別或者比例尺,切成若干行和列的正方形柵格圖片,對切片後的正方形柵格圖片被形象的稱為 瓦片(tile)。

瓦片地圖金字塔模型是一種多解析度層次模型,從瓦片金字塔的底層到頂層,解析度越來越低,但表示的地理範圍不變。


【森城市】GIS資料漫談(二)


Google 地圖採用的 Web Mecator 投影和瓦片分級切割方案,也成為目前網際網路地圖事實上的標準。

WMTS(Web Map Tile Service)

WMTS是一種OGC定義的地圖瓦片服務標準,WMTS 是 OGC 提出的快取技術標準,即在伺服器端快取被切割成一定大小瓦片的地圖,對客戶端只提供這些預先定義好的單個瓦片的服務,將更多的資料處理操作如圖層疊加等放在客戶端,從而緩解 GIS 伺服器端資料處理的壓力。

與之對應的還有Google Tile、 OSGeo 的 TMS(Tile Map Service)等等,雖然各個規範有所不同,但基本上都可以在uearth API中嘗試使用 TileLayer 載入這些地圖瓦片服務。

如何在低程式碼載入使用這些資料?可以將湖泊、鐵路等資料利用GeoServer分別釋出成為WMTS和TMS地圖服務,在低程式碼ThingJS線上開發利用 uearth API 的 TileLayer 進行載入。

動圖封面

無論是WMS服務還是地圖瓦片(切片)服務,最終呼叫的都是“圖片”而不是資料本身。雖然瀏覽器幾乎沒有渲染的壓力,但是樣式不夠靈活,只能在低程式碼ThingJS中調整整體圖片的效果,不方便效果調整(如果調整了服務端的地圖樣式配置又需要重新切片)。所以又有了WFS服務來直接的提供對向量資料的操作。

WFS(Web Feature Service)

WFS為客戶端提供了 操作向量資料的能力,除了返回查詢資料外,還提供了新增、修改、刪除資料的標準介面。意思是所看到的是要素是向量圖形,而不是一張圖片。

向量圖形和圖片要素的區別是不會隨著放大程度的改變而失真,向量要素方便互動和編輯、修改形狀等。

如何在低程式碼載入使用這些資料?

利用 GeoServer 將資料(如鐵路)釋出成WFS服務直接在前端進行查詢,返回結果後(一般為geojson格式),用 ThingJS/uearth 相關 API 進行繪製。

【森城市】GIS資料漫談(二)

工具推薦

森城市:一鍵生成3D城市,內建多種模板,自由編輯

• 森城市目前提供全國範圍內 110多個城市的標準三維場景的構建服務,使城市三維場景的構建速度提升至分鐘級。

• 森城市支援不同型別城市資料的插入和自動融合,並提供友好而強大的場景編輯能力和效能處理能力, 無需具備GIS、建模等專業技能,就可以輕鬆DIY自己的酷炫城市三維場景。

• 森城市具備開放的 城市場景輸出能力,無需擔心場景後續使用的相容問題。

低程式碼ThingJS:低程式碼靈活開發數字孿生視覺化應用

• 低程式碼ThingJS提供了 豐富的3D開發API、完善的開發文件和視訊教程,熟悉基礎的JavaScript前端知識即可上手數字孿生視覺化應用開發。

• 低程式碼ThingJS是H5的WebGL架構,可在 各類主流網頁瀏覽器中自如執行,包括可在移動端直接訪問執行。

• 低程式碼ThingJS提供全生命週期的開發元件,大大提升數字孿生視覺化專案開發效率。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69980539/viewspace-2904539/,如需轉載,請註明出處,否則將追究法律責任。

相關文章