#tile #mbtiles #postgis #maps #bounding-box #pmtiles

bin+lib bbox-tile-server

支持多种源和存储格式的矢量和栅格瓦片服务器

3 个版本

新版本 0.6.1 2024年8月23日
0.6.0 2024年8月9日
0.6.0-beta12024年8月8日

102地理空间

Download history 210/week @ 2024-08-05 22/week @ 2024-08-12

232 每月下载次数
bbox-server 中使用

MIT/Apache

365KB
8K SLoC

BBOX 瓦片服务器

地图瓦片服务和瓦片缓存初始化。

功能

  • 矢量瓦片服务器(来源:PostGIS)
  • 栅格瓦片服务器(后端:QGIS 服务器和 MapServer)
  • 瓦片代理服务器(后端:WMS)
  • OGC API - Tiles Core
  • 带有 TileJSON 元数据的 XYZ 矢量瓦片
  • OGC WMTS(通过地图服务后端)

瓦片初始化功能

  • 并行初始化栅格和矢量瓦片
  • 存储后端:S3 - 优化瓦片传输
  • 存储后端:本地文件

配置

请参阅文档中的示例。

使用

使用 bbox.toml 配置运行瓦片服务器

# Reduce log output for testing
export BBOX_MAPSERVER__NUM_FCGI_PROCESSES=1
cargo run serve

瓦片请求

curl -o /tmp/tile.png https://127.0.0.1:8080/xyz/ne_extracts/2/2/2.png

curl -o /tmp/tile.png https://127.0.0.1:8080/xyz/ne_umn/2/2/2.png

curl -o /tmp/tile.jpg https://127.0.0.1:8080/xyz/gebco/0/0/0.jpeg

curl -o /tmp/tile.mvt https://127.0.0.1:8080/xyz/mbtiles_mvt_fl/14/8621/5759.mvt

curl -o /tmp/tilegz.mvt -H 'Content-Encoding: gzip' https://127.0.0.1:8080/xyz/mbtiles_mvt_fl/14/8621/5759.mvt

curl -o /tmp/tile.png -H 'Accept: image/png; mode=8bit' https://127.0.0.1:8080/map/tiles/ne_extracts/2/2/2

无配置运行瓦片服务器

cargo run -- serve ../assets/liechtenstein.mbtiles

curl -o /tmp/tile.mvt https://127.0.0.1:8080/xyz/liechtenstein/14/8621/5759.mvt

OGC API 入口点

curl -s -H 'Accept: application/json' https://127.0.0.1:8080/ | jq .

curl -s https://127.0.0.1:8080/openapi.json | jq .

XYZ URL(Leaflet、QGIS 等)

https://127.0.0.1:8080/xyz/ne_extracts/{z}/{x}/{y}.png

Tilejson 请求

curl -s https://127.0.0.1:8080/xyz/mbtiles_mvt_fl.json | jq .

样式 JSON 请求

curl -s https://127.0.0.1:8080/xyz/mbtiles_mvt_fl.style.json | jq .

curl -s https://127.0.0.1:8080/xyz/ne_extracts.style.json | jq .

元数据请求

curl -s https://127.0.0.1:8080/xyz/mbtiles_mvt_fl/metadata.json | jq .

地图查看器示例

x-www-browser http://127.0.0.1:8080/assets/usergrid.html?debug=1

地图查看器模板示例

x-www-browser http://localhost:8080/html/maplibre/mbtiles_mvt_fl?style=/assets/mbtiles_mvt_fl-style.json

使用 PostGIS 服务

just start-db
just serve

curl -s http://localhost:8080/xyz/ne_countries.style.json | jq .

x-www-browser http://localhost:8080/assets/maplibre.html?style=/xyz/ne_countries.style.json

瓦片请求

curl -o /tmp/tile.mvt https://127.0.0.1:8080/xyz/ne_countries/2/2/2.mvt

带有过滤器参数

curl -o /tmp/tile.mvt 'https://127.0.0.1:8080/xyz/taxi_zones/0/0/0.mvt?color=3.0'

初始化

发布构建

cargo build --release

使用代理 WMS 初始化

../target/release/bbox-tile-server seed --tileset=gebco --tile-path=/tmp/tiles/gebco --maxzoom=2

使用嵌入式地图服务初始化

../target/release/bbox-tile-server seed --tileset=ne_extracts --tile-path=/tmp/tiles/ne_extracts --maxzoom=2

初始化 PostGIS MVT 瓦片

../target/release/bbox-tile-server seed --tileset=ne_countries --tile-path=/tmp/tiles/ne_countries --maxzoom=2

初始化到 S3 存储

有关本地 S3 测试设置的更多信息,请参阅 performance.md

设置 S3 环境变量

export S3_ENDPOINT_URL="https://127.0.0.1:9000"
export AWS_ACCESS_KEY_ID=miniostorage
export AWS_SECRET_ACCESS_KEY=miniostorage

初始化栅格瓦片

../target/release/bbox-tile-server seed --tileset=ne_extracts --s3-path=s3://tiles --maxzoom=5

使用 Maputnik 进行 MVT 样式化

打开示例

https://127.0.0.1:8080/assets/maputnik/index.html?style=https://127.0.0.1:8080/assets/maplibre-style.json
https://127.0.0.1:8080/assets/maputnik/index.html#11.0/47.0944/9.5076

https://127.0.0.1:8080/assets/maputnik/index.html?style=https://127.0.0.1:8080/xyz/mbtiles_mvt_fl.style.json

依赖项

~117MB
~2M SLoC