`

springboot 返回mapbox 的pbf 矢量瓦片

阅读更多
<dependency>
            <groupId>no.ecc.vectortile</groupId>
            <artifactId>java-vector-tile</artifactId>
            <version>1.2.1</version>
        </dependency>


<dependency>
            <groupId>org.mapfish.geo</groupId>
            <artifactId>mapfish-geo-lib</artifactId>
            <version>1.2.0</version>
        </dependency>



创建基本的spring boot应用。
引入依赖包。
import no.ecc.vectortile.VectorTileEncoder;
import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.Point;

主要方法:
public byte[] getTollJsonByTile(int x, int y, int z,
                                       int gap) throws Exception {

      //x,y,z 是瓦片号和等级,gap是扩圈的值

        if(5>z||z>17){
            return null;
        }

        //这里我用瓦片转成wkt,去库中框信息,利用空间索引
      
        String wkt = MercatorProjection.getWktWithGap(x, y, z, gap);


        VectorTileEncoder vector = new VectorTileEncoder(4096, 16, false);
        
        //这里是mybatis的映射方法,得到数据
        List<RT_GATE> listToll = tollMapping.getTollGeomtry(wkt);

        for(RT_GATE rt:listToll){

            Map<String,Object> attrs = new HashMap<>();

            attrs.put("pid",rt.getPid());
            attrs.put("in_link_pid",rt.getIn_link_pid());
            attrs.put("out_link_pid",rt.getOut_link_pid());
            attrs.put("node_pid",rt.getNode_pid());
            attrs.put("type",rt.getType());
            attrs.put("system_id",rt.getSystem_id());
            Coordinate coordinate = new Coordinate(rt.getjGeometry().getPoint()[0],rt.getjGeometry().getPoint()[1]);
            Point point = geometryFactory.createPoint(coordinate);
            //转像素坐标,MercatorProjection是一个自定义的工具类
            MercatorProjection.convert2Piexl(x,y,z,point);
           
            vector.addFeature("toll",attrs,point);

        }

        return vector.encode();
    }


Controller:
@Controller
public class WelcomeController {

    @Autowired
    Ora2Protobuf ora2Protobuf;

//    @GET
//    @Path("/base/tollcost/{z}/{x}/{y}")
//    //@Produces("application/protobuf")
//    public Response getTollgeom(@PathParam("z") int z, @PathParam("x") int x, @PathParam("y") int y, HttpServletResponse response) throws Exception {
//
////        return ora2Protobuf.getTollJsonByTile(x,y,z,0);
//        return HttpResUtil.buildResponse(ora2Protobuf.getTollJsonByTile(x,y,z,0));
//    }

    @RequestMapping(value = "/base/tollcost/{z}/{x}/{y}")
    public ResponseEntity getTollgeom(@PathVariable("z") int z, @PathVariable("x") int x, @PathVariable("y") int y) throws Exception {

           return ResponseEntity.ok(ora2Protobuf.getTollJsonByTile(x,y,z,0));

//        return ora2Protobuf.getTollJsonByTile(x,y,z,0);
        //return HttpResUtil.buildResponse(ora2Protobuf.getTollJsonByTile(x,y,z,0));
    }


请求:localhost:8080/base/tollcost/11/1685/777

返回二进制,前端可以用mapbox 的js包,获取toll图层进行适量瓦片的渲染了。
分享到:
评论

相关推荐

    cesium加载mvt 矢量瓦片

    MVT(Mapbox Vector Tile)是矢量瓦片的一种标准格式,由Mapbox公司提出,广泛应用于Web地图服务。Cesium,一个强大的开源JavaScript库,专门用于创建3D地球和地图应用,也支持加载和显示MVT格式的矢量瓦片。以下是...

    postgis矢量瓦片.zip

    5. **矢量瓦片服务**:如Mapbox Vector Tile或GeoJSON格式,用于将PostGIS中的矢量数据转化为适合Web服务的瓦片格式。 6. **TMS(Tile Map Service)和WMTS(Web Map Tile Service)**:这两种服务标准定义了如何...

    cesium之矢量瓦片展示.zip

    Cesium也支持使用Mapbox Style语言来描述矢量瓦片的样式。 总的来说,Cesium之矢量瓦片展示涉及了数据处理、服务器端服务、客户端加载与渲染等多个环节。通过理解和掌握这些知识点,开发者可以创建出具有高度交互性...

    基于postgis实现Mapbox标准的矢量瓦片切图,支持加载到4490 Mapbox(Maplibre)4490坐标系下 文章

    基于postgis实现Mapbox标准的矢量瓦片切图,支持加载到4490 Mapbox(Maplibre)4490坐标系下。博文可参考:https://blog.csdn.net/xuyizhuo/article/details/142501751

    Mapbox加载天地图CGCS2000瓦片地图服务

    Mapbox GL JS是一个强大的JavaScript库,它允许开发者创建交互式的、矢量渲染的地图。天地图是中国官方的地理信息服务,提供多种投影方式,其中CGCS2000是中国大地2000坐标系,适用于国内的地理信息展示。 首先,...

    vtzero-master_地图_地图矢量瓦片切图_vtzero_

    【vtzero】是一个开源库,专门用于生成Mapbox标准的矢量瓦片。这个库的核心功能是解析和编码地理空间数据,将其转换为符合Mapbox Vector Tile (MVT)协议的格式。MVT是一种轻量级的数据交换格式,特别适合在Web和移动...

    mapbox底图下载器

    Mapbox底图下载器是一个工具,专为用户下载Mapbox平台上的矢量切片和样式文件而设计。Mapbox是一个流行的在线地图服务,提供自定义地图样式和丰富的地理数据功能。通过这个下载器,用户可以离线使用Mapbox地图,这...

    Mapbox4490版,可以加载CGCS2000坐标系数据源

    在Mapbox4490版中,开发者现在可以直接将CGCS2000坐标系的矢量数据或者栅格数据集导入到他们的应用中,展示中国的地理信息更为准确。 使用Mapbox4490版,需要注意的是,由于CGCS2000是一个地心坐标系统,而Mapbox...

    leaflet-webpack矢量瓦片.zip

    3. **矢量瓦片服务**:项目可能使用了如Mapbox Vector Tiles或GeoJSON等矢量瓦片格式,通过一个瓦片服务(如TileLayer)来加载和显示。开发者可能还自定义了渲染规则,以实现特定的地图样式。 4. **示例地图HTML和...

    MapBox 加载百度切片(自定义图层)

    在地图应用开发中,Mapbox 是一款强大的工具,它提供了丰富的地图定制能力。然而,有时候我们可能需要将其他地图服务,比如百度地图的切片,集成到 Mapbox 中。本篇将详细介绍如何在 Mapbox 中通过自定义图层的方式...

    Mapbox 加载百度切片

    Mapbox是一个流行的开源地图平台,它允许开发者自定义地图样式、添加交互功能并进行地理数据分析。而百度地图是中国市场上主流的地图服务提供商之一,拥有丰富的地理信息数据。在某些场景下,可能需要将百度地图的...

    vector-tile-glib:使用 MapCSS 渲染 Mapbox 矢量瓦片

    ##vector-tile-glib Vector-tile-glib 是一个 C 库,可用于使用...平铺到 png 这需要一个 mapbox 文件并使用 sample.mss 文件将其转换为 PNG 图像: $ ./tile-to-png -hUsage: lt-tile-to-png [OPTION...] - test re

    cesium加载mapbox解析mvt

    Mapbox则是一个提供地图服务、矢量瓦片和地图设计工具的平台,它支持MVT(Map Vector Tiles)格式,这是一种高效的数据存储和传输方式,用于展示地理空间数据。本文将深入探讨如何使用Cesium加载Mapbox的MVT数据,...

    Mapbox Cookbook.pdf

    2. 该平台支持矢量瓦片技术,矢量瓦片与传统的栅格瓦片相比,在缩放时能够保持清晰,不会出现像素化的情况,使得地图看起来更加流畅和细致。 3. 通过Mapbox Cookbook这本书,读者可以学习到如何操作和使用Mapbox的...

    Mapbox 自定义图层 加载百度切片

    在Mapbox中使用自定义图层方式来加载百度切片,注意Mapbox的版本,因为老版本的Mapbox不能使用自定义图层。用到了coordtransform.js进行百度坐标、国标坐标、wgs84坐标的转换。 自己实现有什么问题就可以进行交流

    从 Mapbox 瓦片 生成地图图像的工具_HTML_代码_下载

    从 Mapbox 瓦片生成打印地图的工具 简单的印刷定位地图是非常有效的讲故事工具,但制作它们可能需要很长时间。为什么?好吧,首先,您必须找到一个获得许可使用的参考资料,将其数字化并重新绘制信息,这对于 2 ...

    Android高德加载谷歌卫星瓦片,并缓存本地

    - 将返回的Bitmap对象添加到TileOverlay,显示在地图上。 3. **缓存谷歌卫星瓦片**: - 为了提高用户体验,我们需要将加载过的瓦片缓存到本地,避免重复请求。可以创建一个文件夹用于存储瓦片图片,根据瓦片的...

    geoserver-2.15.0-vectortiles-plugin

    在GeoServer处理矢量瓦片时,可能需要将数据转换为JSON进行处理或返回给客户端。 3. **java-vector-tile-1.3.4.jar**:这是Java对OpenMapTiles的Vector Tile规范的实现。OpenMapTiles是一种流行的矢量瓦片格式,...

    mapbox style样式文件,从mapbox studio下载的矢量地图样式配置

    mapbox style样式文件,从mapbox studio下载的矢量地图样式配置

Global site tag (gtag.js) - Google Analytics