地图瓦片服务是将大型地图数据集切割成小块瓦片,以便通过 Web 地图应用程序进行加载和显示的服务。GDAL(Geospatial Data Abstraction Library)是一个强大的开源库,它提供了处理地理空间数据的工具和库。
下载 gdal
在 Windows 系统上,推荐通过osgeo4w来安装 gdal
切割单个 tif 文件
下载地理空间数据
land_shallow_topo_21600.tif
下载 174MB 大小的栅格文件
为 tif 附加 geo 信息
1
| gdal_translate -a_srs EPSG:4326 -a_ullr -180 90 180 -90 -co TILED=YES -co COMPRESS=DEFLATE path\to\land_shallow_topo_21600.tif path\to\output_geotiff.tif
|
-a_srs EPSG:4326
:设置投影系
-a_ullr -180 90 180 -90
:设置地理范围(左上角和右下角的经纬度坐标)
path\to\land_shallow_topo_21600.tif
:上一步中下载的 tif 文件
path\to\output_geotiff.tif
:转换后的文件路径
切割为瓦片
1
| gdal2tiles -p mercator -z 0-4 path\to\geotiff.tif output\dir
|
-p mercator
:表示使用 Web 墨卡托投影
-z 0-4
:表示缩放等级为 0-4 级
path\to\geotiff.tif
:表示上一步中转换后的 geotif 文件
output\dir
:表示切割结果的保存目录
在 leaflet 中呈现
在 React.js/leaflet/react-leaflet/tailwindcss 技术栈下的呈现方式:
1 2 3 4 5
| <div className="w-1/3 aspect-square h-fit sticky top-[88px]"> <MapContainer className="w-full h-full" zoom={4} center={[35.8617, 104.1954]}> <TileLayer tms opacity={1} minZoom={0} maxZoom={4} url="/maptiles/{z}/{x}/{y}.png" /> </MapContainer> </div>
|
2 张 tif 图片:对齐、合并和切割
下载地理空间数据
land_shallow_topo_west.tif
land_shallow_topo_east.tif
为 tif 附加 geo 信息
为 tif 文件附加 geo 信息
1 2 3
| gdal_translate -a_srs EPSG:4326 -a_ullr 0 90 180 -90 -co TILED=YES -co COMPRESS=DEFLATE path/to/land_shallow_topo_east.tif path/to/land_shallow_topo_east_translated.tif
gdal_translate -a_srs EPSG:4326 -a_ullr -180 90 0 -90 -co TILED=YES -co COMPRESS=DEFLATE path/to/land_shallow_topo_west.tif path/to/land_shallow_topo_west_translated.tif
|
合并
1
| gdal_merge -o path/to/merged_wgs84.tif path/to/land_shallow_topo_west_translated.tif path/to/land_shallow_topo_east_translated.tif
|
转换投影系
1
| gdalwarp -s_srs EPSG:4326 -t_srs EPSG:3857 -r near -of GTiff path/to/merged_wgs84.tif path/to/merged_mecator.tif
|
切割为瓦片
1
| gdal2tiles -p mercator -z 0-6 path/to/merged_mecator.tif save_folder/maptiles/global_mercator_0_6
|
在 cesium 中呈现
1 2 3 4 5 6 7 8 9
| <ImageryLayer imageryProvider={ new UrlTemplateImageryProvider({ url: "/maptiles/global_mercator_0_6/{z}/{x}/{reverseY}.png", minimumLevel: 0, maximumLevel: 6, }) } />
|
从 geo office 中下载的 tif 文件
直接生成瓦片
1
| gdal2tiles -p mercator -z n-m path/to/tif save/tiles/folder
|