栅格类型¶
本节列出了 oscargis raster 安装的数据类型。
| 类型名 | 表示 |
|---|---|
| raster | 是一种用于存储和分析栅格数据的数据类型 |
| rastbandarg | 为数据库提供了对地理空间对象的支持 |
| geomval | 复合类型,由geom字段引用的几何图形对象和val组成组成。 |
| addbandarg | 复合类型,它是函数ST_AddBand的输入类型 |
| summarystats | 复合类型,它是ST_SummaryStats和ST_SummaryStatsAgg函数返回的类型值 |
| aggcount | 用于对指定维度数据进行计数,即对非空的单元格个数进行统计 |
| reclassarg | 复合类型,用于作为输入到 ST_Reclass 函数中,以定义重分类的行为 |
| agg_samealignment | 用于处理与空间数据相关的聚合操作 |
| unionarg | 用于 ST_Union 函数的复合类型。它定义了要处理的波段和 UNION 操作的行为。 |
raster¶
Raster - 是一种用于存储和分析栅格数据的数据类型。这种数据类型通常用于地理信息系统(GIS)中,以处理和分析栅格图像或栅格数据。Raster类型的数据可以包含多个波段的信息,每个波段可以视为图像的一个层面,用于捕捉不同类型的信息,如颜色、高度、温度等。这种数据类型在遥感、地理信息系统、环境科学等领域有着广泛的应用。
drop table dummy_rast;
CREATE TABLE dummy_rast(rid integer, rast raster);
INSERT INTO dummy_rast(rid, rast)
VALUES (1,
('01' -- little endian (uint8 ndr)
|| '0000' -- version (uint16 0)
|| '0000' -- nBands (uint16 0)
|| '0000000000000040' -- scaleX (float64 2)
|| '0000000000000840' -- scaleY (float64 3)
|| '000000000000E03F' -- ipX (float64 0.5)
|| '000000000000E03F' -- ipY (float64 0.5)
|| '0000000000000000' -- skewX (float64 0)
|| '0000000000000000' -- skewY (float64 0)
|| '00000000' -- SRID (int32 0)
|| '0A00' -- width (uint16 10)
|| '1400' -- height (uint16 20)
)::raster
),
-- Raster: 5 x 5 pixels, 3 bands, PT_8BUI pixel type, NODATA = 0
(2, ('01000003009A9999999999A93F9A9999999999A9BF000000E02B274A' ||
'41000000007719564100000000000000000000000000000000FFFFFFFF050005000400FDFEFDFEFEFDFEFEFDF9FAFEF' ||
'EFCF9FBFDFEFEFDFCFAFEFEFE04004E627AADD16076B4F9FE6370A9F5FE59637AB0E54F58617087040046566487A1506CA2E3FA5A6CAFFBFE4D566DA4CB3E454C5665')::raster);
SELECT st_astext(ST_AddBand(ST_AddBand(ST_AddBand(ST_MakeEmptyRaster(2, 2, 0, 0, 0.1,-0.1, 0, 0, 4326), 1, '8BUI', 1, 0), 2, '8BUI', 2, 0), 3, '8BUI', 3, 0)::geometry);
ST_ASTEXT(text) |
---------------------
POLYGON((0 0,0.2 0,0.|
2 -0.2,0 -0.2,0 0)) |
总数目:1
SELECT st_astext(ST_AddBand(ST_MakeEmptyRaster(20, 20, 0, 0, 1, -1, 0, 0, 4326), '16BSI'::text, 1, 0)::geometry);
ST_ASTEXT(text) |
---------------------
POLYGON((0 0,20 0,20 |
-20,0 -20,0 0)) |
总数目:1
SELECT * FROM ST_BandMetadata(
ST_AddBand(
ST_AddBand(ST_MakeEmptyRaster(5, 5, 0, 0, 1, -1, 0, 0, 0), 1, '2BUI', 1, 0),
ARRAY[
ST_AddBand(ST_MakeEmptyRaster(5, 5, 0, 0, 1, -1, 0, 0, 0), 1, '4BUI', 1, 0),
ST_AddBand(ST_MakeEmptyRaster(5, 5, 0, 0, 1, -1, 0, 0, 0), 1, '8BUI', 1, 0),
ST_AddBand(ST_MakeEmptyRaster(5, 5, 0, 0, 1, -1, 0, 0, 0), 1, '16BUI', 1, 0),
ST_AddBand(ST_MakeEmptyRaster(5, 5, 0, 0, 1, -1, 0, 0, 0), 1, '32BUI', 1, 0),
ST_AddBand(ST_MakeEmptyRaster(5, 5, 0, 0, 1, -1, 0, 0, 0), 1, '64BF', 1, 0)
]::raster[]
), ARRAY[]::int[]
);
BANDNUM(int) |PIXELTYPE(text) |NODATAVALUE(double precision) |ISOUTDB(boolean) |PATH(text) |OUTDBBANDNUM(tinyint) |FILESIZE(bigint) |FILETIMESTAMP(bigint) |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 |2BUI |0 |false |null |null |null |null |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2 |4BUI |0 |false |null |null |null |null |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3 |8BUI |0 |false |null |null |null |null |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
4 |16BUI |0 |false |null |null |null |null |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
5 |32BUI |0 |false |null |null |null |null |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
6 |64BF |0 |false |null |null |null |null |
总数目:6
rastbandarg¶
rastbandarg - 它为数据库提供了对地理空间对象的支持,包括点、线、多边形等地理空间数据的存储和查询。
/*
WITH apple AS (
SELECT ST_AddBand(
ST_MakeEmptyRaster(350, 246, 0, 0, 1, -1, 0, 0, 0),
'/root/llq/stgis/tmp/oscar/oscargis/doc/html/images/apple.png'::text,
NULL::int[]
) AS rast
)
SELECT
ST_AsPNG(rast) AS original_png,
ST_AsPNG(ST_Grayscale(rast)) AS grayscale_png
FROM apple;
WITH apple AS (
SELECT ST_AddBand(
ST_MakeEmptyRaster(350, 246, 0, 0, 1, -1, 0, 0, 0),
'/root/llq/stgis/tmp/oscar/oscargis/doc/html/images/apple.png'::text,
NULL::int[]
) AS rast
)
SELECT
ST_AsPNG(rast) AS original_png,
ST_AsPNG(ST_Grayscale(
ARRAY[
ROW(rast, 1)::rastbandarg, -- red
ROW(rast, 2)::rastbandarg, -- green
ROW(rast, 3)::rastbandarg -- blue
]::rastbandarg[]
)) AS grayscale_png
FROM apple;
*/
geomval¶
geomval - 是一种复合数据类型,由geom字段引用的几何图形对象和val组成,val是表示栅格标注栏中特定几何位置的像素值的双精度值。它由ST_DumpAsPolygon和栅格交点函数系列用作输出类型,用于将栅格标注栏分解为几何图形多边形。
SELECT
foo.rid,
foo.gid,
ST_AsText((foo.geomval).geom) As geomwkt, (foo.geomval).val
FROM (
SELECT
A.rid, g.gid,
ST_Intersection(A.rast, g.geom) As geomval
FROM dummy_rast AS A
CROSS JOIN (
SELECT 1 AS gid, ST_Point(3427928, 5793243.85) AS geom
UNION ALL
SELECT 2, ST_GeomFromText('LINESTRING(3427927.85 5793243.75,3427927.8 5793243.75,3427927.8 5793243.8)')
UNION ALL
SELECT 3, ST_GeomFromText('LINESTRING(1 2, 3 4)')
) As g(gid,geom)
WHERE A.rid = 2
) As foo;
RID(int) |GID(int) |GEOMWKT(text) |VAL(double precision) |
--------------------------------------------------------------------------
2 |1 |POINT(3427928 57932|249 |
| |43.85) | |
--------------------------------------------------------------------------
2 |1 |POINT(3427928 57932|253 |
| |43.85) | |
--------------------------------------------------------------------------
2 |2 |POINT(3427927.85 57|254 |
| |93243.75) | |
--------------------------------------------------------------------------
2 |2 |POINT(3427927.8 579|251 |
| |3243.8) | |
--------------------------------------------------------------------------
2 |2 |POINT(3427927.8 579|253 |
| |3243.8) | |
--------------------------------------------------------------------------
2 |2 |LINESTRING(3427927.|252 |
| |8 5793243.75,34279| |
| |27.8 5793243.8) | |
--------------------------------------------------------------------------
2 |2 |MULTILINESTRING((34|250 |
| |27927.8 5793243.8,| |
| |3427927.8 5793243.| |
| |75),(3427927.8 579| |
| |3243.75,3427927.85| |
| | 5793243.75)) | |
--------------------------------------------------------------------------
2 |3 |GEOMETRYCOLLECTION |null |
| |EMPTY | |
总数目:8
SELECT '#299', round(ST_Y(geometry(ST_Intersection(ST_GeographyFromText('POINT(1.2456 2)'), ST_GeographyFromText('POINT(1.2456 2)')))));
?COLUMN?(varchar) |ROUND(double precision) |
----------------------------------------------------
#299 |2 |
总数目:1
addbandarg¶
addbandarg - 是一个复合数据类型,它是函数ST_AddBand的输入类型。这个函数用于定义一个新波段的属性和属性的初始值。
SELECT
St_Value(rast, 1, 3, 3),
St_Value(rast, 2, 3, 3)
FROM (
SELECT
ST_AddBand(
ST_MakeEmptyRaster(10, 10, 10, 10, 2, 2, 0, 0, 0),
ARRAY[
ROW(1, '64BF', 1234.567, NULL),
ROW(2, '8BUI', 255, NULL)
]::addbandarg[]
) AS rast
) foo;
ST_VALUE(double precision) |ST_VALUE(double precision) |
----------------------------------------------------------------
1234.567 |255 |
总数目:1
summarystats¶
summarystats - 是一个复合数据类型,它是ST_SummaryStats和ST_SummaryStatsAgg函数返回的类型值。这种类型用于计算一个raster对象的指定波段集的统计值信息,通过提供语法和参数,可以计算相关统计信息,如摘要统计信息。
CREATE TYPE summarystats AS (
count int,
sum double precision,
mean double precision,
stddev double precision,
min double precision,
max double precision
);
aggcount¶
aggcount - 用于对指定维度数据进行计数,即对非空的单元格个数进行统计.
CREATE TYPE aggcount AS (
count bigint,
nband integer,
exclude_nodata_value boolean,
sample_percent double precision
);
reclassarg¶
reclassarg - 是一个复合类型,用于作为输入到 ST_Reclass 函数中,以定义重分类的行为。
CREATE TYPE reclassarg AS (
nband int,
reclassexpr text,
pixeltype text,
nodataval double precision
);
agg_samealignment¶
agg_samealignment - 是一个数据类型,用于处理与空间数据相关的聚合操作。
CREATE TYPE agg_samealignment AS (
refraster raster,
aligned boolean
);
unionarg¶
unionarg - 用于 ST_Union 函数的复合类型。它定义了要处理的波段和 UNION 操作的行为。
CREATE TYPE unionarg AS (
nband int,
uniontype text
);