1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166
|
SET client_min_messages = NOTICE;
DROP TABLE IF EXISTS raster_grayscale_out;
CREATE TABLE raster_grayscale_out (
testid integer,
rid integer,
rast raster
);
DROP TABLE IF EXISTS raster_grayscale_in;
CREATE TABLE raster_grayscale_in (
rid integer,
rast raster
);
INSERT INTO raster_grayscale_in
SELECT
1 AS rid,
ST_SetValues(
ST_AddBand(
ST_MakeEmptyRaster(2, 2, 0, 0, 1, -1, 0, 0, 0),
1, '8BUI', 0, NULL
),
1, 1, 1, ARRAY[
[ 0, 128],
[ 254, 255]
]::double precision[]
) AS rast
UNION ALL
SELECT
2 AS rid,
ST_SetValues(
ST_AddBand(
ST_MakeEmptyRaster(2, 2, 0, 0, 1, -1, 0, 0, 0),
1, '8BSI', 0, NULL
),
1, 1, 1, ARRAY[
[ -128, 0],
[ 126, 127]
]::double precision[]
) AS rast
UNION ALL
SELECT
3 AS rid,
ST_SetValues(
ST_AddBand(
ST_MakeEmptyRaster(2, 2, 0, 0, 1, -1, 0, 0, 0),
1, '16BUI', 0, 0
),
1, 1, 1, ARRAY[
[ 0, 32768],
[ 65534, 65535]
]::double precision[]
) AS rast
UNION ALL
SELECT
4 AS rid,
ST_SetValues(
ST_AddBand(
ST_MakeEmptyRaster(2, 2, 0, 0, 1, -1, 0, 0, 0),
1, '16BSI', 0, -32768
),
1, 1, 1, ARRAY[
[ -32768, -32767],
[ 32766, 32767]
]::double precision[]
) AS rast
UNION ALL
SELECT
5 AS rid,
ST_SetValues(
ST_AddBand(
ST_MakeEmptyRaster(2, 3, 0, 0, 1, -1, 0, 0, 0),
1, '16BSI', 0, NULL
),
1, 1, 1, ARRAY[
[ -32768, -32767],
[ 0, 0],
[ 32766, 32767]
]::double precision[]
) AS rast
;
INSERT INTO raster_grayscale_out
SELECT
1,
rid,
ST_Grayscale(
rast,
1,
1,
1
)
FROM raster_grayscale_in
UNION ALL
SELECT
2,
rid,
ST_Grayscale(
ARRAY[
ROW(rast, 1)::rastbandarg,
ROW(rast, 1)::rastbandarg,
ROW(rast, 1)::rastbandarg
]::rastbandarg[]
)
FROM raster_grayscale_in
UNION ALL
SELECT
3,
rid,
ST_Grayscale(
ARRAY[
ROW(rast, 1)::rastbandarg,
ROW(rast, 1)::rastbandarg,
ROW(rast, 1)::rastbandarg,
ROW(rast, 1)::rastbandarg
]::rastbandarg[]
)
FROM raster_grayscale_in
ORDER BY rid
;
SELECT
testid,
rid,
(ST_DumpValues(rast)).*
FROM raster_grayscale_out
ORDER BY 1, 2, nband;
-- error because of insufficient bands
BEGIN;
SELECT
ST_Grayscale(
ARRAY[
ROW(rast, 1)::rastbandarg
]::rastbandarg[]
)
FROM raster_grayscale_in
ORDER BY rid
LIMIT 1;
ROLLBACK;
-- error because of no band at index
BEGIN;
SELECT
ST_Grayscale(rast)
FROM raster_grayscale_in
ORDER BY rid
LIMIT 1;
ROLLBACK;
-- error because of no band at index
BEGIN;
SELECT
ST_Grayscale(
ARRAY[
ROW(rast, 1)::rastbandarg,
ROW(rast, 2)::rastbandarg,
ROW(rast, 1)::rastbandarg
]::rastbandarg[]
)
FROM raster_grayscale_in
ORDER BY rid
LIMIT 1;
ROLLBACK;
DROP TABLE IF EXISTS raster_grayscale_in;
DROP TABLE IF EXISTS raster_grayscale_out;
|