操作系统
Linux 5.8.0-55-generic #62~20.04.1-Ubuntu SMP Wed Jun 2 08:55:04 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
所需工具
- gcc,g++ gdal工具编译使用
- gdal 开源的空间数据处理工具
- rio-rgbify Mapbox开发的将dem栅格高程数据编码为RGB栅格数据的工具
- gdal2tiles 开源的基于gdal将tiff文件转换为tile的工具
- mb-util Mapbox 开发的tile与mbtiles互转工具
安装编译工具
sudo apt install build-essential
安装gdal
sudo apt install libpq-dev
sudo apt install gdal-bin
sudo apt install libgdal-dev
安装rgbify,使用的python version 3.8.10
pip install rio-rgbify -i https://mirrors.aliyun.com/pypi/simple/
安装gdal2tiles
pip install gdal2tiles -i https://mirrors.aliyun.com/pypi/simple/
操作步骤
Mapbox Terrain要求使用EPSG:3857坐标系
所以在转换之前先查看自己的tiff坐标系,如果坐标系不同需要转换为EPSG:3857
查看gdal版本号
gdalinfo --version
查看tiff坐标系
gdalsrsinfo {tiff path}
可以看到当前坐标系为EPSG:4326
坐标系转换
gdalwarp -s_srs "EPSG:4326" -t_srs "EPSG:3857" /home/cq/gis/tiff/feilaixia-0.8m-targetarea.tif /home/cq/gis/tiff/feilaixia_4326_to_3857.tif
tiff中以负值来表示无用数据,Terrain-RGB无法表示负值,所以需要数据清理
gdalwarp -t_srs "EPSG:3857" -dstnodata None -co TILED=YES -co COMPRESS=DEFLATE -co BIGTIFF=IF_NEEDED feilaixia_4326_to_3857.tif feilaixia_3857_dem_nodata.tif
生成rgb高程tif
#-b 指定输出基值
#-i 描述输出的精度,递增间隔
rio rgbify -b -10000 -i 0.1 feilaixia_3857_dem_nodata.tif feilaixia_3857_dem_rgb.tif
数据处理完成之后,生成tile
gdal2tiles.py feilaixia_3857_dem_rgb.tif ./tiles
源码下载mbutil,git地址github.com/mapbox/mbut…
安装
sudo python3 setup.py install
制作mbtiles
# --scheme 如果需要tms风格的瓦片则添加此参数
mb-util tiles/ rgb_by_mbutil.mbtiles --scheme=tms --image_format=png