原創(chuàng)
2018/03/09 00:54
閱讀數 1W
本文被收錄于專區(qū)
Tippecanoe是Mapbox的一個開源切片工具璃氢,項目地址:https://github.com/mapbox/tippecanoe,Mapbox常規(guī)的切片方法tilelive-copy參見另一篇博客嫩絮。Tippecanoe主要在處理大數據量時有很大的優(yōu)勢绪妹,具有很高的效率斩例,并且有很多參數可以控制切揭。Tippecanoe只能處理GeoJSON妈倔,因此在切片前需要將矢量數據轉換為GeoJSON及志,推薦使用ogr2ogr工具轉換。切片以后的格式為mbtiles誊抛,可自行導入mongodb等數據庫列牺。
一整陌、在Linux系統(tǒng)配置GDAL
ogr2ogr工具在GDAL中拗窃,Linux安裝GDAL需要分別安裝PROJ.4、GEOS和GDAL泌辫,本實驗采用的proj-4.8.0随夸、geos-3.3.8、gdal-1.10.0震放,點擊可直接進入下載地址宾毒。安裝前請確保系統(tǒng)已經安裝gcc、g++殿遂、make诈铛,沒有請自行安裝乙各。
分別解壓下載的壓縮文件,在文件夾依次運行:
$ ./configure$ make $ make install
安裝完成以后命令默認路徑在/usr/local/bin幢竹,庫文件在/usr/local/lib耳峦,源碼在/usr/local/include。此時運行gdalinfo:
$ gdalinfo
出現以上結果說明安裝成功焕毫。
注意:如果出現提示共享庫找不到蹲坷,按一下方法處理:
1、修改/etc/ld.so.conf文件邑飒,將共享庫的路徑“/usr/local/lib”加入進去循签。
2、運行l(wèi)dconfig命令使其生效疙咸。凡是增加了新的共享庫县匠,都需要運行一下ldconfig命令。
二撒轮、將數據轉換為GeoJSON
本實驗是從postgis數據庫轉換聚唐,轉換命令為:
$ogr2ogr -f"GeoJSON"./filename.json PG:"host=localhost dbname=timeline user=ms password=ms"-sql"select * from tablename"-t_srs="epsg:4326"
為了避免一個一個轉,可以寫成shell進行批處理:
#!bin/shforlayerin"layer1""layer2""layer3""layer4"doecho"$layerconvert start"ogr2ogr -f"GeoJSON"./$layer.json PG:"host=localhost dbname=timeline user=ms password=ms"-sql"select * from$layer"-t_srs="epsg:4326"echo"$layerconvert successful"done
三腔召、安裝tippecanoe
從github下載源碼:https://github.com/mapbox/tippecanoe/releases
依次輸入命令進行編譯安裝:
$ make$ make install
四杆查、 切片
$tippecanoe-z14-Z12-ps-Bg-oriver_live.mbtiles*.json
-Bg 是自動抽吸,避免單個瓦片要素數量過多
*.json 是當前文件夾下的所有json文件臀蛛,會為每個文件自動創(chuàng)建一個圖層亲桦,圖層名為文件名
五、mbtiles導入到mongodb
本項目矢量瓦片需要在mongodb進行管理浊仆,需要將mbtiles導入到mongodb客峭,此時可以使用tilelive-copy進行導入,速度很快抡柿。
$ tilelive-copymbtiles:///path/to/mbtiles/file.mbtiles "foxgis+mongodb://localhost/zootop?tileset_id=****&owner=****" --timeout=200000000
最后舔琅,如果在加載矢量切片后,渲染出現三角形的空洞洲劣,例如如下效果: