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

PostGIS栅格数据类型解析【geomval】

geomval 解析:栅格矢量化复合类型

  • 一、类型定义与结构
  • 二、核心应用场景
  • 三、字段解析与操作
  • 四、使用示例
  • 五、与其他类型的转换
  • 六、性能与优化
  • 七、应用场景
  • 八、注意事项
  • 九、总结

一、类型定义与结构

geomval是 PostGIS 中用于表示栅格矢量化结果的复合数据类型,包含两个核心字段:

  • .geom:几何对象(点、线、多边形等),表示栅格像素的空间范围。
  • .val:double precision类型的像素值,对应几何对象所在位置的栅格值。

该类型主要用于将栅格数据转换为带属性值的几何要素集合,比如常用的函数ST_DumpAsPolygons和栅格交集函数(如ST_Intersection),后续章节会详解这两个函数。

二、核心应用场景

1. 栅格矢量化:

  • 将栅格每个像素或连续同值区域转换为多边形,保留像素值作为属性。
with dp as (select (ST_DumpAsPolygons(rast, 1)).* from srtm_90 where rid = 1
)
SELECT dp.geom,dp.val
FROM dp;

2. 栅格 - 矢量交集分析:

计算几何对象与栅格的交集,获取交集中的几何形状及对应像素值。

SELECT si.geom AS intersection_geom, si.val AS pixel_value
FROM ST_Intersection(geom, rast, 1) AS si;

三、字段解析与操作

1. .geom 字段

  • 几何类型:
    可以是任意 PostGIS 几何类型(点、线、多边形、几何集合等),取决于栅格矢量化方式或交集结果。
    • 单像素矢量化:多边形(表示单个像素范围)。
    • 连续同值区域:合并的多边形(如ST_MapAlgebra后的区域)。
  • 空间参考:
    • 与原始栅格的 SRID 一致,可通过ST_SRID(geom)查询。

2. .val 字段

  • 值类型:
    双精度浮点数,直接映射栅格像素值(可能经过类型转换,如整数型像素值转为浮点)。
  • NoData 处理:
    若几何对应栅格区域为 NoData,.val为NULL。

四、使用示例

示例 1:栅格矢量化为多边形集合

WITH dem_polygons AS (SELECT (dp).geom AS poly, (dp).val AS elevFROM (select (ST_DumpAsPolygons(rast, 1)).* from srtm_90 where rid = 1) as dp
)
-- 统计不同高程范围的多边形面积
SELECT CASE WHEN elev < 100 THEN '低海拔'WHEN elev < 500 THEN '中海拔'ELSE '高海拔'END AS elevation_class,SUM(ST_Area(poly)) AS total_area
FROM dem_polygons
GROUP BY elevation_class;

示例 2:提取线几何穿过的栅格值

WITH profile_line AS (SELECT ST_GeomFromText('LINESTRING(100 200, 500 600)') AS line
),
intersection_data AS (SELECT (si).geom AS segment, (si).val AS dem_valueFROM profile_line, ST_Intersection(line, dem_rast, 1) AS si
)
-- 生成剖面线与高程值的关联数据
SELECT ST_AsText(segment), dem_value
FROM intersection_data
ORDER BY ST_LineLocatePoint(line, segment);

五、与其他类型的转换

1. 提取几何与值

  • 从geomval中分离几何和值:
SELECT (gv).geom AS the_geom,(gv).val AS the_value
FROM geomval_table AS gv;

2. 转换为普通表

  • 将geomval集合转换为带几何列和值列的普通表:
CREATE TABLE raster_vector AS
SELECT (gv).geom AS geom, (gv).val AS val
FROM ST_Intersection(geom, rast, 1) AS gv;

3. 与矢量函数结合

  • 在geomval的几何字段上使用矢量操作函数:
SELECT ST_Buffer((gv).geom, 10) AS buffered_geom,(gv).val AS val
FROM geomval_collection AS gv;

六、性能与优化

1. 大数据量处理:

高分辨率栅格矢量化后geomval数量庞大,建议先分块处理:

… …

七、应用场景

1. 生态与环境科学:

  • 将植被指数栅格矢量化,结合保护区多边形分析植被分布。

… …

八、注意事项

1. 栅格分辨率影响:

… …

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

在这里插入图片描述

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

相关文章:

  • makefile学习笔记
  • Java图片处理实战:Imgscalr技术方案
  • 视觉中国:镜头下的中国发展图景
  • C++030(内联函数)
  • Δ-Σ ADC的工作原理
  • 2025东北CCPC(部分+详解)
  • Java从入门到精通 - 面向对象编程基础
  • 将can日志数据提取到excle中
  • HOMIE——遥操类似ALOHA主从臂的外骨骼驾驶舱收集数据:通过上肢模仿学习和全身控制RL训练自主策略
  • JVM虚拟机监控及性能调优实战!
  • mqtt c语言publish topic
  • 6 质量控制中的常用缩略语和符号(OEE)以及解释
  • 嵌入式学习之系统编程(七)线程的控制(互斥与同步)和死锁
  • CPG开源项目对比
  • 18度的井水
  • C++补充基础小知识:为什么要继承、什么时候继承、什么时候直接用
  • 高并发计数器LongAdder 实现原理与使用场景详解
  • Jmeter性能测试(应用场景、性能测试流程、搭建测试环境)
  • 实例与选项对象
  • SpringBoot+Vue+Echarts实现可视化图表的渲染
  • 自动生成程序的heap文件
  • #!/usr/bin/env python
  • JS中的属性描述符
  • Day 20
  • 生成式引擎在不同行业的应用案例
  • 第十章 Java基础-Static静态变量
  • 基于物理约束的稀疏IMU运动捕捉系统
  • spring和Mybatis的各种查询
  • Rust 学习笔记:使用迭代器改进 minigrep
  • 力扣刷题Day 61:子集(78)