使用Tippecanoe工具處理大數據量的矢量數據切片

Tippecanoe是Mapbox的一個開源切片工具,項目地址:https://github.com/mapbox/tippecanoe,Mapbox常規的切片方法tilelive-copy參見另外一篇博客。Tippecanoe主要在處理大數據量時有很大的優點,具備很高的效率,而且有不少參數能夠控制。Tippecanoe只能處理GeoJSON,所以在切片前須要將矢量數據轉換爲GeoJSON,推薦使用ogr2ogr工具轉換。切片之後的格式爲mbtiles,可自行導入mongodb等數據庫。git

1、在Linux系統配置GDAL

ogr2ogr工具在GDAL中,Linux安裝GDAL須要分別安裝PROJ.四、GEOS和GDAL,本實驗採用的proj-4.8.0geos-3.3.8gdal-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

2、將數據轉換爲GeoJSON

本實驗是從postgis數據庫轉換,轉換命令爲:shell

$ ogr2ogr -f "GeoJSON" ./filename.json PG:"host=localhost dbname=timeline user=ms password=ms" -sql "select * from tablename" -t_srs="epsg:4326"

其餘命令可參考:https://morphocode.com/using-ogr2ogr-convert-data-formats-geojson-postgis-esri-geodatabase-shapefiles/數據庫

爲了不一個一個轉,能夠寫成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

3、安裝tippecanoe

從github下載源碼:https://github.com/mapbox/tippecanoe/releases 
依次輸入命令進行編譯安裝:工具

$ make
$ make install

4、 切片

$ tippecanoe -z 14 -Z 12 -ps -Bg -o river_live.mbtiles *.json

-Bg 是自動抽吸,避免單個瓦片要素數量過多 
*.json 是當前文件夾下的全部json文件,會爲每一個文件自動建立一個圖層,圖層名爲文件名post

5、mbtiles導入到mongodb

本項目矢量瓦片須要在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

正確渲染結果以下圖: 
這裏寫圖片描述

相關文章
相關標籤/搜索