使用gdal创建地图瓦片服务

使用gdal创建地图瓦片服务

地图瓦片服务是将大型地图数据集切割成小块瓦片,以便通过 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
作者

1uciuszzz

发布于

2024-01-22

更新于

2024-04-09

许可协议

评论