点、线、面生成mvt(MapBox Vector Tile)格式的瓦片总结
矢量切片可以以三種形式呈現(xiàn):GeoJSON、TopoJSON 和 MapBox Vector Tile(.mvt),矢量切片技術(shù)繼承了矢量數(shù)據(jù)和切片地圖的雙重優(yōu)勢,有以下優(yōu)點:
- 瓦片以mvt格式的存儲,是以每一個瓦片號為基準進行存儲的。大小都是256*256;粒度更小,信息接近無損;前端可根據(jù)數(shù)據(jù)定制渲染樣式;數(shù)據(jù)更新快,更靈活;
- .mvt 壓縮率更高,體積更小;
一、瓦片生成邏輯
1. 點:
遍歷瓦片級別
每一級別:經(jīng)緯度轉(zhuǎn)像素坐標
像素坐標計算所在瓦片號
像素坐標轉(zhuǎn)瓦片內(nèi)像素坐標
根據(jù)瓦片內(nèi)像素坐標:進行聚合————同一個像素點聚合后記錄一個,并記錄疊加數(shù),后續(xù)可以做熱力圖;
2. 面:
面,因為需要面所在的每一個瓦片都存儲其幾何geometry,即使只相交了一個角。
生成相對特殊一些;
(1)計算面的外接矩形框
(2)遍歷瓦片級別,根據(jù)外接矩形框計算不同級別的瓦片號最大,最小范圍
(3)從小到大的遍歷瓦片范圍,判斷瓦片的矩形幾何與面是否相交,相交則生成瓦片并存儲,不相交則不生成瓦片;
(4)面的集合:經(jīng)緯度轉(zhuǎn)像素坐標,像素坐標計算所在瓦片號,像素坐標轉(zhuǎn)瓦片內(nèi)像素坐標;在每一個瓦片里均存儲面;
【優(yōu)化:對面的幾何點進行抽稀】
根據(jù)瓦片內(nèi)像素坐標:進行聚合——同一個像素點聚合后記錄一個,抽稀以減少數(shù)據(jù)量
由于面的起點、終點相同,少于4個點的無法構(gòu)成面,舍棄;大于等于4個點的生成瓦片;
3. 線:
線的類似面,只不過少于2個點的舍棄,大于等于倆個點的生成瓦片;
二、地理信息:用到的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)格式的瓦片总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 环境你我他下一句是什么呢?
- 下一篇: ES集群状态、节点、索引等查看及根据字段