Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
43
Task/Fractal-tree/PL-pgSQL/fractal-tree-1.sql
Normal file
43
Task/Fractal-tree/PL-pgSQL/fractal-tree-1.sql
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
drop table if exists my_temp_tree_table;
|
||||
|
||||
do $$
|
||||
declare
|
||||
_length numeric := 1;
|
||||
-- a little random
|
||||
_random_length_reduction_max numeric := 0.6;
|
||||
_fork_angle numeric := pi()/12;
|
||||
-- a little random
|
||||
_random_angle numeric := pi()/12;
|
||||
_depth numeric := 9 ;
|
||||
|
||||
begin
|
||||
create temporary table my_temp_tree_table as
|
||||
WITH RECURSIVE branch(azimuth, x1, y1, x2, y2, len, n) AS (
|
||||
VALUES (pi()/2, 0.0, 0.0, 0.0, _length, _length, _depth)
|
||||
UNION all
|
||||
select azimuth+a,
|
||||
x2, y2,
|
||||
round((x2+cos(azimuth+a)*len)::numeric, 2), round((y2+sin(azimuth+a)*len)::numeric, 2),
|
||||
(len*(_random_length_reduction_max+(random()*(1-_random_length_reduction_max))))::numeric,
|
||||
n-1
|
||||
FROM branch
|
||||
cross join (
|
||||
select ((-_fork_angle)+(_random_angle)*(random()-0.5)) a
|
||||
union
|
||||
select ((_fork_angle)+(_random_angle)*(random()-0.5)) a2
|
||||
) a
|
||||
WHERE n > 0
|
||||
)
|
||||
select x1, y1, x2, y2, 'LINESTRING('||x1||' '||y1||','||x2||' '||y2||')' as wkt from branch
|
||||
;
|
||||
end $$
|
||||
;
|
||||
|
||||
-- coordinates and WKT
|
||||
select * from my_temp_tree_table;
|
||||
|
||||
-- binary version (postgis) of each branch
|
||||
select ST_GeomFromEWKT('SRID=4326;'||wkt) geom from my_temp_tree_table;
|
||||
|
||||
-- a unique geometry
|
||||
select st_union(ST_GeomFromEWKT('SRID=4326;'||wkt)) geom from my_temp_tree_table;
|
||||
14
Task/Fractal-tree/PL-pgSQL/fractal-tree-2.sql
Normal file
14
Task/Fractal-tree/PL-pgSQL/fractal-tree-2.sql
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
WITH RECURSIVE noeuds(azimuth, x0, y0, x, y, len, n) AS (
|
||||
VALUES (pi()/2, 0::real, 0::real, 0::real, 10::real, 10::real, 9::int)
|
||||
UNION all
|
||||
select azimuth+a, x, y, (x+cos(azimuth+a)*len)::real, (y+sin(azimuth+a)*len)::real, (len/2)::real, n-1
|
||||
FROM noeuds
|
||||
cross join (select (-pi()/7)::real a union select (pi()/7)::real a2) a
|
||||
WHERE n > 0
|
||||
)
|
||||
, branche as (
|
||||
select '('||x0||' '||y0||','||x||' '||y||')' b
|
||||
from noeuds
|
||||
)
|
||||
select ST_GeomFromEWKT('SRID=4326;MULTILINESTRING('||string_agg(b, ',')||')') tree
|
||||
from branche
|
||||
Loading…
Add table
Add a link
Reference in a new issue