矢量地圖切片-mapbox本地化
1. 矢量地圖數(shù)據(jù)切片
使用tippecanoe 進(jìn)行矢量地圖切片,切片格式由geojson轉(zhuǎn)為pbf
1.1. 安裝
- 需求linux環(huán)境
- 需要 sqlite3, zlib兩個(gè)庫文件
- 安裝庫文件支持
#安裝make
sudo apt-get install build-essential libsqlite3-dev zlib1g-dev
- 安裝tippecanoe
#下載
git clone https://github.com/mapbox/tippecanoe.git
#編譯及安裝
cd tippecanoe
make && make install
1.2. 一般數(shù)據(jù)生產(chǎn)使用
tippecanoe -e [文件夾名稱] -z [最大縮放等級] -Z [最小縮放等級] -pC XX.geojson
tippecanoe -e test -s EPSG:3857 -z 20 -Z 18 -pC polygon.geojson
//批處理
for i in `ls`;do tippecanoe -e ${i%_*} -s EPSG:3857 -z 20 -Z 18 -pC $i;done
- 將polygon.geojson文件進(jìn)行矢量切片,傳入的坐標(biāo)系為3857,切片等級12-18,切片生成的目錄名稱為test,不使用geobuf壓縮
1.3. 常用選項(xiàng)
通常情況,我們需要將geojson文件轉(zhuǎn)換為geobuf。
使用方法為:
tippecanoe -o file.mbtiles [options] [file.json file.geobuf ...]
1.3.1. 輸出格式
-
-ofile.mbtilesor--output=file.mbtiles: 輸出mbtiles文件 -
-edirectory or--output-to-directory=directory: 輸出文件至指定 目錄 -
-for--force: 如果mbtiles文件已存在,則刪除它 -
-For--allow-existing: 如果已經(jīng)存在對應(yīng)的文件,不刪除已存在的文件
1.3.2. 切片描述與水印
-
-nname or--name=name: (默認(rèn))生成XXX.json作為可讀的切片描述 -
-Atext or--attribution=text: 切片水印 -
-Ndescription or--description=description: 生成XXX.mbtiles作為切片描述
1.3.3. 輸入文件和圖層名稱
-
name
.jsonor name.geojson: 將geojson的 name 寫入圖層名稱,命名為 name -
name
.geobufor name.geobuf: 將geobuf的 name 寫入圖層名稱,命名為 name -
-lname or--layer=name: 使用指定的名稱而不是輸入文件名稱作為圖層名稱 -
-Lname:file.json or--named-layer=name:file.json: 對每一個(gè)文件指定圖層名稱
1.3.4. 輸入文件的投影
-
-sprojection or--projection=projection: 指定輸入文件的坐標(biāo)系EPSG:4326(默認(rèn)WGS84) andEPSG:3857(Web Mercator). 通常情況下,使用WGS84作為輸入文件的坐標(biāo)系
1.3.5. 縮放等級
-
-zzoom or--maximum-zoom=zoom: 最大縮放等級 -
-zgor--maximum-zoom=g: 默認(rèn)使用估算合理的最大縮放等級 -
-Zzoom or--minimum-zoom=zoom: 最小縮放等級 -
-aeor--extend-zooms-if-still-dropping: 如果最小要素依然存在,增大最大的縮放等級
1.3.6. 切片分辨率
-
-ddetail or--full-detail=detail: 最大縮放等級的分辨率(默認(rèn) 12級, 切片分比率 2^12=4096) -
-Ddetail or--low-detail=detail: 較低等級的分辨率(默認(rèn) 12級, 切片分比率 2^12=4096) -
-mdetail or--minimum-detail=detail: 最小的分辨率(默認(rèn)7級)
1.3.7. 屬性表過濾器
-
-xname or--exclude=name: 移除所有要素對應(yīng)的指定字段 -
-yname or--include=name: 移除所有空字段要素 -
-Xor--exclude-all: 移除所有屬性字段,只保留幾何字段 -
-Tattribute:type or--attribute-type=attribute:type: 改變指定字段的類別:string,float,int,bool. -
-jfilter or--feature-filter=filter: 字段過濾,"*"表示使用所有圖層,使用mapbox過濾函數(shù) -
-Jfilter-file or--feature-filter-file=filter-file: 和"-j"一樣,只不過從文件中過濾
字段過濾example:
tippecanoe -z 5 -o filtered.mbtiles -j '{ "ne_10m_admin_0_countries": [ "all", [ "<", "scalerank", 3 ], [ ">", "LABELRANK", 5 ] ] }' ne_10m_admin_0_countries.geojson
1.3.8. 線、面的簡化
-
-Sscale or--simplification=scale: 容差 -
-psor--no-line-simplification: 無線簡化 -
-pSor--simplify-only-low-zooms: 在高縮放等級時(shí)不簡化 -
-ptor--no-tiny-polygon-reduction: 不合并面
1.3.9. 公共面邊界優(yōu)化
-
-abor--detect-shared-borders: 檢測公共邊界并簡化 -
-aLor--grid-low-zooms: 線、面吸附
1.3.10. 裁剪切片邊界
-
-bpixels or--buffer=pixels: 緩沖區(qū)(默認(rèn)5,2^5=32) -
-pcor--no-clipping: 不裁剪 -
-pDor--no-duplication: 無重復(fù)
1.3.11. 切片要素重排
-
-pior--preserve-input-order: 以輸入順序作為繪制順序 -
-aoor--reorder: 所有同屬性要素按順序重排 -
-acor--coalesce: 合并具有相同屬性的相鄰線、面 -
-aror--reverse: 合并相鄰但反向的線段
1.3.12. 增加計(jì)算的額外字段
-
-agor--calculate-feature-density: 增加字段tippecanoe_feature_density, 用于描述切片中的要素密度
1.3.13. 修復(fù)破損幾何
-
-awor--detect-longitude-wraparound: 檢測相鄰點(diǎn),并修復(fù)幾何
1.3.14. 切片大小設(shè)
-
-Mbytes or--maximum-tile-bytes=bytes: 切片大小指定(默認(rèn)500k) -
-pfor--no-feature-limit: 切片要素?cái)?shù)量限制(默認(rèn)20W) -
-pkor--no-tile-size-limit: 不使用切片大小限制 -
-pCor--no-tile-compression: 不使用PBF壓縮(此處必須選擇,否則mapbox無法使用) -
-pgor--no-tile-stats: 不生成切片信息
1.3.15. 臨時(shí)儲存
-
-tdirectory or--temporary-directory=directory: 臨時(shí)目錄,如果未指定,使用/tmp.
1.3.16. 結(jié)果指示器
-
-qor--quiet: 靜默模式 -
-vor--version: 返回Tippecanoe版本號