矢量地图数据切片
使用 tippecanoe 进行矢量地图切片, 切片格式由 geojson 转为 pbf
安装
- 需求 linux 环境
- 需要 sqlite3, zlib 两个库文件
- 安装库文件支持
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| --------------------------------
sudo apt-get install build-essential libsqlite3-dev zlib1g-dev ----------------------------------
yum -y install gcc-c++
wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-5.4.0/gcc-5.4.0.tar.bz2 tar -xvf gcc-5.4.0.tar.bz2 cd gcc-5.4.0
./contrib/download_prerequisites mkdir build cd build ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib make make install
strings /lib64/libstdc++.so.6 | grep GLIBC
cp /usr/local/lib64/libstdc++.so.6.0.21 /lib64 cd /lib64 rm -rf libstdc++.so.6 ln -s libstdc++.so.6.0.21 libstdc++.so.6
yum install sqlite-devel zlib-devel ----------------------------------------
|
- 安装 tippecanoe
1 2 3 4 5 6
| $ git clone https://github.com/mapbox/tippecanoe.git
$ cd tippecanoe $ make && make install
|
一般数据生产使用
1
| $ tippecanoe -e [文件夹名称] -z [最大缩放等级] -Z [最小缩放等级] -pC XX.geojson
|
1 2 3
| $ tippecanoe -e test -s EPSG:3857 -z 20 -Z 18 -pC polygon.geojson //批处理 $ tippecanoe -e maps -z 20 -Z 18 -pC `ls`
|
- 将 polygon.geojson 文件进行矢量切片, 传入的坐标系为 3857, 切片等级 12-18, 切片生成的目录名称为 test, 不使用 geobuf 压缩
常用选项
通常情况, 我们需要将 geojson 文件转换为 geobuf。
使用方法为:
1
| $ tippecanoe -o file.mbtiles [options] [file.json file.geobuf ...]
|
输出格式
-o
file.mbtiles
or --output=
file.mbtiles
: 输出 mbtiles 文件
-e
directory or --output-to-directory
=directory: 输出文件至指定 目录
-f
or --force
: 如果 mbtiles 文件已存在, 则删除它
-F
or --allow-existing
: 如果已经存在对应的文件, 不删除已存在的文件
切片描述与水印
-n
name or --name=
name: (默认)生成 XXX.json 作为可读的切片描述
-A
text or --attribution=
text: 切片水印
-N
description or --description=
description: 生成 XXX.mbtiles 作为切片描述
输入文件和图层名称
- name
.json
or name.geojson
: 将 geojson 的 name 写入图层名称, 命名为 name
- name
.geobuf
or name.geobuf
: 将 geobuf 的 name 写入图层名称, 命名为 name
-l
name or --layer=
name: 使用指定的名称而不是输入文件名称作为图层名称
-L
name:
file.json or --named-layer=
name:
file.json: 对每一个文件指定图层名称
输入文件的投影
-s
projection or --projection=
projection: 指定输入文件的坐标系 EPSG:4326
(默认 WGS84) and EPSG:3857
(Web Mercator). 通常情况下, 使用 WGS84 作为输入文件的坐标系
缩放等级
-z
zoom or --maximum-zoom=
zoom: 最大缩放等级
-zg
or --maximum-zoom=g
: 默认使用估算合理的最大缩放等级
-Z
zoom or --minimum-zoom=
zoom: 最小缩放等级
-ae
or --extend-zooms-if-still-dropping
: 如果最小要素依然存在, 增大最大的缩放等级
切片分辨率
-d
detail or --full-detail=
detail: 最大缩放等级的分辨率(默认 12 级, 切片分比率 2^12=4096)
-D
detail or --low-detail=
detail: 较低等级的分辨率(默认 12 级, 切片分比率 2^12=4096)
-m
detail or --minimum-detail=
detail: 最小的分辨率(默认 7 级)
属性表过滤器
-x
name or --exclude=
name: 移除所有要素对应的指定字段
-y
name or --include=
name: 移除所有空字段要素
-X
or --exclude-all
: 移除所有属性字段, 只保留几何字段
-T
attribute:
type or --attribute-type=
attribute:
type: 改变指定字段的类别:string
, float
, int
, bool
.
-j
filter or --feature-filter
=filter: 字段过滤, "*"
表示使用所有图层, 使用 mapbox 过滤函数
-J
filter-file or --feature-filter-file
=filter-file: 和"-j"
一样, 只不过从文件中过滤
字段过滤 example:
1 2
| $ tippecanoe -z 5 -o filtered.mbtiles -j '{ "ne_10m_admin_0_countries": [ "all", [ "<", "scalerank", 3 ], [ ">", "LABELRANK", 5 ] ] }' ne_10m_admin_0_countries.geojson
|
线、面的简化
-S
scale or --simplification=
scale: 容差
-ps
or --no-line-simplification
: 无线简化
-pS
or --simplify-only-low-zooms
: 在高缩放等级时不简化
-pt
or --no-tiny-polygon-reduction
: 不合并面
公共面边界优化
-ab
or --detect-shared-borders
: 检测公共边界并简化
-aL
or --grid-low-zooms
: 线、面吸附
裁剪切片边界
-b
pixels or --buffer=
pixels: 缓冲区(默认 5, 2^5=32)
-pc
or --no-clipping
: 不裁剪
-pD
or --no-duplication
: 无重复
切片要素重排
-pi
or --preserve-input-order
: 以输入顺序作为绘制顺序
-ao
or --reorder
: 所有同属性要素按顺序重排
-ac
or --coalesce
: 合并具有相同属性的相邻线、面
-ar
or --reverse
: 合并相邻但反向的线段
增加计算的额外字段
-ag
or --calculate-feature-density
: 增加字段tippecanoe_feature_density
, 用于描述切片中的要素密度
修复破损几何
-aw
or --detect-longitude-wraparound
: 检测相邻点, 并修复几何
切片大小设
-M
bytes or --maximum-tile-bytes=
bytes: 切片大小指定(默认 500k)
-pf
or --no-feature-limit
: 切片要素数量限制(默认 20W)
-pk
or --no-tile-size-limit
: 不使用切片大小限制
-pC
or --no-tile-compression
: 不使用 PBF 压缩(此处必须选择, 否则 mapbox 无法使用)
-pg
or --no-tile-stats
: 不生成切片信息
临时储存
-t
directory or --temporary-directory=
directory: 临时目录, 如果未指定, 使用/tmp
.
结果指示器
-q
or --quiet
: 静默模式
-v
or --version
: 返回 Tippecanoe 版本号