ST_MapAlgebra (expression version) — 표현식 버전 - 입력 래스터 1개 또는 2개, 밴드 인덱스, 그리고 사용자 지정 SQL 표현식 1개 이상을 입력받아 밴드 1개를 가진 래스터를 반환합니다.
raster ST_MapAlgebra(
raster rast, integer nband, text pixeltype, text expression, double precision nodataval=NULL)
;
raster ST_MapAlgebra(
raster rast, text pixeltype, text expression, double precision nodataval=NULL)
;
raster ST_MapAlgebra(
raster rast1, integer nband1, raster rast2, integer nband2, text expression, text pixeltype=NULL, text extenttype=INTERSECTION, text nodata1expr=NULL, text nodata2expr=NULL, double precision nodatanodataval=NULL)
;
raster ST_MapAlgebra(
raster rast1, raster rast2, text expression, text pixeltype=NULL, text extenttype=INTERSECTION, text nodata1expr=NULL, text nodata2expr=NULL, double precision nodatanodataval=NULL)
;
표현식 버전 - 입력 래스터 1개 또는 2개, 밴드 인덱스, 그리고 사용자 지정 SQL 표현식 1개 이상을 입력받아 밴드 1개를 가진 래스터를 반환합니다.
2.1.0 버전부터 사용할 수 있습니다.
입력 래스터(rast
)에 대해 expression
이 정의하는 유효한 PostgreSQL 대수 연산을 적용해서 형성된, 밴드 1개를 가진 새 래스터를 생성합니다. nband
를 설정하지 않을 경우, 밴드 1로 가정합니다. 이 새 래스터는 원본 래스터와 동일한 지리참조, 너비 및 높이이지만, 밴드는 1개만 가질 것입니다.
pixeltype
을 설정할 경우, 새 래스터의 밴드가 해당 픽셀 유형이 될 것입니다. pixeltype
이 NULL일 경우, 새 래스터의 밴드는 입력 rast
의 밴드와 동일한 픽셀 유형이 될 것입니다.
expression
에 키워드를 쓸 수 있습니다.
[rast]
- 관심 픽셀의 픽셀 값
[rast.val]
- 관심 픽셀의 픽셀 값
[rast.x]
- 관심 픽셀의 1-기반 픽셀 열
[rast.y]
- 관심 픽셀의 1-기반 픽셀 행
입력 래스터 밴드 rast1
, (rast2
)에 대한 expression
이 정의하는 밴드 2개에 대해, 유효한 PostgreSQL 대수 연산을 적용해서 형성된, 밴드 1개를 가진 새 래스터를 생성합니다. band1
, band2
를 설정하지 않을 경우, 밴드 1로 가정합니다. 출력 래스터는 첫 번째 래스터가 정의하는 그리드 상에 (축척, 기울기 및 픽셀 모서리가) 정렬될 것입니다. extenttype
파라미터가 출력 래스터의 범위를 정의할 것입니다.
래스터 2개가 관련된 PostgreSQL 대수 표현식 및 픽셀들이 교차할 경우 픽셀 값을 정의할 PostgreSQL 정의 함수/연산자입니다. 예: (([rast1] + [rast2])/2.0)::integer
출력 래스터의 픽셀 유형입니다. 이 유형은 ST_BandPixelType 목록에 존재하는 유형 가운데 하나이거나, 생략되거나, NULL로 설정돼야만 합니다. 따로 설정하지 않거나 NULL로 설정하지 않으면, 첫 번째 래스터의 픽셀 유형을 기본값으로 삼을 것입니다.
출력 래스터의 범위 제어
INTERSECTION
- 새 래스터의 범위는 두 래스터의 교차 부분입니다. 기본값입니다.
UNION
- 새 래스터의 범위는 두 래스터를 통합한 범위입니다.
FIRST
- 새 래스터의 범위는 첫 번째 래스터의 범위와 동일합니다.
SECOND
- 새 래스터의 범위는 두 번째 래스터의 범위와 동일합니다.
rast1
의 픽셀들이 NODATA 값이고 공간적으로 상응하는 rast2
의 픽셀들이 값을 가지고 있을 때 어떤 것을 반환할지 정의하는 상수만, 또는 rast2
와만 관련된 대수 표현식입니다.
rast2
의 픽셀들이 NODATA 값이고 공간적으로 상응하는 rast1
의 픽셀들이 값을 가지고 있을 때 어떤 것을 반환할지 정의하는 상수만, 또는 rast1
과만 관련된 대수 표현식입니다.
공간적으로 상응하는 rast1
및 rast2
의 픽셀들이 모두 NODATA 값일 경우 반환하는 숫자 상수입니다.
expression
, nodata1expr
및 nodata2expr
에 키워드를 쓸 수 있습니다.
[rast1]
- rast1
에 있는 관심 픽셀의 픽셀 값
[rast1.val]
- rast1
에 있는 관심 픽셀의 픽셀 값
[rast1.x]
- rast1
에 있는 관심 픽셀의 1-기반 픽셀 열
[rast1.y]
- rast1
에 있는 관심 픽셀의 1-기반 픽셀 행
[rast2]
- rast2
에 있는 관심 픽셀의 픽셀 값
[rast2.val]
- rast2
에 있는 관심 픽셀의 픽셀 값
[rast2.x]
- rast2
에 있는 관심 픽셀의 1-기반 픽셀 열
[rast2.y]
- rast2
에 있는 관심 픽셀의 1-기반 픽셀 행
WITH foo AS ( SELECT ST_AddBand(ST_MakeEmptyRaster(10, 10, 0, 0, 1, 1, 0, 0, 0), '32BF'::text, 1, -1) AS rast ) SELECT ST_MapAlgebra(rast, 1, NULL, 'ceil([rast]*[rast.x]/[rast.y]+[rast.val])') FROM foo;
WITH foo AS ( SELECT 1 AS rid, ST_AddBand(ST_AddBand(ST_AddBand(ST_MakeEmptyRaster(2, 2, 0, 0, 1, -1, 0, 0, 0), 1, '16BUI', 1, 0), 2, '8BUI', 10, 0), 3, '32BUI'::text, 100, 0) AS rast UNION ALL SELECT 2 AS rid, ST_AddBand(ST_AddBand(ST_AddBand(ST_MakeEmptyRaster(2, 2, 0, 1, 1, -1, 0, 0, 0), 1, '16BUI', 2, 0), 2, '8BUI', 20, 0), 3, '32BUI'::text, 300, 0) AS rast ) SELECT ST_MapAlgebra( t1.rast, 2, t2.rast, 1, '([rast2] + [rast1.val]) / 2' ) AS rast FROM foo t1 CROSS JOIN foo t2 WHERE t1.rid = 1 AND t2.rid = 2;