1CREATE TABLE raster_world2raster (
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_world2raster 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_WorldToRasterCoord(rast, -2, -2)).*
51FROM raster_world2raster;
52SELECT
53	rid,
54	(ST_WorldToRasterCoord(rast, 0, 0)).*
55FROM raster_world2raster;
56SELECT
57	rid,
58	(ST_WorldToRasterCoord(rast, 1, -1)).*
59FROM raster_world2raster;
60SELECT
61	rid,
62	(ST_WorldToRasterCoord(rast, 1, 1)).*
63FROM raster_world2raster;
64SELECT
65	rid,
66	(ST_WorldToRasterCoord(rast, 2, 2)).*
67FROM raster_world2raster;
68
69SELECT
70	rid,
71	(ST_WorldToRasterCoord(rast, ST_MakePoint(-2, -2))).*
72FROM raster_world2raster;
73SELECT
74	rid,
75	(ST_WorldToRasterCoord(rast, ST_MakePoint(0, 0))).*
76FROM raster_world2raster;
77SELECT
78	rid,
79	(ST_WorldToRasterCoord(rast, ST_MakePoint(1, -1))).*
80FROM raster_world2raster;
81SELECT
82	rid,
83	(ST_WorldToRasterCoord(rast, ST_MakePoint(1, 1))).*
84FROM raster_world2raster;
85SELECT
86	rid,
87	(ST_WorldToRasterCoord(rast, ST_MakePoint(2, 2))).*
88FROM raster_world2raster;
89
90SELECT
91	rid,
92	ST_WorldToRasterCoordX(rast, -2, -2)
93FROM raster_world2raster;
94SELECT
95	rid,
96	ST_WorldToRasterCoordX(rast, 0, 0)
97FROM raster_world2raster;
98SELECT
99	rid,
100	ST_WorldToRasterCoordX(rast, 1, -1)
101FROM raster_world2raster;
102SELECT
103	rid,
104	ST_WorldToRasterCoordX(rast, 1, 1)
105FROM raster_world2raster;
106SELECT
107	rid,
108	ST_WorldToRasterCoordX(rast, 2, 2)
109FROM raster_world2raster;
110
111SELECT
112	rid,
113	ST_WorldToRasterCoordX(rast, ST_MakePoint(-2, -2))
114FROM raster_world2raster;
115
116SELECT
117	rid,
118	ST_WorldToRasterCoordX(rast, -2)
119FROM raster_world2raster;
120SELECT
121	rid,
122	ST_WorldToRasterCoordX(rast, 0)
123FROM raster_world2raster;
124SELECT
125	rid,
126	ST_WorldToRasterCoordX(rast, 1)
127FROM raster_world2raster;
128SELECT
129	rid,
130	ST_WorldToRasterCoordX(rast, 1)
131FROM raster_world2raster;
132SELECT
133	rid,
134	ST_WorldToRasterCoordX(rast, 2)
135FROM raster_world2raster;
136
137SELECT
138	rid,
139	ST_WorldToRasterCoordY(rast, -2, -2)
140FROM raster_world2raster;
141SELECT
142	rid,
143	ST_WorldToRasterCoordY(rast, 0, 0)
144FROM raster_world2raster;
145SELECT
146	rid,
147	ST_WorldToRasterCoordY(rast, 1, -1)
148FROM raster_world2raster;
149SELECT
150	rid,
151	ST_WorldToRasterCoordY(rast, 1, 1)
152FROM raster_world2raster;
153SELECT
154	rid,
155	ST_WorldToRasterCoordY(rast, 2, 2)
156FROM raster_world2raster;
157
158SELECT
159	rid,
160	ST_WorldToRasterCoordX(rast, ST_MakePoint(-2, -2))
161FROM raster_world2raster;
162
163SELECT
164	rid,
165	ST_WorldToRasterCoordY(rast, -2)
166FROM raster_world2raster;
167SELECT
168	rid,
169	ST_WorldToRasterCoordY(rast, 0)
170FROM raster_world2raster;
171SELECT
172	rid,
173	ST_WorldToRasterCoordY(rast, 1)
174FROM raster_world2raster;
175SELECT
176	rid,
177	ST_WorldToRasterCoordY(rast, 1)
178FROM raster_world2raster;
179SELECT
180	rid,
181	ST_WorldToRasterCoordY(rast, 2)
182FROM raster_world2raster;
183
184DROP TABLE raster_world2raster;
185