当前位置: 首页 > java >正文

PostGIS实现栅格数据导出TIFF应用实践【ST_AsTiff】

ST_AsTIFF 解析与应用实践

一、函数概述

ST_AsTIFF是 PostGIS 中用于将栅格数据(raster)转换为 TIFF(Tagged Image File Format)格式的工具函数。TIFF 是地理空间数据中最常用的栅格格式之一,支持多波段、无损压缩和地理参考信息嵌入,适用于高精度遥感影像、数字高程模型(DEM)等数据的存储与交换。该函数通过封装 GDAL 库功能,提供灵活的参数配置,满足不同场景下的 TIFF 导出需求。

二、核心参数解析

bytea ST_AsTIFF(raster rast,                -- 输入栅格mixed compression/options,  -- 压缩方式或GDAL选项数组integer[] nbands = NULL,    -- 选择导出的波段数组integer srid = sameassource -- 空间参考ID
);

参数说明:

  • 波段选择(nbands):

    • 未指定时导出所有波段,多波段按顺序映射为 RGB(如ARRAY[3,2,1]将波段 3→红,波段 2→绿,波段 1→蓝)。
    • TIFF 支持任意波段数,但常见遥感影像多为 3-4 波段(RGB + 近红外)。
  • 压缩方式(compression):

    • 无损压缩:LZW(推荐,平衡压缩率与画质)、DEFLATE(类似 ZIP)。
    • 有损压缩:JPEG(如JPEG90表示 90% 质量),适用于非高精度影像。
    • 特殊压缩:PACKBITS(适用于二值影像)、CCITT Group 4(传真压缩,适用于黑白影像)。
  • GDAL 选项(options):

    • 常用选项:
      • PHOTOMETRIC=RGB:设置色彩模式。
      • TILED=YES:生成 tiled TIFF(便于分块读取)。
      • BIGTIFF=YES:支持超过 4GB 的大文件
    • 完整选项见GDAL GTiff 驱动文档。
  • 空间参考(srid):

    • 默认为栅格自身 SRID,可显式指定(如导出时转换坐标系)。

三、典型用法示例

示例 1:导出多波段遥感影像(LZW 无损压缩)

SELECT ST_AsTIFF(rast, nbands := ARRAY[4,3,2],  -- 近红外、红、绿波段→假彩色compression := 'LZW',    -- 无损压缩srid := 3857             -- Web墨卡托坐标系
) AS tiff_data
FROM landsat_8
WHERE acquisition_date = '2023-07-15';

应用:生成用于植被分析的假彩色 TIFF,保留原始数据精度。

示例 2:导出单波段 DEM(JPEG 压缩)

SELECT ST_AsTIFF(rast, nband := 1,              -- 第1波段(高程)compression := 'JPEG75',  -- 75%质量有损压缩options := ARRAY['PHOTOMETRIC=GRAY']  -- 灰度模式
) AS dem_tiff
FROM dem_raster
WHERE region = 'mountainous';

效果:文件大小减少约 60%,适用于预览或非高精度分析。

示例 3:自定义 GDAL 选项(分块存储 + 元数据)

SELECT ST_AsTIFF(rast, nbands := ARRAY[1,2,3],  -- RGB三波段options := ARRAY['TILED=YES',           -- 分块存储(256×256像素)'COMPRESS=LZW',        -- 无损压缩'METADATA=VAL1=value1,VAL2=value2'  -- 自定义元数据],srid := 4326             -- WGS84坐标系
) AS tiled_tiff
FROM aerial_photography
WHERE flight_id = 'AP_2023';

优势:分块 TIFF 支持快速随机访问,适合 WebGIS 瓦片服务。

四、TIFF 格式与栅格转换规则

1. 波段映射规则:

  • 多波段导出时,顺序决定色彩通道(如ARRAY[2,1,3]将波段 2→红,波段 1→绿,波段 3→蓝)。
  • 4 波段时,第 4 波段自动映射为 Alpha 通道(透明)。

2. 数据类型转换:

  • PostGIS 栅格类型(如16BSI)自动转换为 TIFF 支持的类型:
    • 8BUI → Byte(0-255)
    • 16BSI → Int16(-32768~32767)
    • 32BF → Float32(浮点型)

3. 地理参考信息:

  • TIFF 通过以下方式存储空间参考:
    • SRID参数指定的坐标系(如 EPSG:4326)。
    • 世界文件(.tfw)或 GeoTIFF 标签(包含仿射变换参数)。

五、性能与优化

1. 大文件处理:

… …

全部文章内容请转【PostGIS专栏】,原创不易,求关注支持,更多开源GIS相关知识技能分享,免费提供学习问答交流。

在这里插入图片描述

http://www.xdnf.cn/news/8469.html

相关文章:

  • 图纸加密软件的核心优势解析
  • Python多线程编程详解
  • 信号与系统02-信号的时域分析
  • Python训练营打卡 Day25
  • 电路图识图基础知识-电气符号(二)
  • 图片压缩工具 | 需求思考及桌面应用开发技术选型
  • 2025电工杯数学建模竞赛A题 光伏电站发电功率日前预测问题 完整论文+python代码发布!
  • git 暂存功能使用
  • 从数学融智学视域系统地理解《道德经》:前三十七章,道法自然
  • Linux `clear` 命令与 Ctrl+L 快捷键的深度解析与高阶应用指南
  • 爬虫IP代理技术深度解析:场景、选型与实战应用
  • 缓存穿透解析
  • 20250523-BUG:无法加载“GameLib/Framework.h“头文件(已解决)
  • 【window QT开发】简易的对称密钥加解密工具(包含图形应用工具和命令行工具)
  • esp32-idf框架学习笔记/教程
  • 力扣509题:斐波那契数列的解法与代码注释
  • pytdx数据获取:在线获取和离线获取(8年前的东西,还能用吗?)
  • RESTful API 在前后端交互中的作用与实践
  • 晶圆隐裂检测提高半导体行业效率
  • Python之PyCharm安装及使用教程
  • MySQL强化关键_015_存储过程
  • YOLOv8检测头代码详解(示例展示数据变换过程)
  • 【信息系统项目管理师】第17章:项目干系人管理 - 43个经典题目及详解
  • PyTorch高阶技巧:构建非线性分类器与梯度优化全解析​
  • 2025电工杯:光伏电站发电功率日前预测问题 第一问基于历史功率的光伏电站发电特性 -完整matlab代码
  • I.MX6ULL_Linux_系统篇(26) buildroot分析
  • Python 大模型知识蒸馏详解,知识蒸馏大模型,大模型蒸馏代码实战,LLMs knowledge distill LLM
  • stm32上拉电阻,1K,4.7K,5.6K,10K怎么选?
  • 职业规划:动态迭代的系统化路径
  • javaScirpt学习第五章(函数)-第一部分