点、线、面生成mvt(MapBox Vector Tile)格式的瓦片总结

矢量切片可以以三种形式呈现:GeoJSON、TopoJSON 和 MapBox Vector Tile(.mvt),矢量切片技术继承了矢量数据和切片地图的双重优势,有以下优点:

  • 瓦片以mvt格式的存储,是以每一个瓦片号为基准进行存储的。大小都是256*256;粒度更小,信息接近无损;前端可根据数据定制渲染样式;数据更新快,更灵活;
  • .mvt 压缩率更高,体积更小;

一、瓦片生成逻辑

1. 点:

遍历瓦片级别
每一级别:经纬度转像素坐标
像素坐标计算所在瓦片号
像素坐标转瓦片内像素坐标

根据瓦片内像素坐标:进行聚合————同一个像素点聚合后记录一个,并记录叠加数,后续可以做热力图;

2. 面:

面,因为需要面所在的每一个瓦片都存储其几何geometry,即使只相交了一个角。
生成相对特殊一些;

(1)计算面的外接矩形框
(2)遍历瓦片级别,根据外接矩形框计算不同级别的瓦片号最大,最小范围
(3)从小到大的遍历瓦片范围,判断瓦片的矩形几何与面是否相交,相交则生成瓦片并存储,不相交则不生成瓦片;
(4)面的集合:经纬度转像素坐标,像素坐标计算所在瓦片号,像素坐标转瓦片内像素坐标;在每一个瓦片里均存储面;

【优化:对面的几何点进行抽稀】

根据瓦片内像素坐标:进行聚合——同一个像素点聚合后记录一个,抽稀以减少数据量
由于面的起点、终点相同,少于4个点的无法构成面,舍弃;大于等于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>

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序媛一枚~

您的鼓励是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值