PostGIS栅格数据类型解析【raster】
PostGIS 栅格数据类型解析:结构、转换与应用
一、栅格数据类型概述
在 PostGIS 中,raster 是用于存储和处理栅格数据的核心类型,支持从多种格式(如 JPEG、GeoTIFF、PNG、DEM)导入的数据。每个栅格由一个或多个波段(Band)组成,每个波段包含规则排列的像素值矩阵,且栅格可通过空间参考信息(SRID、原点坐标、像素尺寸)实现地理配准。
二、栅格数据结构核心要素
波段(Band):
- 栅格的基本组成单元,每个波段存储特定类型的数据(如 RGB 图像包含红、绿、蓝三个波段)。
- 支持多种像素类型(如 8 位无符号整数、32 位浮点等),可通过ST_BandPixelType查询。
空间参考:
- SRID:定义坐标系(如 4326 代表 WGS84)。
- 原点坐标(ULX/ULY):栅格左上角像素的地理坐标。
- 像素尺寸(ScaleX/ScaleY):每个像素代表的地理单位(如 1 米、0.001 度)。
元数据:
- 存储于系统表 raster_columns 和 raster_overviews 中,包含栅格范围、波段数、NoData 值等信息。
三、栅格与几何类型的转换
1. 自动转换
-- 栅格自动转换为geometry(不推荐使用)
SELECT rast::geometry AS geom
FROM raster_table;
-- 等价于,推荐使用ST_ConvexHull
SELECT ST_ConvexHull(rast) AS geom
FROM raster_table;
注意: 此自动转换可能在未来版本中移除,建议显式调用ST_ConvexHull或其他几何提取函数。
2. 显式转换函数
| 函数 | 作用 | 示例 |
|---|---|---|
| ST_ConvexHull(rast) | 获取栅格外包络凸多边形 | SELECT ST_ConvexHull(rast) FROM ... |
| ST_Envelope(rast) | 获取栅格外包矩形 | SELECT ST_Envelope(rast) FROM ... |
| ST_AsRaster(geom) | 将几何转换为栅格(栅格化) | SELECT ST_AsRaster(geom, 10, 10) ... |
| ST_Polygon(rast) | 将栅格转换为等值面多边形 | SELECT ST_Polygon(rast, 1, 100) ... |
为了区分几个函数的区别,可以从下图直观感受到:

四、栅格与几何交互操作
1. 空间查询
-- 查询与多边形相交的栅格
SELECT rast
FROM raster_table
WHERE ST_Intersects(rast, ST_GeomFromText('POLYGON(...)'));
-- 裁剪栅格至指定区域
SELECT ST_Clip(rast, ST_GeomFromText('POLYGON(...)')) AS clipped_rast
FROM raster_table;
2. 栅格化几何对象
-- 将多边形转换为100x100像素的栅格,值为1
SELECT ST_AsRaster(
ST_GeomFromText('POLYGON(...)'),
100, 100, -- 宽度和高度
ARRAY['8BUI'], -- 像素类型
ARRAY[1], -- 像素值
ARRAY[0] -- NoData值
) AS rasterized_polygon;
五、最佳实践与注意事项
避免依赖自动转换:
- 现有代码中若使用rast::geometry,应替换为显式函数调用(如ST_ConvexHull(rast))。
栅格与几何性能差异(后续系列文章会讲到):
- 栅格操作(如ST_MapAlgebra)适合并行计算,但存储空间需求大。
- 几何操作(如ST_Buffer)适合精确分析,但处理大规模数据时性能较低。
数据格式选择:
- 连续表面数据(如 DEM、卫星影像)优先使用栅格存储。
- 离散对象(如建筑物、道路)优先使用几何存储。
GDAL 依赖:
- 需确保 PostGIS 编译时启用 GDAL 支持(通过 SELECT postgis_full_version() 检查)。
六、总结
raster 是作为PostGIS存储和处理栅格数据的核心类型,使得PostgreSQL可以存储处理栅格数据,也是GIS从业更偏向使用PostgreSQL的一大原因,可以方便实现从遥感影像到矢量分析的全流程空间数据处理,本系列文章也将深入分析PostGIS函数解析。
原创不易,求关注支持,欢迎转发。
PostGIS栅格数据类型解析【raster】的更多相关文章
- 《ServerSuperIO Designer IDE使用教程》-3.Modbus协议,读取多个寄存器,实现多种数据类型解析。发布:v4.2.2版本
更新内容,v4.2.2版本:1.增加Modbus协议读取多个寄存器,并且按多种数据类型解析数据.2.Modbus Serial和Modbus TCP两个驱动合并成一个驱动.3.修改数据库结构,保存配置 ...
- java的五种数据类型解析
不知道大家对java的简单数据类型是否了解,下面针对Java的五种类型简单数据类型表示数字和字符,进行详细的讲解和分析. 一.简单数据类型初始化 在Java语言中,简单数据类型作为类的成员变量声明时自 ...
- 《Play for Java》学习笔记(七)数据类型解析——Body parser
一.什么是body parser? body parser(不知道具体如何翻译,~~~~(>_<)~~~~ )指一个HTTP请求 (如POST和PUT操作)所包含的文本内容(body),这 ...
- SQLServer之数据类型解析
数字 int.bigint.smallint 和 tinyint 使用整数数据的精确数字数据类型. 数据类型 范围 存储 tinyint 0 到 255. 1 字节 smallint -2^15 (- ...
- Python学习:4.运算符以及数据类型解析
运算符 一.算数运算: 二.比较运算: 三.赋值运算 四.逻辑运算 五.成员运算 基本数据类型 一.Number(数字) Python3中支持int.float.bool.complex. 使用内置的 ...
- Arcgis:什么是栅格数据类型
栅格数据单元大小 栅格所表示的内容的详细程度(要素现象)通常取决于栅格的单元(像素)大小或空间分辨率. 单元必须足够小,这样才可以捕获到所需的详细信息: 而单元又必须足够大,这样才可以提高计算机存储和 ...
- Python数据类型解析(基础篇)
Python语言的类型 数字类型 字符串类型 元组类型 列表类型 文件类型 字典类型 1.数字类型 Python有三种数字类型:整数,浮点数,复数 Python中的整 ...
- Redis-五种数据类型解析
redis 五种数据结构详解(string,list,set,zset,hash) Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存 ...
- PostgreSQL+PostGIS
PostGIS简介 PostGIS是对象关系型数据库系统PostgreSQL的一个扩展,PostGIS提供如下空间信息服务功能:空间对象.空间索引.空间操作函数和空间操作符.同时,PostGIS遵循O ...
- World Wind Java开发之七——读取本地栅格文件(影像+高程)构建三维场景(转)
http://blog.csdn.net/giser_whu/article/details/41679515 首先,看下本篇博客要达到的效果图: 下面逐步分析如何加载影像及高程文件. 1.World ...
随机推荐
- 记录一段mysql代码
SELECT f . * , tmp.userid, tmp.cishu FROM fx_user f, ( SELECT a.id, b.userid AS userid, COUNT( * ) A ...
- 【2022_12_2】Fibersim安装记录
Fibersim 安装记录 1. 为什么要写这个文章? 因为我前前后后装了四天才装成功.在我的电脑上,fibersim14 16 17 15 挂到UG10 12 CatiaV5-6R2019 2018 ...
- 【记录】C-文件输入输出
写在开头 摸鱼摸得昏天黑地,是该炸一炸鱼的本愿了~ 以前总觉得笔记没什么重要的,但有时事到临头,又十分渴求简明的提纲来唤起记忆/提供重学的门路.于是就有了以下的产物,也希望能抑制一下无效摸鱼的堕落 ...
- Ollama——大语言模型本地部署的极速利器
1.概述 Ollama 是一款开源跨平台大模型工具,主要用于在本地便捷部署和运行大型语言模型(LLM),核心目标是降低用户使用大模型的门槛,同时保障数据隐私.核心功能与特点如下: (1)本地部署,隐私 ...
- idea 缺失右侧maven窗口
最近整了一个别人的项目到本地,发现在git下载项目到本地后,再通过idea的打开项目后,缺失了右侧的maven窗口. 注: idea是有安装到maven(idea默认是已经安装好的) 打开的项目也是m ...
- go 结构体根据某个字段进行排序
前言 在任何编程语言中,关乎到数据的排序都会有对应的策略,我们来看下 Golang 是怎样对数据进行排序,以及我们如何优化处理使用 go 排序 go 可以针对任何对象排序,虽然很多情况下是一个 sli ...
- PaddleOCR学习笔记3-通用识别服务
今天优化了下之前的初步识别服务的python代码和html代码. 采用flask + paddleocr+ bootstrap快速搭建OCR识别服务. 代码结构如下: 模板页面代码文件如下: uplo ...
- oracle清除日志
近日发现oracle占用的空间很大,经查,发现是 /u01/app/oracle/diag/rdbms/orcl/orcl/alert 警告日志 /u01/app/oracle/diag/rdbms/ ...
- VMware ESXi系统
esxi全称"VMware ESXi",是可直接安装在物理服务器上的强大的裸机管理系统,是一款虚拟软件,不需安装其他操作系统,是VMware服务器虚拟化的基础.通过直接访问并控制底 ...
- .NET 中的 Swagger 文档排序设置
Swagger的API默认排序往往达不到效果,甚至设置了Action排序也没有作用.这里直接给出代码,关键在于 IDocumentFilter 实现. 注意 DocumentFilter 注册要放在尾 ...