1CREATE TABLE raster_raster2world (
2	rid integer,
3	rast raster
4);
5CREATE OR REPLACE FUNCTION make_test_raster(
6	rid integer,
7	width integer DEFAULT 2,
8	height integer DEFAULT 2,
9	ul_x double precision DEFAULT 0,
10	ul_y double precision DEFAULT 0,
11	skew_x double precision DEFAULT 0,
12	skew_y double precision DEFAULT 0,
13	initvalue double precision DEFAULT 1,
14	nodataval double precision DEFAULT 0
15)
16	RETURNS void
17	AS $$
18	DECLARE
19		x int;
20		y int;
21		rast raster;
22	BEGIN
23		rast := ST_MakeEmptyRaster(width, height, ul_x, ul_y, 1, 1, skew_x, skew_y, 0);
24		rast := ST_AddBand(rast, 1, '8BUI', initvalue, nodataval);
25
26		INSERT INTO raster_raster2world VALUES (rid, rast);
27
28		RETURN;
29	END;
30	$$ LANGUAGE 'plpgsql';
31
32-- no skew
33SELECT make_test_raster(0, 4, 4, -2, -2);
34SELECT make_test_raster(1, 2, 2, 0, 0, 0, 0, 2);
35SELECT make_test_raster(2, 2, 2, 1, -1, 0, 0, 3);
36SELECT make_test_raster(3, 2, 2, 1, 1, 0, 0, 4);
37SELECT make_test_raster(4, 2, 2, 2, 2, 0, 0, 5);
38
39-- skew
40SELECT make_test_raster(10, 4, 4, -2, -2, 1, -1);
41SELECT make_test_raster(11, 2, 2, 0, 0, 1, -1, 2);
42SELECT make_test_raster(12, 2, 2, 1, -1, 1, -1, 3);
43SELECT make_test_raster(13, 2, 2, 1, 1, 1, -1, 4);
44SELECT make_test_raster(14, 2, 2, 2, 2, 1, -1, 5);
45
46DROP FUNCTION make_test_raster(integer, integer, integer, double precision, double precision, double precision, double precision, double precision, double precision);
47
48SELECT
49	rid,
50	(ST_RasterToWorldCoord(rast, 1, 1)).*
51FROM raster_raster2world;
52SELECT
53	rid,
54	(ST_RasterToWorldCoord(rast, 1, 2)).*
55FROM raster_raster2world;
56SELECT
57	rid,
58	(ST_RasterToWorldCoord(rast, 2, 2)).*
59FROM raster_raster2world;
60SELECT
61	rid,
62	(ST_RasterToWorldCoord(rast, 0, 0)).*
63FROM raster_raster2world;
64SELECT
65	rid,
66	(ST_RasterToWorldCoord(rast, -1, 0)).*
67FROM raster_raster2world;
68
69SELECT
70	rid,
71	ST_RasterToWorldCoordX(rast, 1, 1)
72FROM raster_raster2world;
73SELECT
74	rid,
75	ST_RasterToWorldCoordX(rast, 1, 2)
76FROM raster_raster2world;
77SELECT
78	rid,
79	ST_RasterToWorldCoordX(rast, 2, 2)
80FROM raster_raster2world;
81SELECT
82	rid,
83	ST_RasterToWorldCoordX(rast, 0, 0)
84FROM raster_raster2world;
85SELECT
86	rid,
87	ST_RasterToWorldCoordX(rast, -1, 0)
88FROM raster_raster2world;
89
90SELECT
91	rid,
92	ST_RasterToWorldCoordX(rast, 1)
93FROM raster_raster2world;
94SELECT
95	rid,
96	ST_RasterToWorldCoordX(rast, 1)
97FROM raster_raster2world;
98SELECT
99	rid,
100	ST_RasterToWorldCoordX(rast, 2)
101FROM raster_raster2world;
102SELECT
103	rid,
104	ST_RasterToWorldCoordX(rast, 0)
105FROM raster_raster2world;
106SELECT
107	rid,
108	ST_RasterToWorldCoordX(rast, -1)
109FROM raster_raster2world;
110
111SELECT
112	rid,
113	ST_RasterToWorldCoordY(rast, 1, 1)
114FROM raster_raster2world;
115SELECT
116	rid,
117	ST_RasterToWorldCoordY(rast, 1, 2)
118FROM raster_raster2world;
119SELECT
120	rid,
121	ST_RasterToWorldCoordY(rast, 2, 2)
122FROM raster_raster2world;
123SELECT
124	rid,
125	ST_RasterToWorldCoordY(rast, 0, 0)
126FROM raster_raster2world;
127SELECT
128	rid,
129	ST_RasterToWorldCoordY(rast, -1, 0)
130FROM raster_raster2world;
131
132SELECT
133	rid,
134	ST_RasterToWorldCoordY(rast, 1)
135FROM raster_raster2world;
136SELECT
137	rid,
138	ST_RasterToWorldCoordY(rast, 1)
139FROM raster_raster2world;
140SELECT
141	rid,
142	ST_RasterToWorldCoordY(rast, 2)
143FROM raster_raster2world;
144SELECT
145	rid,
146	ST_RasterToWorldCoordY(rast, 0)
147FROM raster_raster2world;
148SELECT
149	rid,
150	ST_RasterToWorldCoordY(rast, -1)
151FROM raster_raster2world;
152
153DROP TABLE raster_raster2world;
154