-
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathST_StarAdjustableRays
More file actions
22 lines (20 loc) · 931 Bytes
/
ST_StarAdjustableRays
File metadata and controls
22 lines (20 loc) · 931 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
DROP FUNCTION ST_StarAdjustableRays(
geom GEOMETRY,
radius1 float,
radius2 float,
number_rays integer)
CREATE OR REPLACE FUNCTION ST_StarAdjustableRays(
geom GEOMETRY,
radius1 float,
radius2 float,
number_rays integer)
RETURNS GEOMETRY AS
$BODY$
WITH
tbla AS (SELECT ROW_NUMBER() OVER () num, ST_Point(ST_X($1) + $2 * COSD(90 + i * 360/$4), ST_Y($1) + $2 * SIND(90 + i * 360/$4)) geom FROM generate_series(0, $4) AS s(i)),
tblb AS (SELECT ROW_NUMBER() OVER () num, ST_Point(ST_X($1) + $3 * COSD(90 + i * 360/$4), ST_Y($1) + $3 * SIND(90 + i * 360/$4)) geom FROM generate_series(0, $4) AS s(i)),
tblc AS (SELECT num, geom FROM (SELECT num, geom FROM tbla UNION SELECT num, geom FROM tblb) foo)
SELECT ST_Collect(geom) geom FROM (SELECT ST_MakeLine(geom) geom FROM tblc GROUP BY num ORDER BY num) foo;
$BODY$
LANGUAGE SQL
SELECT ST_SetSriD(ST_StarAdjustableRays(geom, 2.9, 3, 360),4326) geom FROM (SELECT ST_Point(0, 0) geom) foo