এখানে একটি সেট রিটার্নিং ফাংশন ST_CreateFishnet
যা বহুভুত জ্যামিতির 2D গ্রিড তৈরি করে:
CREATE OR REPLACE FUNCTION ST_CreateFishnet(
nrow integer, ncol integer,
xsize float8, ysize float8,
x0 float8 DEFAULT 0, y0 float8 DEFAULT 0,
OUT "row" integer, OUT col integer,
OUT geom geometry)
RETURNS SETOF record AS
$$
SELECT i + 1 AS row, j + 1 AS col, ST_Translate(cell, j * $3 + $5, i * $4 + $6) AS geom
FROM generate_series(0, $1 - 1) AS i,
generate_series(0, $2 - 1) AS j,
(
SELECT ('POLYGON((0 0, 0 '||$4||', '||$3||' '||$4||', '||$3||' 0,0 0))')::geometry AS cell
) AS foo;
$$ LANGUAGE sql IMMUTABLE STRICT;
যেখানে nrow
এবং ncol
সারি এবং কলামগুলির সংখ্যা xsize
এবং ysize
কক্ষের আকারের দৈর্ঘ্য এবং alচ্ছিক x0
এবং y0
নীচে-বাম কোণে স্থানাঙ্ক হয়।
নীচের বাম কোণে 1 থেকে শুরু হওয়া ফলাফল row
এবং col
সংখ্যাগুলি এবং geom
প্রতিটি ঘরের জন্য আয়তক্ষেত্রাকার বহুভুজ। উদাহরণস্বরূপ:
SELECT *
FROM ST_CreateFishnet(4, 6, 10, 10) AS cells;
row | col | geom
-----+-----+--------------------------------
1 | 1 | 0103000000010000000500000000...
2 | 1 | 0103000000010000000500000000...
3 | 1 | 0103000000010000000500000000...
4 | 1 | 0103000000010000000500000000...
1 | 2 | 0103000000010000000500000000...
2 | 2 | 0103000000010000000500000000...
...
3 | 6 | 0103000000010000000500000000...
4 | 6 | 0103000000010000000500000000...
(24 rows)
বা সম্পূর্ণ গ্রিডের জন্য একটি একক জ্যামিতি সংগ্রহ করতে:
SELECT ST_Collect(cells.geom)
FROM ST_CreateFishnet(4, 6, 10, 10) AS cells;
আপনি x0
/ y0
উত্স অফসেটগুলি যোগ করতে পারেন (এগুলি শূন্যে ডিফল্ট হয়েছে)।