System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術涉及地圖瓦片數據存儲領域,特別涉及一種柵格影像瓦片數據的存儲方法和裝置。
技術介紹
1、地圖瓦片是包含了一系列比例尺、一定地圖范圍內的地圖切片文件。地圖瓦片按照金字塔結構組織,每張瓦片都可通過級別、行列號唯一標記。在平移、縮放地圖時,地圖可視化軟件根據金字塔規則,計算出所需的瓦片,從瓦片服務器獲取并拼接。主流瓦片規則有兩種,一種是tms瓦片地圖服務,也稱之為wmts(web?map?tile?service),具體的標準可以見ogc網站。tms是把投影后的世界地圖按照層級進行四叉樹(待驗證)切割,切割后的瓦片數量隨層級呈金字塔型。另一種是google?xyz瓦片格式,以下簡稱xyz瓦片,z表示縮放層級,xy的原點在左上角,x從左向右,y從上向下,且瓦片的坐標系為web墨卡托投影坐標系。兩者的區別是xyz瓦片z的直角坐標系原點在左上角(即北極點同中央子午線的交點),而tms的原點在左下角(南極點同中央子午線的交點)。所以編號索引中的x軸不變,y軸略有變化,兩者之間的唯一區別是y坐標翻轉,翻轉公式如下:
2、y=(2**z)-y-1
3、金字塔結構的瓦片數量以常用的webmecator為例計算
4、第0層:20tiles
5、第1層:21tiles
6、第2層:24tiles
7、第n層:22n?tiles
8、依次類推,比如計算第0層至第18層的瓦片總數目(等比數列求和)91625968981個,大約916億。存儲空間估算在近百t。
>9、地圖瓦片數據具有單個瓦片數據量小、瓦片數量巨大的特點,同時在調用時需要有高并發的響應請求。當數以億計的瓦片直接存儲在文件系統中時,文件系統對海量的文件存儲、傳輸、訪問變得極為低效并且緩慢。因此對大規模的海量瓦片數據進行高效的存儲管理顯得尤為重要。
10、目前比較常用的瓦片存儲方式有mbtiles和數據庫管理方式。
11、mbtiles利用sqlite數據庫來存儲,并提供一種規范,使得數以百萬的瓦片數據存儲在一個文件中,而且sqlite數據庫支持多種平臺,所以使用mbtiles在移動設備上瀏覽瓦片數據是比較理想的方式。sqlite數據庫本身并不是為并發訪問設計的,因此在高并發場景下,mbtiles的性能可能會受到影響。
12、數據庫管理方式將地圖瓦片存儲在關系(mysql、postgresql)或非關系數據庫中,雖然在查詢檢索和讀取響應效率有一定改善和提升,但瓦片數量特別巨大超過一般數據庫能力,數據庫額外創建索引占用存儲空間大,二進制圖片存儲效率低,高并發環境下瓦片調度延遲長等缺陷,無法滿足海量柵格瓦片存儲與讀取要求,且可擴展性差。
技術實現思路
1、為了解決現有問題,本專利技術提供了一種柵格影像瓦片數據的存儲方法和裝置,具體方案如下:
2、一種柵格影像瓦片數據的存儲方法,包括以下步驟:
3、s1,準備xyz瓦片格式柵格瓦片數據,瓦片按照一定的層級結構進行組織和存儲,其中xyz代表了瓦片的層級zoom、橫向坐標x和縱向坐標y,存儲結構中z表示層級文件夾,x表示子文件夾,y表示文件名稱;
4、s2,搭建seaweedfs分布式對象存儲服務器;
5、s3,逐級遍歷xyz瓦片數據的瓦片文件,按照存儲的目錄結構規則——層級和行列號,逐個上傳至已經搭建好的seaweedfs分布式對象存儲服務器;seaweedfs分布式對象存儲服務器,包含用于管理集群的weed?master即master主控服務器、用于底層存儲文件的weed?volume即volume服務器、以及向上提供更多特性的weed?filer即一個或多個filer服務器;
6、s4,filer服務器通過http提供目錄和文件,然后filer服務器拿到對應的文件目錄,去請求master服務器,master服務器將每個分片合成一個瓦片文件再返回給用戶,從而提供給可視化軟件瓦片數據拼接顯示成完整的地圖。
7、優選地,步驟s3將準備好的瓦片數據以seaweedfsfiler模式服務上傳至已經搭建好的seaweedfs分布式對象存儲服務器。
8、優選地,步驟s3具體為:通過循環遍歷xyz瓦片數據目錄所有的本地瓦片文件,獲取文件本地路徑和上傳路徑,使用filer的文件上傳命令格式進行上傳命令字符串拼接,最后執行上傳命令完成文件上傳,直至完成所有瓦片數據上傳,且上傳后的瓦片數據目錄結構與原始瓦片數據保持一致。
9、優選地,步驟s4具體為:可視化軟件可通過調用文件網絡路徑,直接請求瓦片數據,{x}、{y}、{z}作為“占位符”去替換實際請求的瓦片地址,按照地理坐標位置可以計算到相應瓦片的層級、行號、列號的方式去直接按路徑請求文件,然后filer服務器拿到對應的文件目錄,去請求master服務器,解析文件目錄拿到對應的所有分片的fid,每個分片有offset,master服務器將每個分片合成一個瓦片文件再返回給用戶,從而提供給可視化軟件瓦片數據拼接顯示成完整的地圖;其中,fid指步驟s3中的文件上傳過程重生成的上傳標志,offset指每個分片的數據塊在文件中的起始位置。
10、優選地,基于上述的方法的存儲裝置,包括:
11、讀取模塊,用于遍歷讀取瓦片數據的文件信息,根據瓦片信息獲取瓦片文件的本地路徑;
12、上傳命令生成模塊,用于按照獲取的本地瓦片路徑生成上傳filer服務器的路徑,并按照filer服務上傳命令的格式拼接完整的瓦片文件上傳命令;
13、上傳提交模塊,提交上傳命令,將本地瓦片按照xyz瓦片組織目錄結構上傳至seaweedfs分布式對象存儲服務器。
14、本專利技術還揭示了一種計算機可讀存儲介質,介質上存有計算機程序,計算機程序運行后,執行如上述的方法。
15、本專利技術還揭示了一種計算機系統,包括處理器、存儲介質,存儲介質上存有計算機程序,處理器從存儲介質上讀取并運行計算機程序以執行如上述的方法。
16、本專利技術的有益效果在于:
17、本專利技術支持高并發調度請求且容易進行數據遷移,具有快速的訪問速度和線性可擴展的特點,是一種易用性、效率和可靠性較高的地圖柵格瓦片存儲方案。
本文檔來自技高網...【技術保護點】
1.一種柵格影像瓦片數據的存儲方法,其特征在于,包括以下步驟:
2.根據權利要求1所述的方法,其特征在于:步驟S3將準備好的瓦片數據以SeaweedFSfiler模式服務上傳至已經搭建好的SeaweedFS分布式對象存儲服務器。
3.根據權利要求2所述的方法,其特征在于,步驟S3具體為:通過循環遍歷XYZ瓦片數據目錄所有的本地瓦片文件,獲取文件本地路徑和上傳路徑,使用Filer的文件上傳命令格式進行上傳命令字符串拼接,最后執行上傳命令完成文件上傳,直至完成所有瓦片數據上傳,且上傳后的瓦片數據目錄結構與原始瓦片數據保持一致。
4.根據權利要求2所述的方法,其特征在于,步驟S4具體為:可視化軟件可通過調用文件網絡路徑,直接請求瓦片數據,{x}、{y}、{z}作為“占位符”去替換實際請求的瓦片地址,按照地理坐標位置可以計算到相應瓦片的層級、行號、列號的方式去直接按路徑請求文件,然后filer服務器拿到對應的文件目錄,去請求master服務器,解析文件目錄拿到對應的所有分片的fid,每個分片有offset,master服務器將每個分片合成一個瓦片文件再
5.基于權利要求1-4任一所述的方法的存儲裝置,其特征在于,包括:
6.一種計算機可讀存儲介質,其特征在于:介質上存有計算機程序,計算機程序運行后,執行如權利要求1至4中任一項所述的方法。
7.一種計算機系統,其特征在于:包括處理器、存儲介質,存儲介質上存有計算機程序,處理器從存儲介質上讀取并運行計算機程序以執行如權利要求1至4中任一項所述的方法。
...【技術特征摘要】
1.一種柵格影像瓦片數據的存儲方法,其特征在于,包括以下步驟:
2.根據權利要求1所述的方法,其特征在于:步驟s3將準備好的瓦片數據以seaweedfsfiler模式服務上傳至已經搭建好的seaweedfs分布式對象存儲服務器。
3.根據權利要求2所述的方法,其特征在于,步驟s3具體為:通過循環遍歷xyz瓦片數據目錄所有的本地瓦片文件,獲取文件本地路徑和上傳路徑,使用filer的文件上傳命令格式進行上傳命令字符串拼接,最后執行上傳命令完成文件上傳,直至完成所有瓦片數據上傳,且上傳后的瓦片數據目錄結構與原始瓦片數據保持一致。
4.根據權利要求2所述的方法,其特征在于,步驟s4具體為:可視化軟件可通過調用文件網絡路徑,直接請求瓦片數據,{x}、{y}、{z}作為“占位符”去替換實際請求的瓦片地址,按照地理坐標位置可以計算到相應瓦片的層...
【專利技術屬性】
技術研發人員:張健,辛赟,劉繼東,閆芳,馬鈺淇,杭盼盼,胡添,
申請(專利權)人:中科星圖數字地球合肥有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。