gismatthew
路人甲
路人甲
  • 注册日期2016-11-18
  • 发帖数5
  • QQ965258591
  • 铜币7枚
  • 威望3点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
阅读:1003回复:0

GIS共享與交流 3 (柵格切片)

楼主#
更多 发布于:2016-11-24 05:46
「引言」

為什麼要談這個問題呢?WebGIS起初一便是做此事。因此我們也已經有了大量的工具,比如我們可以使用功能強大的ArcGIS Server,或者開源的Map Server, GeoServer等來對我們的圖層進行渲染之後做成柵格切片。但是,今天我想和大家分享一個新的開源方案:

 

TL;DR
基於NodeJS的柵格數據發布方案(tilelive



此貼所涉及的技術細節都源於我的一個項目(見「篇二:矢量切片」)。我的項目數據存放在File GDB中。我要做的就是把File GDB中的要柵格數據發佈為WebGIS切片。我想到了使用NodeJS去完成。慶幸的是,有別人也想到了這一點,因為我很快就Google到了tilelive。

但是經查發現tilelive無法讀取我的柵格數據。

原因很簡單。tilelive使用的是GDAL來讀取眾多GIS數據格式。但是見於ESRI軟件的權威性以及其據格式的流行,GDAL怎麼可能不支持呢?事實是這樣的:File GDB是ESRI研發出來的文件格式,它是一個其於文件系統的空間數據庫解決方案,支持矢量和柵格數據的存貯。由於ArcGIS在業內的廣泛使用,開源社區需要支持ESRI的種種數據格弍包括File GDB。但ESRI卻不對其的格式進行公開。後來有人採用行反工程學的方法破解出File GDB中矢量數據的存貯方案。導致ESRI隨後自行公布了File GDB的矢量數據存貯的「官方」文件。但是,對於柵格數據在File GDB中的貯存方案,至今ESRI沒有公佈,開源社區也沒有破解得出來。因此,對於我的項目,我不能直接使用NodeJS發佈存放在我的項目數據庫(File GDB)中的柵格數據。而且由於項目中另一個團隊使用ArcGIS來更新和使用這個數據庫我們不能改變數據庫格式。那下一步怎麼辦呢?以下是我的執行方案:

如何發佈存放在File GDB中的柵格數據:

1. 用自己寫的ArcPy腳本把待發佈的柵格數據層從File GDB中導出為GeoTiff。
2. 用自己寫的Python腳本寫GeoTiff的MML文件。並可對最後的渲染方案進行預覧。
3. 在NodeJS中,用livetile發佈MML文件。

「結語」
基於NodeJS柵格數據發佈方案的優點:
- 架構佈署快。只需執行一個命令即可:node init
- 異步資源調用。
- 按需去產生切片。並可以對已產生的切片進行緩存以提高服務交率。
- 基於Mapnik的渲染方案。
- 開源。無需資金成本。
喜欢0 评分0
興趣:Web,GIS,RS,開源,開發 個人QQ:965258591 QQ群:571477266
游客

返回顶部