矢量地图切片-mapbox本地化
1. 矢量地图数据切片
使用tippecanoe 进行矢量地图切片,切片格式由geojson转为pbf
1.1. 安装
- 需求linux环境
- 需要 sqlite3, zlib两个库文件
- 安装库文件支持
#安装make
sudo apt-get install build-essential libsqlite3-dev zlib1g-dev
- 安装tippecanoe
#下载
git clone https://github.com/mapbox/tippecanoe.git
#编译及安装
cd tippecanoe
make && make install
1.2. 一般数据生产使用
tippecanoe -e [文件夹名称] -z [最大缩放等级] -Z [最小缩放等级] -pC XX.geojson
tippecanoe -e test -s EPSG:3857 -z 20 -Z 18 -pC polygon.geojson
//批处理
for i in `ls`;do tippecanoe -e ${i%_*} -s EPSG:3857 -z 20 -Z 18 -pC $i;done
- 将polygon.geojson文件进行矢量切片,传入的坐标系为3857,切片等级12-18,切片生成的目录名称为test,不使用geobuf压缩
1.3. 常用选项
通常情况,我们需要将geojson文件转换为geobuf。
使用方法为:
tippecanoe -o file.mbtiles [options] [file.json file.geobuf ...]
1.3.1. 输出格式
-
-o
file.mbtiles
or--output=
file.mbtiles
: 输出mbtiles文件 -
-e
directory or--output-to-directory
=directory: 输出文件至指定 目录 -
-f
or--force
: 如果mbtiles文件已存在,则删除它 -
-F
or--allow-existing
: 如果已经存在对应的文件,不删除已存在的文件
1.3.2. 切片描述与水印
-
-n
name or--name=
name: (默认)生成XXX.json作为可读的切片描述 -
-A
text or--attribution=
text: 切片水印 -
-N
description or--description=
description: 生成XXX.mbtiles作为切片描述
1.3.3. 输入文件和图层名称
-
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: 对每一个文件指定图层名称
1.3.4. 输入文件的投影
-
-s
projection or--projection=
projection: 指定输入文件的坐标系EPSG:4326
(默认WGS84) andEPSG:3857
(Web Mercator). 通常情况下,使用WGS84作为输入文件的坐标系
1.3.5. 缩放等级
-
-z
zoom or--maximum-zoom=
zoom: 最大缩放等级 -
-zg
or--maximum-zoom=g
: 默认使用估算合理的最大缩放等级 -
-Z
zoom or--minimum-zoom=
zoom: 最小缩放等级 -
-ae
or--extend-zooms-if-still-dropping
: 如果最小要素依然存在,增大最大的缩放等级
1.3.6. 切片分辨率
-
-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级)
1.3.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:
tippecanoe -z 5 -o filtered.mbtiles -j '{ "ne_10m_admin_0_countries": [ "all", [ "<", "scalerank", 3 ], [ ">", "LABELRANK", 5 ] ] }' ne_10m_admin_0_countries.geojson
1.3.8. 线、面的简化
-
-S
scale or--simplification=
scale: 容差 -
-ps
or--no-line-simplification
: 无线简化 -
-pS
or--simplify-only-low-zooms
: 在高缩放等级时不简化 -
-pt
or--no-tiny-polygon-reduction
: 不合并面
1.3.9. 公共面边界优化
-
-ab
or--detect-shared-borders
: 检测公共边界并简化 -
-aL
or--grid-low-zooms
: 线、面吸附
1.3.10. 裁剪切片边界
-
-b
pixels or--buffer=
pixels: 缓冲区(默认5,2^5=32) -
-pc
or--no-clipping
: 不裁剪 -
-pD
or--no-duplication
: 无重复
1.3.11. 切片要素重排
-
-pi
or--preserve-input-order
: 以输入顺序作为绘制顺序 -
-ao
or--reorder
: 所有同属性要素按顺序重排 -
-ac
or--coalesce
: 合并具有相同属性的相邻线、面 -
-ar
or--reverse
: 合并相邻但反向的线段
1.3.12. 增加计算的额外字段
-
-ag
or--calculate-feature-density
: 增加字段tippecanoe_feature_density
, 用于描述切片中的要素密度
1.3.13. 修复破损几何
-
-aw
or--detect-longitude-wraparound
: 检测相邻点,并修复几何
1.3.14. 切片大小设
-
-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
: 不生成切片信息
1.3.15. 临时储存
-
-t
directory or--temporary-directory=
directory: 临时目录,如果未指定,使用/tmp
.
1.3.16. 结果指示器
-
-q
or--quiet
: 静默模式 -
-v
or--version
: 返回Tippecanoe版本号