GIS遥感数据工程【免费下载链接】gdalGDAL is an open source MIT licensed translator library for raster and vector geospatial data formats.项目地址https://gitcode.com/gh_mirrors/gd/gdal点击查看免费下载本篇技术指南以 GDAL 官方文档 gdal2tiles 为核心讲解 gdal2tiles 这一经典瓦片切片工具如何把一张带地理参考的栅格影像切分为符合 OSGeo Tile Map ServiceTMS规范的瓦片目录并自动生成 Google Earth 的 KML SuperOverlay 元数据以及基于 Google Maps、OpenLayers、Leaflet 和 MapML 的即开即用网页查看器。读完本文你将掌握 gdal2tiles 的全部命令行参数、三种内置切片 profilemercator/geodetic/raster与自定义 TileMatrixSet profile 的机制、输入数据的预处理要求、输出目录结构与各产物含义并了解其从 GDAL 3.13 起迁移到新版gdal raster tile命令的弃用与兼容路径。工具定位与核心能力gdal2tiles 是一个 Python 实用程序其作用是把栅格影像切分成目录形式的瓦片金字塔并配套生成元数据与网页客户端。官方文档概括了它的核心能力生成符合OSGeo Tile Map Service (TMS) 规范的小瓦片目录与元数据tilemapresource.xml自动生成基于Google Maps、OpenLayers、Leaflet的简单网页查看器上传目录到任意 Web 服务器即可浏览无需安装 MapServer 等专用软件当输入数据使用EPSG:4326投影时额外生成 Google Earth 所需的KML SuperOverlay元数据切片过程中使用世界文件world file与内嵌地理参考即使没有正确地理参考的图片也可以直接发布仅能使用rasterprofile。从源码视角看工具的核心实现在 swig/python/gdal-utils/osgeo_utils/gdal2tiles.py约 4700 行命令行入口脚本为 swig/python/gdal-utils/scripts/gdal2tiles.py后者负责deprecation_warn(gdal2tiles)警告并调用osgeo_utils.gdal2tiles包中的main()。版本弃用与迁移提示GDAL 3.13文档开篇给出一个重要警告从 GDAL 3.13 开始gdal2tiles 被标记为弃用默认被重映射到新的gdal raster tile命令详见 gdal_raster_tile。这意味着不追加任何参数调用 gdal2tiles 时底层实际执行的是新命令的 C 实现而非本文介绍的 Python 传统实现。如需继续使用旧版legacy代码可显式指定--legacy传统 legacy 模式计划在GDAL 3.15移除--mpi模式在新命令的非 legacy 模式下不受支持只能配合--legacy使用如果你确实需要 legacy 功能且无法用gdal raster tile找到替代方案官方文档建议向 GDAL 项目提交 issue--legacy选项的 help 文本中同样说明了这一点见 gdal2tiles.py。因此在阅读下文参数时需注意本文讲解的是 gdal2tiles 的完整参数面含 legacy 独有能力在新命令中部分参数行为可能不同。命令语法Synopsisgdal2tiles 的完整命令行语法如下gdal2tiles [--help] [--help-general] [--legacy] [-p profile] [-r resampling] [-s srs] [-z zoom] [-e] [-a nodata] [-v] [-q] [-h] [-k] [-n] [-u url] [-w webviewer] [-t title] [-c copyright] [--processesNB_PROCESSES] [--mpi] [--xyz] [--tilesizePIXELS] --tiledriverDRIVER [--tmscompatible] [--excluded-valuesEXCLUDED_VALUES] [--excluded-values-pct-thresholdEXCLUDED_VALUES_PCT_THRESHOLD] [--nodata-values-pct-thresholdNODATA_VALUES_PCT_THRESHOLD] [-g googlekey] [-b bingkey] input_file [output_dir] [COMMON_OPTIONS]其中input_file为必填output_dir可选省略时默认在当前目录下生成与输入文件名去扩展名同名的输出目录——这一点由源码process_args()中的os.path.splitext(os.path.basename(input_file))[0]逻辑实现见 gdal2tiles.py。使用-h/--help可查看帮助并退出--version可查看程序版本gdal2tiles 的版本号直接取gdal.__version__。核心切片参数详解-p PROFILE, --profilePROFILE切片 profile指定瓦片切割 profile默认值为mercatorGoogle Maps 兼容。可选值包括取值说明mercator球形墨卡托EPSG:3857兼容 Google Maps/Bing 等网络地图geodetic地理坐标EPSG:4326兼容 Google Earth 与 OpenLayersraster无投影重投影直接在输入栅格自身坐标系上按 2 的幂次金字塔切块从 GDAL 3.2 起还可以使用放置于 GDAL data 目录下的tms_XXXX.json文件注册额外 profile前提是所有 zoom 层级使用相同的原点、相同的瓦片尺寸且相邻层级分辨率呈 2 倍关系。源码中get_profile_list_and_tmsMap()会通过gdal.FindFile(gdal, tms_MapML_APSTILE.json)定位 data 目录再扫描所有tms_*.json并逐个解析见 gdal2tiles.py。当前仓库自带的 TileMatrixSet 数据文件包括 gcore/data/tms_MapML_APSTILE.json、gcore/data/tms_MapML_CBMTILE.json、gcore/data/tms_LINZAntarticaMapTileGrid.json、gcore/data/tms_NZTM2000.json。解析约束由TileMatrixSet.parse()强制保证只支持正方形瓦片tileWidth tileHeight、所有层级同一起点、分辨率按 2 的幂变化、所有层级瓦片尺寸一致否则抛UnsupportedTileMatrixSet见 gdal2tiles.py。-r RESAMPLING, --resamplingRESAMPLING重采样算法瓦片生成时的重采样方法默认average。源码中resampling_list定义的可选值为average, near, bilinear, cubic, cubicspline, lanczos, antialias, mode, max, min, med, q1, q3见 gdal2tiles.py。其中antialias已被弃用options_post_processing()会将其等价替换为lanczos并打印提示见 gdal2tiles.py。不同重采样算法对应不同的底层实现路径详见scale_query_to_tile()见 gdal2tiles.pyaverage调用gdal.RegenerateOverview()逐波段生成当同时指定了--excluded-values或--nodata-values-pct-threshold时改用gdal.Warp并附加-wo EXCLUDED_VALUES/-wo EXCLUDED_VALUES_PCT_THRESHOLD/-wo NODATA_VALUES_PCT_THRESHOLD选项其余算法映射为gdal.GRA_NearestNeighbour、GRA_Bilinear、GRA_Cubic、GRA_CubicSpline、GRA_Lanczos、GRA_Mode、GRA_Max、GRA_Min、GRA_Med、GRA_Q1、GRA_Q3等常量再通过gdal.ReprojectImage()执行。此外重采样算法会影响查询窗口大小构造GDAL2Tiles时near的querysize tile_sizebilinear为2 * tile_size其余默认4 * tile_size见 gdal2tiles.py即先按最近邻读回一块较大的“查询窗口”再缩放到目标瓦片尺寸。-s SRS, --s_srsSRS源数据空间参考系指定输入数据的空间参考系。若省略工具会从输入数据集读取投影信息无投影但有 GCP 时读取GetGCPProjection()。源码setup_input_srs()中若用户提供了--s_srs则通过osr.SpatialReference.SetFromUserInput()解析非法值会抛出Invalid value for --s_srs option见 gdal2tiles.py。使用非rasterprofile 时若输入 SRS 未知工具会报错并提示“Use --s_srs EPSG:xyz (or similar) to provide source reference system”。--xyzXYZ 瓦片编号生成XYZ 瓦片OSM Slippy Map 标准而非默认的 TMS 编号GDAL 3.1 起支持。两者的差异是 y 轴方向TMS默认y0 位于最南边瓦片坐标原点在左下角XYZOGC WMTS 也采用y0 位于最北边原点在左上角。源码中GlobalMercator.GoogleTile()的转换公式(tx, (2**zoom - 1) - ty)正是 TMS 与 Google/XYZ 编号之间的桥接见 gdal2tiles.py。--xyz模式下不会生成tilemapresource.xml见 gdal2tiles.py。-d, --tmscompatiblegeodetic profile 基准分辨率仅当使用geodeticprofile 时有效指定基准分辨率为0.703125zoom 0 层为 2 个瓦片遵循 OSGeo TMS 规范默认基准分辨率为 1.40625zoom 0 层仅 1 个瓦片对应 OpenLayers、MapProxy 等默认 WMTS 分辨率。这一机制在GlobalGeodetic.__init__()中实现见 gdal2tiles.py。-z ZOOM, --zoomZOOM渲染层级范围指定要渲染的 zoom 层级格式支持2-5区间、10-从 10 到自动计算的最大值、10单层。解析逻辑见options_post_processing()见 gdal2tiles.py不指定时最小/最大 zoom 由数据分辨率自动推算——例如 mercator profile 下调用GlobalMercator.ZoomForPixelSize()保证最底层不放大、顶层把整幅图收敛到一瓦片内。-e, --resume续传模式只生成缺失的文件跳过已存在的瓦片、KML、HTML 等适合中断后续跑。源码中多处if options.resume and isfile(...)判断均基于此如 gdal2tiles.py。-a NODATA, --srcnodataNODATA输入 NoData 值指定输入数据集中视为透明transparent的像素值。如果输入数据集本身已关联 nodata 值则被该参数覆盖。支持逗号分隔的多值例如 RGB 影像可写-a 0,0,0若提供的数量少于波段数源码会自动按波段数平铺补齐见setup_no_data_values()gdal2tiles.py。需要注意该函数会忽略超出波段数据类型取值范围的非整数 nodata见源码中对GDT_Byte的范围检查。-v, --verbose/-q, --quiet-v输出瓦片生成的详细过程信息GDAL 3.7 起该详细输出统一通过logging.getLogger(gdal2tiles)对象发出模块顶部即定义了logger logging.getLogger(gdal2tiles)见 gdal2tiles.py-q禁用向 stdout 输出的消息与状态。-x, --exclude排除透明瓦片把完全透明的瓦片从结果瓦片集中剔除可显著减少输出文件数。源码create_base_tile()中读取 alpha 后若发现整块瓦片的 alpha 全部为 0len(alpha) alpha.count(\x00)且开启了exclude_transparent则直接跳过该瓦片见 gdal2tiles.py。--processesNB_PROCESSES与--mpi并行加速--processes指定用于切片的并行进程数加快计算--mpiGDAL 3.5 起假定由mpiexec启动启用 MPI 并行并忽略--processes。要求可用的 MPI 环境和 mpi4pyMPI for Python包。官方文档提醒应根据每个节点的内存与每节点进程数将GDAL_CACHEMAX设置为合适的每进程缓存大小。示例见下文“MPI 并行切片”。--tilesizePIXELS瓦片尺寸瓦片的宽高像素默认256GDAL 3.1 起支持。该值贯穿金字塔计算如GlobalMercator的initialResolution 2 * π * 6378137 / tile_size256 时约 156543.03392804062 米/像素所有坐标换算均以tile_size为基准。--tiledriverDRIVER瓦片输出驱动决定瓦片的文件格式可选PNG、WEBP、JPEGJPEG 自 GDAL 3.9 加入默认PNG--tiledriver本身自 GDAL 3.6 加入。源码中对应扩展名PNG →.png、WEBP →.webp、其余 →.jpg见 gdal2tiles.py。WEBP/JPEG 的附加配置参数见下文专门小节。--excluded-values与两个阈值参数GDAL 3.9 起这三个参数用于精细控制 average 重采样时对特殊像素的处理是文档强调的“既有实操、又有底层原理”的典型--excluded-valuesEXCLUDED_VALUES逗号分隔的值元组典型如R,G,B这些像素在重采样时不作为贡献源像素。元组内值的个数必须与去掉 alpha 波段后的波段数一致可用(R1,G1,B1),(R2,G2,B2)语法指定多个元组。仅 average 重采样生效。它与 nodata/alpha 的核心区别是匹配任一排除值元组的像素在判定目标像素有效性/密度时仍被视为有效像素。--excluded-values-pct-threshold阈值触发“排除值写入”所需的最小源像素百分比。默认50%。即当源像素中某个排除值占多数且占比达到该阈值时目标像素值取该排除值。--nodata-values-pct-threshold阈值使目标像素变透明所需的最小源像素百分比nodata、alpha0 或其他透明表达方式。默认100%即只有所有贡献源像素都透明时目标像素才透明。仅 average 重采样生效。底层实现上这三个参数最终会转换成gdal.Warp的-wo EXCLUDED_VALUES、-wo EXCLUDED_VALUES_PCT_THRESHOLD、-wo NODATA_VALUES_PCT_THRESHOLD三个 warp 选项见 gdal2tiles.py。KMLGoogle Earth选项这些选项控制生成的 Google Earth SuperOverlay 元数据-k, --force-kml强制生成 KML。它是geodeticprofile 与处于 EPSG:4326 的rasterprofile 的默认行为对其他投影的数据集使用需谨慎因为 KML 需要 WGS84 经纬度边界。源码中输出 SRS 若与 EPSG:4326 的 Proj4 描述一致则isepsg4326 True并自动开启 KML见 gdal2tiles.py。-n, --no-kml禁止为 EPSG:4326 数据自动生成 KML。-u URL, --urlURL生成瓦片将要发布到的 URL 地址。它会写入 KML/HTML 中供网络访问源码还会自动补全结尾的/并拼接输出目录名见 gdal2tiles.py同时用于 MapML 模板中的${URL}变量替换。KML 本身是递归的 SuperOverlay 结构每个瓦片目录内含一个.kml通过Region/LatLonAltBox与NetworkLinkviewRefreshModeonRegion链接到子瓦片顶层doc.kml作为入口。模板生成逻辑见generate_kml()见 gdal2tiles.py。Web viewer 选项这些选项控制生成的“类 Google Maps”HTML 查看器-w WEBVIEWER, --webviewerWEBVIEWER指定生成哪种查看器可选all, google, openlayers, leaflet, mapml, none默认all。-t TITLE, --titleTITLE地图标题省略时默认取输入文件名见 gdal2tiles.py。-c COPYRIGHT, --copyrightCOPYRIGHT地图版权信息。-g GOOGLEKEY, --googlekeyGOOGLEKEYGoogle Maps API key来自 Google Maps 开发者平台。-b BINGKEY, --bingkeyBINGKEYBing Maps API key来自 Bing Maps Portal。生成的查看器文件位于输出目录根下googlemaps.html、openlayers.html、leaflet.html见generate_metadata()中webviewer in (all, google/openlayers/leaflet)的分支逻辑gdal2tiles.py。仓库测试数据中保留了这些产物的预期内容例如 autotest/utilities/data/gdal_raster_tile_expected_leaflet.html 与 autotest/utilities/data/gdal_raster_tile_expected_openlayers.htmlraster/geodetic 变体。MapML 选项MapML 支持是 GDAL 3.2 的新特性。当指定--webviewermapml时会隐含开启--xyz若同时使用--profilegeodetic还会隐含开启--tmscompatible见process_args()中的自动处理gdal2tiles.py。支持的 profile 及其到 MapML 切片的映射mercator映射到OSMTILEMapML tiling schemegeodetic映射到WGS84MapML tiling schemeAPSTILE来自 gcore/data/tms_MapML_APSTILE.json阿拉斯加极地立体投影坐标系 EPSG:5936。生成的 MapML 文件固定名为输出目录下的mapml.mapml。可用选项--mapml-templatefilename指定模板 MapML 文件名其中的变量会被替换不指定时使用 GDAL data 资源中的通用template_tiles.mapml。--url选项用于替换模板中的${URL}。WEBP 与 JPEG 输出选项WEBP tiledriver 自 GDAL 3.6 起支持通过--tiledriverWEBP启用--webp-qualityQUALITYWEBP 质量1~100 的整数默认75--webp-lossless使用无损压缩默认是有损。JPEG tiledriver 自 GDAL 3.9 起支持通过--tiledriverJPEG启用--jpeg-qualityQUALITYJPEG 质量1~100 的整数默认75。官方文档特别提醒JPEG 不支持透明度因此边缘瓦片中源栅格未覆盖的区域会显示黑色像素。源码对此有两处针对性处理一是输出前通过remove_alpha_band()移除 alpha 波段见 gdal2tiles.py二是在金字塔概览瓦片生成时若输入 RGB 且 RGB会临时补一个全 255 的 alpha 波段参与计算见 gdal2tiles.py。WEBP/JPEG 的创建选项LOSSLESSTrue/QUALITY...统一由_get_creation_options()生成见 gdal2tiles.py。另外WEBP/JPEG 驱动的可用性会在启动时被检查options_post_processing()中若gdal.GetDriverByName(options.tiledriver)返回空则直接报错退出见 gdal2tiles.py。输入数据要求与预处理文档给出了三条必须注意的输入约束理解它们可以避免大量“切出来不对”的踩坑非 Byte 数据会被钳制到 ByteInt16、UInt16等类型的输入会先被钳制到Byte类型导致结果错误。官方建议先用gdal_translate把输入缩放到 Bytegdal_translate -of VRT -ot Byte -scale input.tif temp.vrt gdal2tiles temp.vrt源码open_input()中同样强制检查DataType ! gdal.GDT_Byte时报错并给出上述建议命令见 gdal2tiles.py。调色板paletted影像需先展开源码检查到首波段存在 ColorTable 时会提示先用gdal_translate -of vrt -expand rgba转为 RGBAgdal_translate -of vrt -expand rgba input.tif temp.vrt gdal2tiles temp.vrt见 gdal2tiles.py。输入驱动配置选项可能影响输出例如GDAL_PDF_DPI等驱动配置会影响 gdal2tiles 的输出这类配置项参见 GDAL 文档的 configoptions。此外使用非rasterprofile 时输入必须具有可识别的 SRS 与地理参考仿射变换或 GCP否则工具会报错并提示改用-p raster或先用 GIS 软件配准见 gdal2tiles.py。三种内置 profile 的坐标系与金字塔机制mercatorEPSG:3857默认对应源码类GlobalMercator见 gdal2tiles.py地球范围[-20037508.342789244, -20037508.342789244, 20037508.342789244, 20037508.342789244]常量来自地球赤道周长的一半2 * math.pi * 6378137 / 2.0zoom 0 层整球覆盖在 256×256 瓦片上初始分辨率initialResolution 2 * π * 6378137 / 256 ≈ 156543.03392804062米/像素每降一级分辨率减半纬度绝对值大于约85.05112878的极地区域会被裁剪Web 墨卡托的固有范围支持最大 zoom 层级为 32MAXZOOMLEVEL见 gdal2tiles.py该 profile 下自动计算 min/max zoom 时瓦片坐标会被钳制在世界范围[0, 2**tz - 1]内见 gdal2tiles.py。geodeticEPSG:4326对应源码类GlobalGeodetic见 gdal2tiles.py直接以经纬度作为平面 XY 坐标Plate Carre / 未投影范围[-180,-90,180,90]映射到 512×256 像素顶层是 2 个瓦片的矩形而非正方形默认分辨率因子resFact 360/tile_sizezoom 0 一个瓦片--tmscompatible时为180/tile_sizezoom 0 两个瓦片即 0.703125 弧/像素该 profile 的瓦片可直接叠加到 Google Earth 与 OpenLayers 底图上。raster原栅格坐标对应GDAL2Tiles.open_input()中profile raster分支见 gdal2tiles.py不做任何重投影直接在输入栅格自身的坐标系上切片min zoom 恒为 0整幅图收敛为一个瓦片native zoom 由影像宽高计算ceil(log2(尺寸/tile_size))若用户请求的tmaxz大于 native zoom需要放大输出会临时用gdal.Translate生成一个超采样 VRT 再切片见 gdal2tiles.py该 profile 下若生成 KML瓦片边界会通过osr.CoordinateTransformation转换到 WGS84 经纬度。自定义 TMS profile除内置三者外凡符合前述约束的tms_*.json都会被解析为可用 profile如 APSTILE、CBMTILE、NZTM2000、LINZ Antartica 等其坐标系直接取自 JSON 的supportedCRS切片范围按 TileMatrixSet 的matrixWidth/matrixHeight与topLeftCorner计算见TileMatrixSet.GeorefCoordToTileCoord()与setup_output_srs()中output_srs tmsMap[options.profile].srs.Clone()gdal2tiles.py。输出目录结构详解一次典型的成功切片会在输出目录下生成以默认 TMS、mercator、PNG 为例output_folder/ ├── doc.kml # KML SuperOverlay 顶层入口EPSG:4326 或 geodetic 时 ├── googlemaps.html # Google Maps 查看器 ├── openlayers.html # OpenLayers 查看器 ├── leaflet.html # Leaflet 查看器 ├── mapml.mapml # MapML 文件--webviewermapml 时 ├── tilemapresource.xml # TMS 元数据非 --xyz 模式 ├── 0/ # zoom 0 │ ├── 0/ │ │ ├── 0.png │ │ └── 0.kml └── ... # 依 zoom 递进关键元数据文件tilemapresource.xmlTMS 规范的元数据描述文件generate_tilemapresource()生成声明 TileSets、SRS、边界与瓦片格式--xyz模式下不生成doc.kml与各z/x/y.kmlGoogle Earth SuperOverlay 递归描述EPSG:4326/geodetic/raster4326 时三个 HTML 查看器通过--webviewer控制mapml.mapml由--webviewermapml生成。仓库的自动化测试针对这些产物有完整的预期文件与校验逻辑例如 autotest/utilities/data/gdal_raster_tile_expected_geodetic_mapml.mapml、autotest/utilities/data/gdal_raster_tile_expected_mapml.mapml 及多组 KML 预期文件如 autotest/utilities/data/gdal_raster_tile_expected_byte_10_11_doc.kml。瓦片生成流水线与源码级原理结合 gdal2tiles.py 源码gdal2tiles 的内部流水线可概括为五个阶段参数解析与校验optparse_init()process_args()校验输入文件可打开、参数合法WEBP/JPEG 质量范围 1~100 等并做默认值填充--zoom解析、--url规范化等见 gdal2tiles.py。输入预处理open_input()打开数据集读取/推导 SRS按 profile 确定输出 SRSsetup_output_srs()必要时用reproject_dataset()通过gdal.AutoCreateWarpedVRT重投影到目标 SRS并对无 alpha 的 1/3 波段数据追加 alpha 波段update_alpha_value_for_non_alpha_inputs()等价于gdalwarp -dstalpha对指定/继承的 nodata 值通过改写 VRT 的GDALWarpOptions注入INIT_DESTNO_DATA、UNIFIED_SRC_NODATAYES见 gdal2tiles.py。金字塔范围计算按 profile 与数据边界为每个 zoom 层级计算(tminx, tminy, tmaxx, tmaxy)瓦片范围表tminmaxmercator/geodetic/raster/自定义 TMS 四个分支见 gdal2tiles.py。底层瓦片生成create_base_tile()在 MEM 驱动中创建内存瓦片按TileDetail计算的目标窗口ReadRaster源数据经scale_query_to_tile()缩放后由out_drv.CreateCopy()落盘PNG/WEBP/JPEG并可选生成该瓦片的.kml同时支持/vsi虚拟文件系统makedirs/isfile/my_open三个封装函数见 gdal2tiles.py。金字塔概览瓦片生成create_overview_tile()group_overview_base_tiles()从不超过 4 个底层瓦片合成上一级瓦片overview_tx base_tx 1逐级向上直至tminz见 gdal2tiles.py。并行化方面--processes与--mpi都会把瓦片任务分发到多进程/多节点源码在set_cache_max()中同时使用os.environ[GDAL_CACHEMAX]与gdal.SetCacheMax()设置缓存以兼容 fork 与 spawn 两种多进程启动方式见 gdal2tiles.py。实用示例基础示例zoom 2 到 5gdal2tiles --zoom2-5 input.tif output_folder这是文档给出的最简用法将input.tif切出 zoom 2~5 的 TMS 瓦片金字塔并输出到output_folder。MapML 生成gdal2tiles --zoom16-18 -w mapml -p APSTILE --url https://example.com input.tif output_folder使用 APSTILE阿拉斯加极地立体投影profile 生成 zoom 16~18 的 MapML 瓦片集--url会被写入模板 MapML 的${URL}中。注意指定-w mapml后会自动启用--xyz。MPI 并行切片mpiexec -n $NB_PROCESSES gdal2tiles --mpi --config GDAL_CACHEMAX 500 --zoom2-5 input.tif output_folder通过mpiexec启动$NB_PROCESSES个进程并行切片每进程缓存设为 500 MB需根据节点内存合理设置。该模式仅支持 legacy 实现。WEBP 瓦片输出gdal2tiles --tiledriverWEBP --webp-quality90 --zoom3-8 input.tif output_folder输出无损 WEBP 瓦片gdal2tiles --tiledriverWEBP --webp-lossless --zoom3-8 input.tif output_folderJPEG 瓦片输出与质量控制gdal2tiles --tiledriverJPEG --jpeg-quality85 --zoom3-8 input.tif output_folderJPEG 无透明度未覆盖区域为黑色请按需选用。排除特殊颜色像素average 重采样gdal2tiles --resamplingaverage --excluded-values255,0,0 \ --excluded-values-pct-threshold50 \ --nodata-values-pct-threshold100 \ --zoom4-10 input.tif output_folder自动化测试与验证gdal2tiles 在仓库中有完整的自动化测试套件 autotest/pyscripts/test_gdal2tiles.py覆盖了参数解析、输出校验与各种边界场景可视为理解工具行为的“行为规范”主要包括test_gdal2tiles_py_simple基础切片的--legacy与非 legacy 双路径验证test_gdal2tiles_py_zoom_option/test_gdal2tiles_py_resampling_optionzoom 与重采样参数验证test_gdal2tiles_py_xyzXYZ 编号模式test_gdal2tiles_py_invalid_srs非法 SRS 的报错路径test_does_not_error_when_source_bounds_close_to_tiles_bound源边界贴近瓦片边界时不应报错test_exclude_transparent_tiles透明瓦片排除配套数据 autotest/pyscripts/data/test_gdal2tiles_exclude_transparent.tiftest_gdal2tiles_py_profile_raster/test_gdal2tiles_py_profile_raster_oversample/test_gdal2tiles_py_profile_raster_xyzraster profile 及其超采样、XYZ 组合test_gdal2tiles_py_profile_geodetic_tmscompatible_xyzgeodetic tmscompatible xyz 组合test_gdal2tiles_py_mapmlMapML 输出校验test_gdal2tiles_py_webp/test_gdal2tiles_excluded_values/test_gdal2tiles_nodata_values_pct_thresholdWEBP 与 excluded-values 系列参数test_gdal2tiles_py_jpeg_3band_input/test_gdal2tiles_py_jpeg_1band_inputJPEG 三波段与单波段输入test_gdal2tiles_py_non_square_pixels非正方形像素像素宽高比 ≠ 1的兼容处理。向新命令 gdal raster tile 迁移由于 GDAL 3.13 起 gdal2tiles 默认被重映射到gdal raster tileC 实现新项目建议直接使用新命令。其完整的参数说明见文档 gdal_raster_tile源码实现位于 apps/gdalalg_raster_tile.cpp。迁移时需注意新命令具备大部分等价参数profile、resampling、zoom、tiledriver、xyz 等但--mpi不在新命令的非 legacy 模式支持范围内若因特殊需求必须使用 legacy 的 gdal2tiles Python 实现可在 GDAL 3.13/3.14 期间通过--legacy过渡并尽快迁移因为 legacy 模式将在GDAL 3.15 移除。小结gdal2tiles 是 GDAL 生态中把栅格快速发布为 Web 瓦片服务的经典工具它同时产出 TMS/XYZ 瓦片金字塔、Google Earth KML SuperOverlay、以及 Google Maps/OpenLayers/Leaflet/MapML 查看器覆盖了从切片、元数据到前端展示的完整发布链路。理解其mercator/geodetic/raster三种 profile 的坐标系语义、Byte 输入约束、average 重采样下的透明像素控制excluded-values 与 pct-threshold以及--tilesize/--tiledriver/--processes/--mpi等调优参数即可在生产中稳定地批量生成瓦片同时在 GDAL 3.13 版本中应优先评估gdal raster tile新命令并为 legacy 模式的最终移除做好迁移准备。赞分享GIS遥感数据工程【免费下载链接】gdalGDAL is an open source MIT licensed translator library for raster and vector geospatial data formats.项目地址https://gitcode.com/gh_mirrors/gd/gdal点击查看免费下载相关推荐Flet Map 的 TileLayer 详解在 Python 中加载地图瓦片XYZ / TMS / WMS的完整指南Flet Map 的 TileLayer 详解在 Python 中加载地图瓦片XYZ / TMS / WMS的完整指南 TileLayer 是 flet前端跨平台桌面应用移动开发GDAL MBTiles 驱动完全指南基于 SQLite 的切片地图栅格与矢量瓦片读写GDAL MBTiles 驱动完全指南基于 SQLite 的切片地图栅格与矢量瓦片读写 MBTiles 驱动是 GDAL 内置的读写工具负责处理以 SQLiGIS遥感数据工程如何快速掌握MapSCII瓦片坐标系从零开始理解XYZ瓦片系统如何快速掌握MapSCII瓦片坐标系从零开始理解XYZ瓦片系统 MapSCII是一款能在控制台中渲染Braille和ASCII世界地图的创新工具通过XYZ瓦GISCLI数据可视化上一篇终极指南如何在本地搭建你的专属AI虚拟主播下一篇Sunshine游戏串流三步把客厅电视变成游戏大屏创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考