Tippecanoe是Mapbox的一个开源切片工具,项目地址:https://github.com/mapbox/tippecanoe,Mapbox常规的切片方法tilelive-copy参见另外一篇博客。Tippecanoe主要在处理大数据量时有很大的优点,具备很高的效率,而且有不少参数能够控制。Tippecanoe只能处理GeoJSON,所以在切片前须要将矢量数据转换为GeoJSON,推荐使用ogr2ogr工具转换。切片之后的格式为mbtiles,可自行导入mongodb等数据库。git
ogr2ogr工具在GDAL中,Linux安装GDAL须要分别安装PROJ.四、GEOS和GDAL,本实验采用的proj-4.8.0、geos-3.3.8、gdal-1.10.0,点击可直接进入下载地址。安装前请确保系统已经安装gcc、g++、make,没有请自行安装。
分别解压下载的压缩文件,在文件夹依次运行:github
$ ./configure $ make $ make install
安装完成之后命令默认路径在/usr/local/bin,库文件在/usr/local/lib,源码在/usr/local/include。此时运行gdalinfo:sql
$ gdalinfo
出现以上结果说明安装成功。
注意: 若是出现提示共享库找不到,按一下方法处理:
一、修改/etc/ld.so.conf文件,将共享库的路径“/usr/local/lib”加入进去。
二、运行ldconfig
命令使其生效。凡是增长了新的共享库,都须要运行一下ldconfig
命令。mongodb
本实验是从postgis数据库转换,转换命令为:shell
$ ogr2ogr -f "GeoJSON" ./filename.json PG:"host=localhost dbname=timeline user=ms password=ms" -sql "select * from tablename" -t_srs="epsg:4326"
为了不一个一个转,能够写成shell进行批处理:json
#!bin/sh for layer in "layer1" "layer2" "layer3" "layer4" do echo "$layer convert start" ogr2ogr -f "GeoJSON" ./$layer.json PG:"host=localhost dbname=timeline user=ms password=ms" -sql "select * from $layer" -t_srs="epsg:4326" echo "$layer convert successful" done
从github下载源码:https://github.com/mapbox/tippecanoe/releases
依次输入命令进行编译安装:工具
$ make $ make install
$ tippecanoe -z 14 -Z 12 -ps -Bg -o river_live.mbtiles *.json
-Bg 是自动抽吸,避免单个瓦片要素数量过多
*.json 是当前文件夹下的全部json文件,会为每一个文件自动建立一个图层,图层名为文件名post
本项目矢量瓦片须要在mongodb进行管理,须要将mbtiles导入到mongodb,此时能够使用tilelive-copy进行导入,速度很快。大数据
$ tilelive-copy mbtiles:///path/to/mbtiles/file.mbtiles "foxgis+mongodb://localhost/zootop?tileset_id=****&owner=****" --timeout=200000000
最后,若是在加载矢量切片后,渲染出现三角形的空洞,例如以下效果:
这是由于tippecanoe自动抽吸,精简了部分线坐标,可在切片时加-ps选项,禁止简化线要素。
$ tippecanoe -z 14 -Z 12 -ps -Bg -o river_live.mbtiles *.json
正确渲染结果以下图: