矢量地图切片-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. 输出格式
-
-ofile.mbtilesor--output=file.mbtiles: 输出mbtiles文件 -
-edirectory or--output-to-directory=directory: 输出文件至指定 目录 -
-for--force: 如果mbtiles文件已存在,则删除它 -
-For--allow-existing: 如果已经存在对应的文件,不删除已存在的文件
1.3.2. 切片描述与水印
-
-nname or--name=name: (默认)生成XXX.json作为可读的切片描述 -
-Atext or--attribution=text: 切片水印 -
-Ndescription or--description=description: 生成XXX.mbtiles作为切片描述
1.3.3. 输入文件和图层名称
-
name
.jsonor name.geojson: 将geojson的 name 写入图层名称,命名为 name -
name
.geobufor name.geobuf: 将geobuf的 name 写入图层名称,命名为 name -
-lname or--layer=name: 使用指定的名称而不是输入文件名称作为图层名称 -
-Lname:file.json or--named-layer=name:file.json: 对每一个文件指定图层名称
1.3.4. 输入文件的投影
-
-sprojection or--projection=projection: 指定输入文件的坐标系EPSG:4326(默认WGS84) andEPSG:3857(Web Mercator). 通常情况下,使用WGS84作为输入文件的坐标系
1.3.5. 缩放等级
-
-zzoom or--maximum-zoom=zoom: 最大缩放等级 -
-zgor--maximum-zoom=g: 默认使用估算合理的最大缩放等级 -
-Zzoom or--minimum-zoom=zoom: 最小缩放等级 -
-aeor--extend-zooms-if-still-dropping: 如果最小要素依然存在,增大最大的缩放等级
1.3.6. 切片分辨率
-
-ddetail or--full-detail=detail: 最大缩放等级的分辨率(默认 12级, 切片分比率 2^12=4096) -
-Ddetail or--low-detail=detail: 较低等级的分辨率(默认 12级, 切片分比率 2^12=4096) -
-mdetail or--minimum-detail=detail: 最小的分辨率(默认7级)
1.3.7. 属性表过滤器
-
-xname or--exclude=name: 移除所有要素对应的指定字段 -
-yname or--include=name: 移除所有空字段要素 -
-Xor--exclude-all: 移除所有属性字段,只保留几何字段 -
-Tattribute:type or--attribute-type=attribute:type: 改变指定字段的类别:string,float,int,bool. -
-jfilter or--feature-filter=filter: 字段过滤,"*"表示使用所有图层,使用mapbox过滤函数 -
-Jfilter-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. 线、面的简化
-
-Sscale or--simplification=scale: 容差 -
-psor--no-line-simplification: 无线简化 -
-pSor--simplify-only-low-zooms: 在高缩放等级时不简化 -
-ptor--no-tiny-polygon-reduction: 不合并面
1.3.9. 公共面边界优化
-
-abor--detect-shared-borders: 检测公共边界并简化 -
-aLor--grid-low-zooms: 线、面吸附
1.3.10. 裁剪切片边界
-
-bpixels or--buffer=pixels: 缓冲区(默认5,2^5=32) -
-pcor--no-clipping: 不裁剪 -
-pDor--no-duplication: 无重复
1.3.11. 切片要素重排
-
-pior--preserve-input-order: 以输入顺序作为绘制顺序 -
-aoor--reorder: 所有同属性要素按顺序重排 -
-acor--coalesce: 合并具有相同属性的相邻线、面 -
-aror--reverse: 合并相邻但反向的线段
1.3.12. 增加计算的额外字段
-
-agor--calculate-feature-density: 增加字段tippecanoe_feature_density, 用于描述切片中的要素密度
1.3.13. 修复破损几何
-
-awor--detect-longitude-wraparound: 检测相邻点,并修复几何
1.3.14. 切片大小设
-
-Mbytes or--maximum-tile-bytes=bytes: 切片大小指定(默认500k) -
-pfor--no-feature-limit: 切片要素数量限制(默认20W) -
-pkor--no-tile-size-limit: 不使用切片大小限制 -
-pCor--no-tile-compression: 不使用PBF压缩(此处必须选择,否则mapbox无法使用) -
-pgor--no-tile-stats: 不生成切片信息
1.3.15. 临时储存
-
-tdirectory or--temporary-directory=directory: 临时目录,如果未指定,使用/tmp.
1.3.16. 结果指示器
-
-qor--quiet: 静默模式 -
-vor--version: 返回Tippecanoe版本号












网友评论