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
正確渲染結果以下圖: