用 GeoServer 发布适用于 Mapbox 的矢量切片

Mapbox 的矢量切片的服务发布方式不仅限于使用 GeoServer,Mapbox 自己本身也在提供这样的数据切片服务,本文仅为使用 GeoServer 提供同样的数据切片服务的操作说明,适用于规避 Mapbox 数据存储收费,内网部署等场景。

不过 Mapbox 貌似不再对数据存储收费了?而且如果一个人或者一家公司能够在内网中部署地图服务,数据矢量切片应该也不在话下?所以本文的方案到底会在什么样的场景下有用?

步骤一:安装 GeoServer

参考文档:Installation

步骤二:打开 GeoServer 的跨域访问

参考文档:Enable CORS

步骤三:安装 Vector Tiles 扩展

参考教程:Installing the Vector Tiles Extension

步骤四:为发布的地图服务添加 mvt 格式的输出格式

参考教程:Vector tiles tutorial

步骤五:在 Mapbox 中加载

代码示例:

map.addSource('poi', {
    type: 'vector',
    scheme: 'tms',
    tiles: [
        'your server path'
    ]
});
map.addLayer({
    'id': 'layer',
    'type': 'circle',
    'source': 'poi',
    'source-layer': 'poi_source_layer',
    'paint': {
        'circle-radius': 10,
        'circle-color': 'Black',
    }
});

部分参数说明:

scheme:这里需要选择 tms,OSGeo 格式,参考文档:vector-scheme

坐标系:需要使用 EPSG:900913,而非 EPSG:4326。

your server path:

http://127.0.0.1:8080/geoserver/gwc/service/tms/1.0.0/

china_city%3APoi@EPSG%3A900913@pbf/{z}/{x}/{y}.pbf

链接示例(已失效)

这记录好像有点水,之所以要研究一下 GeoServer 与 Mapbox 的合作方式,是因为有人在 UpWork 上发单了指名要做这么件事。等以后想到有什么更加有价值的使用场景再补充进来。

发布者

Zhang

hope you enjoy my articles.

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注