点、线、面生成mvt(MapBox Vector Tile)格式的瓦片总结
矢量切片可以以三種形式呈現(xiàn):GeoJSON、TopoJSON 和 MapBox Vector Tile(.mvt),矢量切片技術(shù)繼承了矢量數(shù)據(jù)和切片地圖的雙重優(yōu)勢(shì),有以下優(yōu)點(diǎn):
- 瓦片以mvt格式的存儲(chǔ),是以每一個(gè)瓦片號(hào)為基準(zhǔn)進(jìn)行存儲(chǔ)的。大小都是256*256;粒度更小,信息接近無(wú)損;前端可根據(jù)數(shù)據(jù)定制渲染樣式;數(shù)據(jù)更新快,更靈活;
- .mvt 壓縮率更高,體積更小;
一、瓦片生成邏輯
1. 點(diǎn):
遍歷瓦片級(jí)別
每一級(jí)別:經(jīng)緯度轉(zhuǎn)像素坐標(biāo)
像素坐標(biāo)計(jì)算所在瓦片號(hào)
像素坐標(biāo)轉(zhuǎn)瓦片內(nèi)像素坐標(biāo)
根據(jù)瓦片內(nèi)像素坐標(biāo):進(jìn)行聚合————同一個(gè)像素點(diǎn)聚合后記錄一個(gè),并記錄疊加數(shù),后續(xù)可以做熱力圖;
2. 面:
面,因?yàn)樾枰嫠诘拿恳粋€(gè)瓦片都存儲(chǔ)其幾何geometry,即使只相交了一個(gè)角。
生成相對(duì)特殊一些;
(1)計(jì)算面的外接矩形框
(2)遍歷瓦片級(jí)別,根據(jù)外接矩形框計(jì)算不同級(jí)別的瓦片號(hào)最大,最小范圍
(3)從小到大的遍歷瓦片范圍,判斷瓦片的矩形幾何與面是否相交,相交則生成瓦片并存儲(chǔ),不相交則不生成瓦片;
(4)面的集合:經(jīng)緯度轉(zhuǎn)像素坐標(biāo),像素坐標(biāo)計(jì)算所在瓦片號(hào),像素坐標(biāo)轉(zhuǎn)瓦片內(nèi)像素坐標(biāo);在每一個(gè)瓦片里均存儲(chǔ)面;
【優(yōu)化:對(duì)面的幾何點(diǎn)進(jìn)行抽稀】
根據(jù)瓦片內(nèi)像素坐標(biāo):進(jìn)行聚合——同一個(gè)像素點(diǎn)聚合后記錄一個(gè),抽稀以減少數(shù)據(jù)量
由于面的起點(diǎn)、終點(diǎn)相同,少于4個(gè)點(diǎn)的無(wú)法構(gòu)成面,舍棄;大于等于4個(gè)點(diǎn)的生成瓦片;
3. 線:
線的類似面,只不過少于2個(gè)點(diǎn)的舍棄,大于等于倆個(gè)點(diǎn)的生成瓦片;
二、地理信息:用到的maven pom依賴:
<dependency><groupId>no.ecc.vectortile</groupId><artifactId>java-vector-tile</artifactId><version>1.2.1</version>
</dependency>
<dependency><groupId>com.vividsolutions</groupId><artifactId>jts</artifactId><version>1.13</version>
</dependency>
<dependency><groupId>org.geotools</groupId><artifactId>gt-geojson</artifactId><version>19.0</version>
</dependency>
<dependency><groupId>org.osgeo</groupId><artifactId>proj4j</artifactId><version>0.1.0</version>
</dependency>
總結(jié)
以上是生活随笔為你收集整理的点、线、面生成mvt(MapBox Vector Tile)格式的瓦片总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 环境你我他下一句是什么呢?
- 下一篇: ES集群状态、节点、索引等查看及根据字段