windows下使用tippecanoe把GeoJSON制作成矢量切片vectortile


 

本文記錄一下把geojson格式的數據制作成本地的矢量切片,並在mapbox中展示的過程。

1.切片

1.1 矢量數據需要先轉換為geojson,如果是shp格式可以使用QGIS或者下載shp2geojson進行轉換。

1.2 使用tippecanoe進行切片,tippecanoe能從大量的 GeoJSON、Geobuf 或 CSV 特征集合中創建矢量瓦片。

在 Mac OSX 系統上安裝 tippecanoe 比較簡單,直接在 Terminal(終端)中輸入下面的代碼:brew install tippecanoe 即可。windows平台需要借助Cygwin從源碼安裝,步驟見文章末尾。

1.3 Cygwin64 Terminal中切換到數據目錄,輸入:

1 tippecanoe -o outfile.mbtiles -Z8  -z20 infile.geojson

參數說明: -o outfile 輸出的切片,是.mbtiles格式的文件,該文件是一個sqlite庫

                -Z 是切片的最小zoom, -z 切片的最大zoom

                infile可以是多個,這樣會按照圖層分別存放切片

特別注意,-e 可用於將 tile 寫入指定的目錄而不是 mbtiles 文件,想要將矢量瓦片發布到 Web 服務的開發者可以使用這個功能(第三部分有介紹)。

參數詳細介紹可以參考官方文檔

2.查看

 mbtiles格式的查看需要使用mbview,這一個node項目

可以 npm install -g mbview 命令安裝后,進入 .mbtiles 目錄,輸入mbview  filename.mbtiles,這是會報缺少token的異常:

 

於是加入了MAPBOX_ACCESS_TOKEN的參數(可以注冊mapbox賬號獲取token),然而還是報錯...

 

 無奈之下看了源碼,發現token需要用MapboxAccessToken名稱:

 

修改后,再執行命令,顯示啟動了服務

 

同時瀏覽器也顯示切片地圖。

 

瀏覽器F12可以查看加載的瓦片。

 

3.展示

 mbtiles可以通過node-mbtiles及其他mbtiles-server發布出來,做為數據源給mapbox展示。

本文介紹另外一種使用方式,即不依賴map server 把切片以ZXY文件組織的方式放入web服務器中,mapbox使用形如 http://localhost:9002/laketile/{z}/{x}/{y}.pbf的地址訪問。

在1.3部分說過 -e outdir 參數可以將切片放入目錄,生成的結果如下圖:

然后在nginx中添加以下配置把pbf發布出來:

1 location /laketile {
2        alias   E:/code/00test/MapBox/mbutil/lake;
3        add_header 'Access-Control-Allow-Origin' '*';
4 }

在mapbox中添加代碼顯示數據:

 1 map.on('load', function(){
 2   map.addLayer({
 3     "id": "lake",
 4     "type": "fill",
 5     "source": {
 6       type: 'vector',
 7       tiles: ['http://localhost:9002/laketile/{z}/{x}/{y}.pbf']
 8     },
 9     "source-layer": "lake",
10     'layout': {},
11     'paint': {
12       'fill-color': '#088',
13       'fill-opacity': 0.8
14     }
15   });
16 });

打開瀏覽器,發現沒有顯示數據,console報 Unimplemented type 3 的錯誤。

 

 

 通過不懈努力發現原來是tippecanoe在制作切片進行了gzip壓縮,而瀏覽器不知道.pbf是壓縮過的,不過tippecanoe是很強大的,留了很多參數,加上 --pC就可以生成未壓縮的切片。

1 tippecanoe -e lakepbf -pC -Z8 -z14 -f lake.geojson

再次發布、訪問就沒問題了。這種方式會生成很多小文件,不方便管理,但是對於需要離線部署、數據量不大的情況還是挺有用的,不需要專門的map server,可以和前端代碼一起放入nginx。

4.windows平台下安裝tippecanoe

1.下載cygwin的安裝包setup-x86_64.exe,地址:http://cygwin.com/setup-x86_64.exe

推薦在c盤根目錄下創建cygwin目錄,把setup-x86_64.exe放入c:\cygwin中

2.安裝Cygwin terminal

cmd進入setup-x86_64.exe所在的目錄,即c:\cygwin

輸入:

1 setup-x86_64.exe -q -P zlib-devel,libsqlite3-devel,gcc-g++,make,python,git,gdal,python-gdal

 

中間可能會出現選擇下載源的地方,隨便選即可。稍等片刻,安裝完成后在桌面會創建快捷方式。

 

打開Cygwin terminal輸入: python -m ensurepip

 

 3.下載tippecanoe源碼

git clone https://github.com/mapbox/tippecanoe.git

 

 

 下載后的地址在Cygwin\home\{username}\tippecanoe目錄下。

 (源碼也可以自行到github上下載,在第4步時需要進入自己下載的源碼目錄)

下載完成后打開源碼目錄下的makefile文件,注意不要使用notepad,可以用寫字板,

找到:
CXXFLAGS := $(CXXFLAGS) -std=c++11
修改為:
CXXFLAGS := $(CXXFLAGS) -std=c++11 -U__STRICT_ANSI__

4.編譯安裝

在Cygwin terminal中進入tippecanoe源碼目錄。

如果是使用Cygwin terminal命令下載的源碼,直接輸入cd tippecanoe即可,如果是自行下載的源碼請輸入全路徑,cd  xxx/xxx/tippecanoe

然后依次執行

make

make install

到此安裝完畢,詳細可參考https://github.com/GISupportICRC/ArcGIS2Mapbox#installing-tippecanoe-on-windows

如有不清楚的地方,歡迎留言交流~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM