From 5f339a01f79e78a854e77dfe151c408046b8c27b Mon Sep 17 00:00:00 2001 From: abelvm Date: Tue, 9 Aug 2016 12:09:19 -0400 Subject: [PATCH 1/7] recommit from postgresql repo --- .brackets.json | 3 + doc/14_densify.md | 35 +++++++++++ doc/15_tinmap.md | 36 +++++++++++ src/pg/sql/14_densify.sql | 67 ++++++++++++++++++++ src/pg/sql/15_tinmap.sql | 43 +++++++++++++ src/pg/test/expected/14_densify_test.out | 47 ++++++++++++++ src/pg/test/expected/15_tinmap_test.out | 80 ++++++++++++++++++++++++ src/pg/test/sql/14_densify_test.sql | 6 ++ src/pg/test/sql/15_tinmap_test.sql | 6 ++ 9 files changed, 323 insertions(+) create mode 100644 .brackets.json create mode 100644 doc/14_densify.md create mode 100644 doc/15_tinmap.md create mode 100644 src/pg/sql/14_densify.sql create mode 100644 src/pg/sql/15_tinmap.sql create mode 100644 src/pg/test/expected/14_densify_test.out create mode 100644 src/pg/test/expected/15_tinmap_test.out create mode 100644 src/pg/test/sql/14_densify_test.sql create mode 100644 src/pg/test/sql/15_tinmap_test.sql diff --git a/.brackets.json b/.brackets.json new file mode 100644 index 0000000..abceceb --- /dev/null +++ b/.brackets.json @@ -0,0 +1,3 @@ +{ + "sbruchmann.staticpreview.basepath": "/home/carto/Projects/crankshaft/" +} \ No newline at end of file diff --git a/doc/14_densify.md b/doc/14_densify.md new file mode 100644 index 0000000..2cec7e6 --- /dev/null +++ b/doc/14_densify.md @@ -0,0 +1,35 @@ +## Densify function + +Iterative densification of a set of scattered points using Delaunay triangulation. The new points are located at the centroids of the grid cells and have as assigned value the barycentric average value of the cell's vertex. + +### CDB_Densify(geomin geometry[], colin numeric[], iterations integer) + +#### Arguments + +| Name | Type | Description | +|------|------|-------------| +| geomin | geometry[] | Array of points geometries | +| colin | numeric[] | Array of points' values | +| iterations | integer | Number of iterations | + +### Returns + +Returns a table object + +| Name | Type | Description | +|------|------|-------------| +| geomout | geometry | Geometries of new dataset of points| +| colout | numeric | Values of points| + +#### Example Usage + +```sql +with data as ( + select + ARRAY[7.0,8.0,1.0,2.0,3.0,5.0,6.0,4.0] as colin, + ARRAY[ST_GeomFromText('POINT(2.1744 41.4036)'),ST_GeomFromText('POINT(2.1228 41.3809)'),ST_GeomFromText('POINT(2.1511 41.3742)'),ST_GeomFromText('POINT(2.1528 41.4136)'),ST_GeomFromText('POINT(2.165 41.3917)'),ST_GeomFromText('POINT(2.1498 41.3713)'),ST_GeomFromText('POINT(2.1533 41.3683)'),ST_GeomFromText('POINT(2.131386 41.413998)')] as geomin +) +select CDB_Densify(geomin, colin, 2) from data; +``` + + diff --git a/doc/15_tinmap.md b/doc/15_tinmap.md new file mode 100644 index 0000000..7bbd165 --- /dev/null +++ b/doc/15_tinmap.md @@ -0,0 +1,36 @@ +## TINMAP function + +Generates a fake contour map, in the form of a TIN map, from a set of scattered points.Depends on **CDB_Densify**. + +Its iterative nature let's the user smooth the final result as much as desired, but with a exponential time cost increase + +### CDB_TINmap(geomin geometry[], colin numeric[], iterations integer) + +#### Arguments + +| Name | Type | Description | +|------|------|-------------| +| geomin | geometry[] | Array of points geometries | +| colin | numeric[] | Array of points' values | +| iterations | integer | Number of iterations | + +### Returns + +Returns a table object + +| Name | Type | Description | +|------|------|-------------| +| geomout | geometry | Geometries of new dataset of polygons| +| colout | numeric | Values of each cell| + +#### Example Usage + +```sql +with data as ( + select + ARRAY[7.0,8.0,1.0,2.0,3.0,5.0,6.0,4.0] as colin, + ARRAY[ST_GeomFromText('POINT(2.1744 41.4036)'),ST_GeomFromText('POINT(2.1228 41.3809)'),ST_GeomFromText('POINT(2.1511 41.3742)'),ST_GeomFromText('POINT(2.1528 41.4136)'),ST_GeomFromText('POINT(2.165 41.3917)'),ST_GeomFromText('POINT(2.1498 41.3713)'),ST_GeomFromText('POINT(2.1533 41.3683)'),ST_GeomFromText('POINT(2.131386 41.413998)')] as geomin +) +select CDB_TINmap(geomin, colin, 2) from data; +``` + diff --git a/src/pg/sql/14_densify.sql b/src/pg/sql/14_densify.sql new file mode 100644 index 0000000..47a200e --- /dev/null +++ b/src/pg/sql/14_densify.sql @@ -0,0 +1,67 @@ +-- +-- Iterative densification of a set of points using Delaunay triangulation +-- the new points have as assigned value the average value of the 3 vertex (centroid) +-- +-- @param geomin - array of geometries (points) +-- +-- @param colin - array of numeric values in that points +-- +-- @param iterations - integer, number of iterations +-- +-- +-- Returns: TABLE(geomout geometry, colout numeric) +-- +-- +CREATE OR REPLACE FUNCTION CDB_Densify( + IN geomin geometry[], + IN colin numeric[], + IN iterations integer + ) +RETURNS TABLE(geomout geometry, colout numeric) AS $$ +DECLARE + geotemp geometry[]; + coltemp numeric[]; + i integer; + gs geometry[]; + g geometry; + vertex geometry[]; + va numeric; + vb numeric; + vc numeric; + center geometry; + centerval numeric; + tmp integer; +BEGIN + geotemp := geomin; + coltemp := colin; + FOR i IN 1..iterations + LOOP + -- generate TIN + WITH a as (SELECT unnest(geotemp) AS e), + b as (SELECT ST_DelaunayTriangles(ST_Collect(a.e),0.001, 0) AS t FROM a), + c as (SELECT (ST_Dump(t)).geom AS v FROM b) + SELECT array_agg(v) INTO gs FROM c; + -- loop cells + FOREACH g IN ARRAY gs + LOOP + -- append centroid + SELECT ST_Centroid(g) INTO center; + geotemp := array_append(geotemp, center); + -- retrieve the value of each vertex + WITH a AS (SELECT (ST_DumpPoints(g)).geom AS v) + SELECT array_agg(v) INTO vertex FROM a; + WITH a AS(SELECT unnest(geotemp) as geo, unnest(coltemp) as c) + SELECT c INTO va FROM a WHERE ST_Equals(geo, vertex[1]); + WITH a AS(SELECT unnest(geotemp) as geo, unnest(coltemp) as c) + SELECT c INTO vb FROM a WHERE ST_Equals(geo, vertex[2]); + WITH a AS(SELECT unnest(geotemp) as geo, unnest(coltemp) as c) + SELECT c INTO vc FROM a WHERE ST_Equals(geo, vertex[3]); + -- calc the value at the center + centerval := (va + vb + vc) / 3; + -- append the value + coltemp := array_append(coltemp, centerval); + END LOOP; + END LOOP; + RETURN QUERY SELECT unnest(geotemp ) as geomout, unnest(coltemp ) as colout; +END; +$$ language plpgsql IMMUTABLE; diff --git a/src/pg/sql/15_tinmap.sql b/src/pg/sql/15_tinmap.sql new file mode 100644 index 0000000..973eede --- /dev/null +++ b/src/pg/sql/15_tinmap.sql @@ -0,0 +1,43 @@ +CREATE OR REPLACE FUNCTION CDB_TINmap( + IN geomin geometry[], + IN colin numeric[], + IN iterations integer + ) +RETURNS TABLE(geomout geometry, colout numeric) AS $$ +DECLARE + p geometry[]; + vals numeric[]; + gs geometry[]; + g geometry; + vertex geometry[]; + centerval numeric; + va numeric; + vb numeric; + vc numeric; + coltemp numeric[]; +BEGIN + SELECT array_agg(dens.geomout), array_agg(dens.colout) INTO p, vals FROM CDB_Densify(geomin, colin, iterations) dens; + WITH a as (SELECT unnest(p) AS e), + b as (SELECT ST_DelaunayTriangles(ST_Collect(a.e),0.001, 0) AS t FROM a), + c as (SELECT (ST_Dump(t)).geom AS v FROM b) + SELECT array_agg(v) INTO gs FROM c; + FOREACH g IN ARRAY gs + LOOP + -- retrieve the vertex of each triangle + WITH a AS (SELECT (ST_DumpPoints(g)).geom AS v) + SELECT array_agg(v) INTO vertex FROM a; + -- retrieve the value of each vertex + WITH a AS(SELECT unnest(p) as geo, unnest(vals) as c) + SELECT c INTO va FROM a WHERE ST_Equals(geo, vertex[1]); + WITH a AS(SELECT unnest(p) as geo, unnest(vals) as c) + SELECT c INTO vb FROM a WHERE ST_Equals(geo, vertex[2]); + WITH a AS(SELECT unnest(p) as geo, unnest(vals) as c) + SELECT c INTO vc FROM a WHERE ST_Equals(geo, vertex[3]); + -- calc the value at the center + centerval := (va + vb + vc) / 3; + -- append the value + coltemp := array_append(coltemp, centerval); + END LOOP; + RETURN QUERY SELECT unnest(gs) as geomout, unnest(coltemp ) as colout; +END; +$$ language plpgsql IMMUTABLE; diff --git a/src/pg/test/expected/14_densify_test.out b/src/pg/test/expected/14_densify_test.out new file mode 100644 index 0000000..fef9228 --- /dev/null +++ b/src/pg/test/expected/14_densify_test.out @@ -0,0 +1,47 @@ + cdb_densify +----------------------------------------------------------------- + (01010000001361C3D32B6501403255302AA9B34440,7.0) + (01010000002497FF907EFB0040F085C954C1B04440,8.0) + (0101000000A167B3EA73350140E4141DC9E5AF4440,1.0) + (010100000062A1D634EF38014014D044D8F0B44440,2.0) + (010100000052B81E85EB510140EEEBC03923B24440,3.0) + (0101000000C286A757CA3201409D8026C286AF4440,5.0) + (01010000007DD0B359F5390140F38E537424AF4440,6.0) + (0101000000D237691A140D0140014EEFE2FDB44440,4.0) + (01010000003312B4DCAC14014047F8F1AAE1B14440,4.3333333333333333) + (010100000048C0FBBD27290140A9BBC5D646B34440,2.3333333333333333) + (01010000001DEBE2361A400140F79A0B4953B24440,2.0000000000000000) + (010100000098933D2F02500140115B676994B34440,4.0000000000000000) + (01010000004BA3DC90595001405C456C9DA5B14440,5.3333333333333333) + (0101000000D1FA8198714001404285107D64B04440,3.3333333333333333) + (01010000004AEA043411360140D2B687AA85AF4440,4.0000000000000000) + (0101000000CCA4736BBF2201402B8716D9CEAF4440,6.3333333333333333) + (0101000000832C1EF13E2101402609AF4A0FB04440,4.6666666666666667) + (010100000063A009D8BF090140BEEE38F68AB24440,5.4444444444444444) + (010100000019AE5D3CF8180140A5008D2162B34440,3.5555555555555555) + (01010000007E88BE590E250140EB9DA83067B44440,2.7777777777777778) + (0101000000C05105B65D3B014044A2D0B2EEB34440,2.7777777777777778) + (010100000005329D125F4F01401C8049790FB44440,4.3333333333333333) + (010100000054E45F2DB3570140BBDE724420B34440,4.6666666666666667) + (0101000000E53EEA4DD05701407FD7C9557BB24440,5.1111111111111111) + (01010000004A9CC694D34F01402B63A5BE7BB14440,6.1111111111111111) + (0101000000DD24068195430140317345DA64B04440,4.8888888888888889) + (010100000033E768B7D23A014002994E89AFAF4440,4.4444444444444444) + (010100000083C0CAA145360140CAEC55A065AF4440,5.0000000000000000) + (010100000004549A09D52F01403E3230057EAF4440,5.7777777777777778) + (010100000024040D72661D0140B0DEBBE0E6AF4440,6.7777777777777778) + (01010000007CCD85A42915014017B22F2835B04440,6.3333333333333333) + (0101000000F5F145CA781001401F2DCE18E6B04440,5.6666666666666667) + (0101000000F10DE756572701402134E4146CB14440,3.6666666666666667) + (01010000008894DB45FA290140F8C4EB987EB24440,2.8888888888888889) + (0101000000AABF5E61C13D0140E6E512830FB34440,2.7777777777777778) + (0101000000581215F9574B0140FDF5BB4EAEB24440,3.0000000000000000) + (0101000000EA6C9F19754B0140C0EE126009B24440,3.4444444444444444) + (01010000001383C0CAA145014088CC827674B14440,3.5555555555555555) + (0101000000D0B02B40EE350140C90D9905EDB04440,3.3333333333333333) + (010100000051DA1B7C613201406F36F4DA1DB04440,3.0000000000000000) + (0101000000EA6E133D52390140FD1AE7FAEFAF4440,2.7777777777777778) + (01010000003A487527C5340140C76EEE11A6AF4440,3.3333333333333333) + (0101000000BADB448F542E01403AB4C876BEAF4440,4.1111111111111111) + (0101000000FB12176D7B280140BDE1A0F9EBAF4440,4.0000000000000000) +(44 rows) diff --git a/src/pg/test/expected/15_tinmap_test.out b/src/pg/test/expected/15_tinmap_test.out new file mode 100644 index 0000000..e11e28c --- /dev/null +++ b/src/pg/test/expected/15_tinmap_test.out @@ -0,0 +1,80 @@ + cdb_tinmap +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + (01030000000100000004000000D237691A140D0140014EEFE2FDB444402497FF907EFB0040F085C954C1B0444063A009D8BF090140BEEE38F68AB24440D237691A140D0140014EEFE2FDB44440,5.8148148148148148) + (01030000000100000004000000D237691A140D0140014EEFE2FDB4444063A009D8BF090140BEEE38F68AB2444019AE5D3CF8180140A5008D2162B34440D237691A140D0140014EEFE2FDB44440,4.3333333333333333) + (01030000000100000004000000D237691A140D0140014EEFE2FDB4444019AE5D3CF8180140A5008D2162B344407E88BE590E250140EB9DA83067B44440D237691A140D0140014EEFE2FDB44440,3.4444444444444444) + (01030000000100000004000000D237691A140D0140014EEFE2FDB444407E88BE590E250140EB9DA83067B4444062A1D634EF38014014D044D8F0B44440D237691A140D0140014EEFE2FDB44440,2.9259259259259259) + (0103000000010000000400000062A1D634EF38014014D044D8F0B444407E88BE590E250140EB9DA83067B44440C05105B65D3B014044A2D0B2EEB3444062A1D634EF38014014D044D8F0B44440,2.5185185185185185) + (0103000000010000000400000062A1D634EF38014014D044D8F0B44440C05105B65D3B014044A2D0B2EEB3444005329D125F4F01401C8049790FB4444062A1D634EF38014014D044D8F0B44440,3.0370370370370370) + (0103000000010000000400000062A1D634EF38014014D044D8F0B4444005329D125F4F01401C8049790FB444401361C3D32B6501403255302AA9B3444062A1D634EF38014014D044D8F0B44440,4.4444444444444444) + (010300000001000000040000001361C3D32B6501403255302AA9B3444005329D125F4F01401C8049790FB4444098933D2F02500140115B676994B344401361C3D32B6501403255302AA9B34440,5.1111111111111111) + (010300000001000000040000001361C3D32B6501403255302AA9B3444098933D2F02500140115B676994B3444054E45F2DB3570140BBDE724420B344401361C3D32B6501403255302AA9B34440,5.2222222222222222) + (010300000001000000040000001361C3D32B6501403255302AA9B3444054E45F2DB3570140BBDE724420B34440E53EEA4DD05701407FD7C9557BB244401361C3D32B6501403255302AA9B34440,5.5925925925925926) + (010300000001000000040000001361C3D32B6501403255302AA9B34440E53EEA4DD05701407FD7C9557BB244404A9CC694D34F01402B63A5BE7BB144401361C3D32B6501403255302AA9B34440,6.0740740740740741) + (010300000001000000040000007DD0B359F5390140F38E537424AF44404A9CC694D34F01402B63A5BE7BB14440DD24068195430140317345DA64B044407DD0B359F5390140F38E537424AF4440,5.6666666666666667) + (010300000001000000040000007DD0B359F5390140F38E537424AF4440DD24068195430140317345DA64B0444033E768B7D23A014002994E89AFAF44407DD0B359F5390140F38E537424AF4440,5.1111111111111111) + (010300000001000000040000007DD0B359F5390140F38E537424AF444033E768B7D23A014002994E89AFAF44404AEA043411360140D2B687AA85AF44407DD0B359F5390140F38E537424AF4440,4.8148148148148148) + (010300000001000000040000007DD0B359F5390140F38E537424AF44404AEA043411360140D2B687AA85AF4440C286A757CA3201409D8026C286AF44407DD0B359F5390140F38E537424AF4440,5.0000000000000000) + (010300000001000000040000007DD0B359F5390140F38E537424AF4440C286A757CA3201409D8026C286AF444004549A09D52F01403E3230057EAF44407DD0B359F5390140F38E537424AF4440,5.5925925925925926) + (010300000001000000040000007DD0B359F5390140F38E537424AF444004549A09D52F01403E3230057EAF4440CCA4736BBF2201402B8716D9CEAF44407DD0B359F5390140F38E537424AF4440,6.0370370370370370) + (010300000001000000040000007DD0B359F5390140F38E537424AF4440CCA4736BBF2201402B8716D9CEAF444024040D72661D0140B0DEBBE0E6AF44407DD0B359F5390140F38E537424AF4440,6.3703703703703704) + (0103000000010000000400000024040D72661D0140B0DEBBE0E6AF4440CCA4736BBF2201402B8716D9CEAF4440832C1EF13E2101402609AF4A0FB0444024040D72661D0140B0DEBBE0E6AF4440,5.9259259259259259) + (0103000000010000000400000024040D72661D0140B0DEBBE0E6AF4440832C1EF13E2101402609AF4A0FB044407CCD85A42915014017B22F2835B0444024040D72661D0140B0DEBBE0E6AF4440,5.9259259259259259) + (0103000000010000000400000024040D72661D0140B0DEBBE0E6AF44407CCD85A42915014017B22F2835B044402497FF907EFB0040F085C954C1B0444024040D72661D0140B0DEBBE0E6AF4440,7.0370370370370370) + (010300000001000000040000002497FF907EFB0040F085C954C1B044407CCD85A42915014017B22F2835B04440F5F145CA781001401F2DCE18E6B044402497FF907EFB0040F085C954C1B04440,6.6666666666666667) + (010300000001000000040000002497FF907EFB0040F085C954C1B04440F5F145CA781001401F2DCE18E6B0444063A009D8BF090140BEEE38F68AB244402497FF907EFB0040F085C954C1B04440,6.3703703703703704) + (0103000000010000000400000063A009D8BF090140BEEE38F68AB24440F5F145CA781001401F2DCE18E6B044403312B4DCAC14014047F8F1AAE1B1444063A009D8BF090140BEEE38F68AB24440,5.1481481481481481) + (0103000000010000000400000063A009D8BF090140BEEE38F68AB244403312B4DCAC14014047F8F1AAE1B1444019AE5D3CF8180140A5008D2162B3444063A009D8BF090140BEEE38F68AB24440,4.4444444444444444) + (0103000000010000000400000019AE5D3CF8180140A5008D2162B344403312B4DCAC14014047F8F1AAE1B144408894DB45FA290140F8C4EB987EB2444019AE5D3CF8180140A5008D2162B34440,3.5925925925925926) + (0103000000010000000400000019AE5D3CF8180140A5008D2162B344408894DB45FA290140F8C4EB987EB2444048C0FBBD27290140A9BBC5D646B3444019AE5D3CF8180140A5008D2162B34440,2.9259259259259259) + (0103000000010000000400000019AE5D3CF8180140A5008D2162B3444048C0FBBD27290140A9BBC5D646B344407E88BE590E250140EB9DA83067B4444019AE5D3CF8180140A5008D2162B34440,2.8888888888888889) + (010300000001000000040000007E88BE590E250140EB9DA83067B4444048C0FBBD27290140A9BBC5D646B34440C05105B65D3B014044A2D0B2EEB344407E88BE590E250140EB9DA83067B44440,2.6296296296296296) + (01030000000100000004000000C05105B65D3B014044A2D0B2EEB3444048C0FBBD27290140A9BBC5D646B34440AABF5E61C13D0140E6E512830FB34440C05105B65D3B014044A2D0B2EEB34440,2.6296296296296296) + (01030000000100000004000000C05105B65D3B014044A2D0B2EEB34440AABF5E61C13D0140E6E512830FB3444098933D2F02500140115B676994B34440C05105B65D3B014044A2D0B2EEB34440,3.1851851851851852) + (01030000000100000004000000C05105B65D3B014044A2D0B2EEB3444098933D2F02500140115B676994B3444005329D125F4F01401C8049790FB44440C05105B65D3B014044A2D0B2EEB34440,3.7037037037037037) + (0103000000010000000400000098933D2F02500140115B676994B34440AABF5E61C13D0140E6E512830FB34440581215F9574B0140FDF5BB4EAEB2444098933D2F02500140115B676994B34440,3.2592592592592593) + (0103000000010000000400000098933D2F02500140115B676994B34440581215F9574B0140FDF5BB4EAEB2444054E45F2DB3570140BBDE724420B3444098933D2F02500140115B676994B34440,3.8888888888888889) + (0103000000010000000400000054E45F2DB3570140BBDE724420B34440581215F9574B0140FDF5BB4EAEB24440E53EEA4DD05701407FD7C9557BB2444054E45F2DB3570140BBDE724420B34440,4.2592592592592593) + (01030000000100000004000000E53EEA4DD05701407FD7C9557BB24440581215F9574B0140FDF5BB4EAEB2444052B81E85EB510140EEEBC03923B24440E53EEA4DD05701407FD7C9557BB24440,3.7037037037037037) + (01030000000100000004000000E53EEA4DD05701407FD7C9557BB2444052B81E85EB510140EEEBC03923B244404BA3DC90595001405C456C9DA5B14440E53EEA4DD05701407FD7C9557BB24440,4.4814814814814815) + (01030000000100000004000000E53EEA4DD05701407FD7C9557BB244404BA3DC90595001405C456C9DA5B144404A9CC694D34F01402B63A5BE7BB14440E53EEA4DD05701407FD7C9557BB24440,5.5185185185185185) + (010300000001000000040000004A9CC694D34F01402B63A5BE7BB144404BA3DC90595001405C456C9DA5B144401383C0CAA145014088CC827674B144404A9CC694D34F01402B63A5BE7BB14440,5.0000000000000000) + (010300000001000000040000004A9CC694D34F01402B63A5BE7BB144401383C0CAA145014088CC827674B14440DD24068195430140317345DA64B044404A9CC694D34F01402B63A5BE7BB14440,4.8518518518518518) + (01030000000100000004000000DD24068195430140317345DA64B044401383C0CAA145014088CC827674B14440D1FA8198714001404285107D64B04440DD24068195430140317345DA64B04440,3.9259259259259259) + (01030000000100000004000000DD24068195430140317345DA64B04440D1FA8198714001404285107D64B0444033E768B7D23A014002994E89AFAF4440DD24068195430140317345DA64B04440,4.2222222222222222) + (0103000000010000000400000033E768B7D23A014002994E89AFAF4440D1FA8198714001404285107D64B04440EA6E133D52390140FD1AE7FAEFAF444033E768B7D23A014002994E89AFAF4440,3.5185185185185185) + (0103000000010000000400000033E768B7D23A014002994E89AFAF4440EA6E133D52390140FD1AE7FAEFAF4440A167B3EA73350140E4141DC9E5AF444033E768B7D23A014002994E89AFAF4440,2.7407407407407407) + (0103000000010000000400000033E768B7D23A014002994E89AFAF4440A167B3EA73350140E4141DC9E5AF44403A487527C5340140C76EEE11A6AF444033E768B7D23A014002994E89AFAF4440,2.9259259259259259) + (0103000000010000000400000033E768B7D23A014002994E89AFAF44403A487527C5340140C76EEE11A6AF44404AEA043411360140D2B687AA85AF444033E768B7D23A014002994E89AFAF4440,3.9259259259259259) + (010300000001000000040000004AEA043411360140D2B687AA85AF44403A487527C5340140C76EEE11A6AF4440C286A757CA3201409D8026C286AF44404AEA043411360140D2B687AA85AF4440,4.1111111111111111) + (01030000000100000004000000C286A757CA3201409D8026C286AF44403A487527C5340140C76EEE11A6AF4440BADB448F542E01403AB4C876BEAF4440C286A757CA3201409D8026C286AF4440,4.1481481481481481) + (01030000000100000004000000C286A757CA3201409D8026C286AF4440BADB448F542E01403AB4C876BEAF444004549A09D52F01403E3230057EAF4440C286A757CA3201409D8026C286AF4440,4.9629629629629630) + (0103000000010000000400000004549A09D52F01403E3230057EAF4440BADB448F542E01403AB4C876BEAF4440FB12176D7B280140BDE1A0F9EBAF444004549A09D52F01403E3230057EAF4440,4.6296296296296296) + (0103000000010000000400000004549A09D52F01403E3230057EAF4440FB12176D7B280140BDE1A0F9EBAF4440CCA4736BBF2201402B8716D9CEAF444004549A09D52F01403E3230057EAF4440,5.3703703703703704) + (01030000000100000004000000CCA4736BBF2201402B8716D9CEAF4440FB12176D7B280140BDE1A0F9EBAF4440832C1EF13E2101402609AF4A0FB04440CCA4736BBF2201402B8716D9CEAF4440,5.0000000000000000) + (01030000000100000004000000832C1EF13E2101402609AF4A0FB04440FB12176D7B280140BDE1A0F9EBAF4440F10DE756572701402134E4146CB14440832C1EF13E2101402609AF4A0FB04440,4.1111111111111111) + (01030000000100000004000000832C1EF13E2101402609AF4A0FB04440F10DE756572701402134E4146CB14440F5F145CA781001401F2DCE18E6B04440832C1EF13E2101402609AF4A0FB04440,4.6666666666666667) + (01030000000100000004000000832C1EF13E2101402609AF4A0FB04440F5F145CA781001401F2DCE18E6B044407CCD85A42915014017B22F2835B04440832C1EF13E2101402609AF4A0FB04440,5.5555555555555556) + (01030000000100000004000000F5F145CA781001401F2DCE18E6B04440F10DE756572701402134E4146CB144403312B4DCAC14014047F8F1AAE1B14440F5F145CA781001401F2DCE18E6B04440,4.5555555555555556) + (010300000001000000040000003312B4DCAC14014047F8F1AAE1B14440F10DE756572701402134E4146CB144408894DB45FA290140F8C4EB987EB244403312B4DCAC14014047F8F1AAE1B14440,3.6296296296296296) + (010300000001000000040000008894DB45FA290140F8C4EB987EB24440F10DE756572701402134E4146CB144401DEBE2361A400140F79A0B4953B244408894DB45FA290140F8C4EB987EB24440,2.8518518518518519) + (010300000001000000040000008894DB45FA290140F8C4EB987EB244401DEBE2361A400140F79A0B4953B24440AABF5E61C13D0140E6E512830FB344408894DB45FA290140F8C4EB987EB24440,2.5555555555555556) + (010300000001000000040000008894DB45FA290140F8C4EB987EB24440AABF5E61C13D0140E6E512830FB3444048C0FBBD27290140A9BBC5D646B344408894DB45FA290140F8C4EB987EB24440,2.6666666666666667) + (01030000000100000004000000AABF5E61C13D0140E6E512830FB344401DEBE2361A400140F79A0B4953B24440581215F9574B0140FDF5BB4EAEB24440AABF5E61C13D0140E6E512830FB34440,2.5925925925925926) + (01030000000100000004000000581215F9574B0140FDF5BB4EAEB244401DEBE2361A400140F79A0B4953B24440EA6C9F19754B0140C0EE126009B24440581215F9574B0140FDF5BB4EAEB24440,2.8148148148148148) + (01030000000100000004000000581215F9574B0140FDF5BB4EAEB24440EA6C9F19754B0140C0EE126009B2444052B81E85EB510140EEEBC03923B24440581215F9574B0140FDF5BB4EAEB24440,3.1481481481481481) + (0103000000010000000400000052B81E85EB510140EEEBC03923B24440EA6C9F19754B0140C0EE126009B244404BA3DC90595001405C456C9DA5B1444052B81E85EB510140EEEBC03923B24440,3.9259259259259259) + (010300000001000000040000004BA3DC90595001405C456C9DA5B14440EA6C9F19754B0140C0EE126009B244401383C0CAA145014088CC827674B144404BA3DC90595001405C456C9DA5B14440,4.1111111111111111) + (010300000001000000040000001383C0CAA145014088CC827674B14440EA6C9F19754B0140C0EE126009B244401DEBE2361A400140F79A0B4953B244401383C0CAA145014088CC827674B14440,3.0000000000000000) + (010300000001000000040000001383C0CAA145014088CC827674B144401DEBE2361A400140F79A0B4953B24440D0B02B40EE350140C90D9905EDB044401383C0CAA145014088CC827674B14440,2.9629629629629629) + (010300000001000000040000001383C0CAA145014088CC827674B14440D0B02B40EE350140C90D9905EDB04440D1FA8198714001404285107D64B044401383C0CAA145014088CC827674B14440,3.4074074074074074) + (01030000000100000004000000D1FA8198714001404285107D64B04440D0B02B40EE350140C90D9905EDB0444051DA1B7C613201406F36F4DA1DB04440D1FA8198714001404285107D64B04440,3.2222222222222222) + (01030000000100000004000000D1FA8198714001404285107D64B0444051DA1B7C613201406F36F4DA1DB04440EA6E133D52390140FD1AE7FAEFAF4440D1FA8198714001404285107D64B04440,3.0370370370370370) + (01030000000100000004000000EA6E133D52390140FD1AE7FAEFAF444051DA1B7C613201406F36F4DA1DB04440A167B3EA73350140E4141DC9E5AF4440EA6E133D52390140FD1AE7FAEFAF4440,2.2592592592592593) + (01030000000100000004000000A167B3EA73350140E4141DC9E5AF444051DA1B7C613201406F36F4DA1DB04440BADB448F542E01403AB4C876BEAF4440A167B3EA73350140E4141DC9E5AF4440,2.7037037037037037) + (01030000000100000004000000A167B3EA73350140E4141DC9E5AF4440BADB448F542E01403AB4C876BEAF44403A487527C5340140C76EEE11A6AF4440A167B3EA73350140E4141DC9E5AF4440,2.8148148148148148) + (01030000000100000004000000BADB448F542E01403AB4C876BEAF444051DA1B7C613201406F36F4DA1DB04440FB12176D7B280140BDE1A0F9EBAF4440BADB448F542E01403AB4C876BEAF4440,3.7037037037037037) + (01030000000100000004000000FB12176D7B280140BDE1A0F9EBAF444051DA1B7C613201406F36F4DA1DB04440F10DE756572701402134E4146CB14440FB12176D7B280140BDE1A0F9EBAF4440,3.5555555555555556) + (01030000000100000004000000F10DE756572701402134E4146CB1444051DA1B7C613201406F36F4DA1DB04440D0B02B40EE350140C90D9905EDB04440F10DE756572701402134E4146CB14440,3.3333333333333333) + (01030000000100000004000000F10DE756572701402134E4146CB14440D0B02B40EE350140C90D9905EDB044401DEBE2361A400140F79A0B4953B24440F10DE756572701402134E4146CB14440,3.0000000000000000) +(77 rows) diff --git a/src/pg/test/sql/14_densify_test.sql b/src/pg/test/sql/14_densify_test.sql new file mode 100644 index 0000000..3684295 --- /dev/null +++ b/src/pg/test/sql/14_densify_test.sql @@ -0,0 +1,6 @@ +with data as ( + select + ARRAY[7.0,8.0,1.0,2.0,3.0,5.0,6.0,4.0] as colin, + ARRAY[ST_GeomFromText('POINT(2.1744 41.4036)'),ST_GeomFromText('POINT(2.1228 41.3809)'),ST_GeomFromText('POINT(2.1511 41.3742)'),ST_GeomFromText('POINT(2.1528 41.4136)'),ST_GeomFromText('POINT(2.165 41.3917)'),ST_GeomFromText('POINT(2.1498 41.3713)'),ST_GeomFromText('POINT(2.1533 41.3683)'),ST_GeomFromText('POINT(2.131386 41.413998)')] as geomin +) +select CDB_Densify(geomin, colin, 2) from data; diff --git a/src/pg/test/sql/15_tinmap_test.sql b/src/pg/test/sql/15_tinmap_test.sql new file mode 100644 index 0000000..9393a4c --- /dev/null +++ b/src/pg/test/sql/15_tinmap_test.sql @@ -0,0 +1,6 @@ +with data as ( + select + ARRAY[7.0,8.0,1.0,2.0,3.0,5.0,6.0,4.0] as colin, + ARRAY[ST_GeomFromText('POINT(2.1744 41.4036)'),ST_GeomFromText('POINT(2.1228 41.3809)'),ST_GeomFromText('POINT(2.1511 41.3742)'),ST_GeomFromText('POINT(2.1528 41.4136)'),ST_GeomFromText('POINT(2.165 41.3917)'),ST_GeomFromText('POINT(2.1498 41.3713)'),ST_GeomFromText('POINT(2.1533 41.3683)'),ST_GeomFromText('POINT(2.131386 41.413998)')] as geomin +) +select CDB_TINmap(geomin, colin, 2) from data; From 358202d324e1deef8f0714f896ff7226257b4b73 Mon Sep 17 00:00:00 2001 From: abelvm Date: Tue, 9 Aug 2016 13:03:24 -0400 Subject: [PATCH 2/7] check tests --- src/pg/sql/15_tinmap.sql | 2 +- src/pg/test/sql/14_densify_test.sql | 2 +- src/pg/test/sql/15_tinmap_test.sql | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pg/sql/15_tinmap.sql b/src/pg/sql/15_tinmap.sql index 973eede..493c9cf 100644 --- a/src/pg/sql/15_tinmap.sql +++ b/src/pg/sql/15_tinmap.sql @@ -16,7 +16,7 @@ DECLARE vc numeric; coltemp numeric[]; BEGIN - SELECT array_agg(dens.geomout), array_agg(dens.colout) INTO p, vals FROM CDB_Densify(geomin, colin, iterations) dens; + SELECT array_agg(dens.geomout), array_agg(dens.colout) INTO p, vals FROM cdb_crankshaft.CDB_Densify(geomin, colin, iterations) dens; WITH a as (SELECT unnest(p) AS e), b as (SELECT ST_DelaunayTriangles(ST_Collect(a.e),0.001, 0) AS t FROM a), c as (SELECT (ST_Dump(t)).geom AS v FROM b) diff --git a/src/pg/test/sql/14_densify_test.sql b/src/pg/test/sql/14_densify_test.sql index 3684295..ea72de4 100644 --- a/src/pg/test/sql/14_densify_test.sql +++ b/src/pg/test/sql/14_densify_test.sql @@ -3,4 +3,4 @@ with data as ( ARRAY[7.0,8.0,1.0,2.0,3.0,5.0,6.0,4.0] as colin, ARRAY[ST_GeomFromText('POINT(2.1744 41.4036)'),ST_GeomFromText('POINT(2.1228 41.3809)'),ST_GeomFromText('POINT(2.1511 41.3742)'),ST_GeomFromText('POINT(2.1528 41.4136)'),ST_GeomFromText('POINT(2.165 41.3917)'),ST_GeomFromText('POINT(2.1498 41.3713)'),ST_GeomFromText('POINT(2.1533 41.3683)'),ST_GeomFromText('POINT(2.131386 41.413998)')] as geomin ) -select CDB_Densify(geomin, colin, 2) from data; +select cdb_crankshaft.CDB_Densify(geomin, colin, 2) from data; diff --git a/src/pg/test/sql/15_tinmap_test.sql b/src/pg/test/sql/15_tinmap_test.sql index 9393a4c..3db265b 100644 --- a/src/pg/test/sql/15_tinmap_test.sql +++ b/src/pg/test/sql/15_tinmap_test.sql @@ -3,4 +3,4 @@ with data as ( ARRAY[7.0,8.0,1.0,2.0,3.0,5.0,6.0,4.0] as colin, ARRAY[ST_GeomFromText('POINT(2.1744 41.4036)'),ST_GeomFromText('POINT(2.1228 41.3809)'),ST_GeomFromText('POINT(2.1511 41.3742)'),ST_GeomFromText('POINT(2.1528 41.4136)'),ST_GeomFromText('POINT(2.165 41.3917)'),ST_GeomFromText('POINT(2.1498 41.3713)'),ST_GeomFromText('POINT(2.1533 41.3683)'),ST_GeomFromText('POINT(2.131386 41.413998)')] as geomin ) -select CDB_TINmap(geomin, colin, 2) from data; +select cdb_crankshaft.CDB_TINmap(geomin, colin, 2) from data; From 2d8d5e8c2ea91e862bebb67eda518f87358e2b26 Mon Sep 17 00:00:00 2001 From: abelvm Date: Tue, 9 Aug 2016 14:09:45 -0400 Subject: [PATCH 3/7] check tests --- src/pg/test/sql/07_gravity_test.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pg/test/sql/07_gravity_test.sql b/src/pg/test/sql/07_gravity_test.sql index a86bb23..e6a9301 100644 --- a/src/pg/test/sql/07_gravity_test.sql +++ b/src/pg/test/sql/07_gravity_test.sql @@ -18,4 +18,4 @@ SELECT FROM t, s, - CDB_Gravity(t.id, t.g, t.w, s.id, s.g, s.p, 2, 100000, 3) g; + cdb_crankshaft.CDB_Gravity(t.id, t.g, t.w, s.id, s.g, s.p, 2, 100000, 3) g; From d88c967bb72ee885edf93e6938a1a57bd7e76d36 Mon Sep 17 00:00:00 2001 From: abelvm Date: Wed, 10 Aug 2016 12:13:55 -0400 Subject: [PATCH 4/7] fixed tests --- src/pg/test/expected/14_densify_test.out | 3 +++ src/pg/test/expected/15_tinmap_test.out | 3 +++ src/pg/test/sql/14_densify_test.sql | 3 +++ src/pg/test/sql/15_tinmap_test.sql | 3 +++ 4 files changed, 12 insertions(+) diff --git a/src/pg/test/expected/14_densify_test.out b/src/pg/test/expected/14_densify_test.out index fef9228..ad26b55 100644 --- a/src/pg/test/expected/14_densify_test.out +++ b/src/pg/test/expected/14_densify_test.out @@ -1,3 +1,6 @@ +SET client_min_messages TO WARNING; +\set ECHO none + cdb_densify ----------------------------------------------------------------- (01010000001361C3D32B6501403255302AA9B34440,7.0) diff --git a/src/pg/test/expected/15_tinmap_test.out b/src/pg/test/expected/15_tinmap_test.out index e11e28c..8396078 100644 --- a/src/pg/test/expected/15_tinmap_test.out +++ b/src/pg/test/expected/15_tinmap_test.out @@ -1,3 +1,6 @@ +SET client_min_messages TO WARNING; +\set ECHO none + cdb_tinmap --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- (01030000000100000004000000D237691A140D0140014EEFE2FDB444402497FF907EFB0040F085C954C1B0444063A009D8BF090140BEEE38F68AB24440D237691A140D0140014EEFE2FDB44440,5.8148148148148148) diff --git a/src/pg/test/sql/14_densify_test.sql b/src/pg/test/sql/14_densify_test.sql index ea72de4..9b716f8 100644 --- a/src/pg/test/sql/14_densify_test.sql +++ b/src/pg/test/sql/14_densify_test.sql @@ -1,3 +1,6 @@ +SET client_min_messages TO WARNING; +\set ECHO none + with data as ( select ARRAY[7.0,8.0,1.0,2.0,3.0,5.0,6.0,4.0] as colin, diff --git a/src/pg/test/sql/15_tinmap_test.sql b/src/pg/test/sql/15_tinmap_test.sql index 3db265b..dcb7fe4 100644 --- a/src/pg/test/sql/15_tinmap_test.sql +++ b/src/pg/test/sql/15_tinmap_test.sql @@ -1,3 +1,6 @@ +SET client_min_messages TO WARNING; +\set ECHO none + with data as ( select ARRAY[7.0,8.0,1.0,2.0,3.0,5.0,6.0,4.0] as colin, From 4986743ce94b323d14b0df603b674ae498f3947b Mon Sep 17 00:00:00 2001 From: abelvm Date: Wed, 10 Aug 2016 13:52:00 -0400 Subject: [PATCH 5/7] tests spaces --- src/pg/test/expected/14_densify_test.out | 1 - src/pg/test/expected/15_tinmap_test.out | 1 - 2 files changed, 2 deletions(-) diff --git a/src/pg/test/expected/14_densify_test.out b/src/pg/test/expected/14_densify_test.out index ad26b55..cc9001a 100644 --- a/src/pg/test/expected/14_densify_test.out +++ b/src/pg/test/expected/14_densify_test.out @@ -1,6 +1,5 @@ SET client_min_messages TO WARNING; \set ECHO none - cdb_densify ----------------------------------------------------------------- (01010000001361C3D32B6501403255302AA9B34440,7.0) diff --git a/src/pg/test/expected/15_tinmap_test.out b/src/pg/test/expected/15_tinmap_test.out index 8396078..bf12b57 100644 --- a/src/pg/test/expected/15_tinmap_test.out +++ b/src/pg/test/expected/15_tinmap_test.out @@ -1,6 +1,5 @@ SET client_min_messages TO WARNING; \set ECHO none - cdb_tinmap --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- (01030000000100000004000000D237691A140D0140014EEFE2FDB444402497FF907EFB0040F085C954C1B0444063A009D8BF090140BEEE38F68AB24440D237691A140D0140014EEFE2FDB44440,5.8148148148148148) From 60eb316cbe5216138dd674d26eb0908fd418c268 Mon Sep 17 00:00:00 2001 From: abelvm Date: Wed, 10 Aug 2016 14:32:59 -0400 Subject: [PATCH 6/7] spaces again --- src/pg/test/expected/14_densify_test.out | 2 +- src/pg/test/expected/15_tinmap_test.out | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pg/test/expected/14_densify_test.out b/src/pg/test/expected/14_densify_test.out index cc9001a..5583338 100644 --- a/src/pg/test/expected/14_densify_test.out +++ b/src/pg/test/expected/14_densify_test.out @@ -1,6 +1,6 @@ SET client_min_messages TO WARNING; \set ECHO none - cdb_densify + cdb_densify ----------------------------------------------------------------- (01010000001361C3D32B6501403255302AA9B34440,7.0) (01010000002497FF907EFB0040F085C954C1B04440,8.0) diff --git a/src/pg/test/expected/15_tinmap_test.out b/src/pg/test/expected/15_tinmap_test.out index bf12b57..f7fd670 100644 --- a/src/pg/test/expected/15_tinmap_test.out +++ b/src/pg/test/expected/15_tinmap_test.out @@ -1,6 +1,6 @@ SET client_min_messages TO WARNING; \set ECHO none - cdb_tinmap + cdb_tinmap --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- (01030000000100000004000000D237691A140D0140014EEFE2FDB444402497FF907EFB0040F085C954C1B0444063A009D8BF090140BEEE38F68AB24440D237691A140D0140014EEFE2FDB44440,5.8148148148148148) (01030000000100000004000000D237691A140D0140014EEFE2FDB4444063A009D8BF090140BEEE38F68AB2444019AE5D3CF8180140A5008D2162B34440D237691A140D0140014EEFE2FDB44440,4.3333333333333333) From 66f4dfa4eaf33a1328e5ec0b9b12acafbb0c8e8c Mon Sep 17 00:00:00 2001 From: abelvm Date: Wed, 10 Aug 2016 14:39:31 -0400 Subject: [PATCH 7/7] spaces again --- src/pg/test/expected/14_densify_test.out | 1 + src/pg/test/expected/15_tinmap_test.out | 1 + 2 files changed, 2 insertions(+) diff --git a/src/pg/test/expected/14_densify_test.out b/src/pg/test/expected/14_densify_test.out index 5583338..549652b 100644 --- a/src/pg/test/expected/14_densify_test.out +++ b/src/pg/test/expected/14_densify_test.out @@ -47,3 +47,4 @@ SET client_min_messages TO WARNING; (0101000000BADB448F542E01403AB4C876BEAF4440,4.1111111111111111) (0101000000FB12176D7B280140BDE1A0F9EBAF4440,4.0000000000000000) (44 rows) + diff --git a/src/pg/test/expected/15_tinmap_test.out b/src/pg/test/expected/15_tinmap_test.out index f7fd670..af0221f 100644 --- a/src/pg/test/expected/15_tinmap_test.out +++ b/src/pg/test/expected/15_tinmap_test.out @@ -80,3 +80,4 @@ SET client_min_messages TO WARNING; (01030000000100000004000000F10DE756572701402134E4146CB1444051DA1B7C613201406F36F4DA1DB04440D0B02B40EE350140C90D9905EDB04440F10DE756572701402134E4146CB14440,3.3333333333333333) (01030000000100000004000000F10DE756572701402134E4146CB14440D0B02B40EE350140C90D9905EDB044401DEBE2361A400140F79A0B4953B24440F10DE756572701402134E4146CB14440,3.0000000000000000) (77 rows) +