矢量切片可以以三种形式呈现:GeoJSON、TopoJSON 和 MapBox Vector Tile(.mvt),矢量切片技术继承了矢量数据和切片地图的双重优势,有以下优点:
遍历瓦片级别
每一级别:经纬度转像素坐标
像素坐标计算所在瓦片号
像素坐标转瓦片内像素坐标
根据瓦片内像素坐标:进行聚合————同一个像素点聚合后记录一个,并记录叠加数,后续可以做热力图;
面,因为需要面所在的每一个瓦片都存储其几何geometry,即使只相交了一个角。
生成相对特殊一些;
(1)计算面的外接矩形框
(2)遍历瓦片级别,根据外接矩形框计算不同级别的瓦片号最大,最小范围
(3)从小到大的遍历瓦片范围,判断瓦片的矩形几何与面是否相交,相交则生成瓦片并存储,不相交则不生成瓦片;
(4)面的集合:经纬度转像素坐标,像素坐标计算所在瓦片号,像素坐标转瓦片内像素坐标;在每一个瓦片里均存储面;
【优化:对面的几何点进行抽稀】
根据瓦片内像素坐标:进行聚合——同一个像素点聚合后记录一个,抽稀以减少数据量
由于面的起点、终点相同,少于4个点的无法构成面,舍弃;大于等于4个点的生成瓦片;
线的类似面,只不过少于2个点的舍弃,大于等于俩个点的生成瓦片;
<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>