Tiff数据制作Mapbox Terrain-RGB高程地形Mbtiles

1,416 阅读1分钟

操作系统

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 

image.png

查看tiff坐标系

 gdalsrsinfo {tiff path} 

image.png

可以看到当前坐标系为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