GIS開發(fā):GeoJSON文件壓縮
GeoJSON是一種對各種地理數(shù)據(jù)結(jié)構(gòu)進(jìn)行編碼的格式,基于Javascript對象表示法的地理空間信息數(shù)據(jù)交換格式。GeoJSON對象可以表示幾何、特征或者特征集合。GeoJSON支持下面幾何類型:點(diǎn)、線、面、多點(diǎn)、多線、多面和幾何集合。GeoJSON里的特征包含一個幾何對象和其他屬性,特征集合表示一系列特征。
GeoJSON就是一種json文件的擴(kuò)展,地圖數(shù)據(jù)展示,傳輸?shù)骄W(wǎng)頁前端的時候,越來越多的使用GeoJSON數(shù)據(jù),各類地圖能夠直接使用GeoJSON文件進(jìn)行解析展示。對于點(diǎn)狀的數(shù)據(jù),坐標(biāo)量較少,傳輸?shù)臄?shù)據(jù)量還可以,但是對于線狀和面狀數(shù)據(jù),涉及到的坐標(biāo)信息比較多,一個線或者面的geometry,在多的情況下,能達(dá)到幾百、幾千個,這樣從服務(wù)器傳輸?shù)娇蛻舳说臄?shù)據(jù),就有幾兆或者幾十兆,下載時間加長,就會影響客戶端的體驗度。
數(shù)據(jù)抽吸(smooth)
在數(shù)據(jù)精度要求不高的情況,可以對空間矢量進(jìn)行抽吸,Arcmap、QGIS上都有對應(yīng)的功能,這個操作是減少空間矢量的點(diǎn)數(shù)據(jù),盡量保證空間上的輪廓,這個也能夠減少空間數(shù)據(jù)的數(shù)據(jù)量。
QGIS的數(shù)據(jù)抽吸功能:

服務(wù)端數(shù)據(jù)壓縮(gzip、deflate)
這個是在服務(wù)器端,在數(shù)據(jù)傳輸?shù)臅r候,提前對數(shù)據(jù)進(jìn)行壓縮,在返回到客戶端的數(shù)據(jù)上,添加對應(yīng)的數(shù)據(jù)壓縮頭,ex:Content-Encodin:gzip,一般的瀏覽器接收此數(shù)據(jù)頭,能夠進(jìn)行數(shù)據(jù)的解析。
nodejs數(shù)據(jù)壓縮簡單代碼
? ? ? zlib.gzip(_jsondata, (err, bufferdata)?=>?{
? ? ? if?(err)?throw?err;
? ? ? fs.writeFile('china.province.json.gz', bufferdata, (err1)?=>?{
? ?? ? if?(err1)?throw?err1;?
? ? ? ?});
? ? ? });
測試壓縮5M的GeoJSON數(shù)據(jù),壓縮完2M左右。
減少無用屬性信息
GeoJSON中能夠存儲對象的對應(yīng)屬性信息,在地圖不必要繪制的,可以刪除掉,這樣能夠減少數(shù)據(jù)量。