[postgis-tickets] [SCM] PostGIS branch master updated. 3.2.0-787-ga3410349d
git at osgeo.org
git at osgeo.org
Tue May 3 16:02:24 PDT 2022
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "PostGIS".
The branch, master has been updated
via a3410349dc089cd651bd71955473440d59ed9014 (commit)
from fbf207f61bcc5cfbdcffd1b908a4b42a1ecc4da4 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit a3410349dc089cd651bd71955473440d59ed9014
Author: Loïc Bartoletti <loic.bartoletti at oslandia.com>
Date: Tue May 3 18:53:14 2022 -0400
Closes https://git.osgeo.org/gitea/postgis/postgis/pulls/98
Closes #5143
Squashed commit of the following:
commit 6dad8a00b11e5961c08ebc676f10bfbf25c8eff1
Author: Regina Obe <lr at pcorp.us>
Date: Tue May 3 18:35:28 2022 -0400
Change tests to check for sfcgal version at compile time
Fix docs, function signature and xml validaty
commit 4ba5288a7dece6cb14a204c1206345c7cc9f491a
Author: Loïc Bartoletti <loic.bartoletti at oslandia.com>
Date: Tue May 3 06:47:07 2022 +0200
fix tests
commit 88b449750e6c5152741c16659771136747253ff8
Author: Loïc Bartoletti <loic.bartoletti at oslandia.com>
Date: Tue May 3 06:32:26 2022 +0200
fix if postgis_sfcgal_version and fix build
commit 6865e31dd9f078dd0e05a72efc3282c613b97fc9
Author: Loïc Bartoletti <loic.bartoletti at oslandia.com>
Date: Tue May 3 06:18:22 2022 +0200
seperate alphashape test
commit cefccb67156b4fc7d797a6ff199c76b2e8a74754
Author: Loïc Bartoletti <loic.bartoletti at oslandia.com>
Date: Tue May 3 05:58:57 2022 +0200
fix the ifdef part and add a message error
commit eb3801e92aa48f42edaa828f3f0fced44b118f32
Author: Loïc Bartoletti <loic.bartoletti at oslandia.com>
Date: Tue May 3 05:58:29 2022 +0200
add informaiton aoubt SFCGAL > 1.4.1
commit e96550d4d89f7b8ddb4e09c7bd7845a37f3f7bb5
Author: Loïc Bartoletti <loic.bartoletti at oslandia.com>
Date: Mon May 2 10:40:09 2022 +0200
fix doc
commit 0b5e6a35b317b285b133ff8247c761da0e40d83e
Author: Loïc Bartoletti <loic.bartoletti at oslandia.com>
Date: Mon May 2 09:44:49 2022 +0200
Use singular: AlphaShapes => AlphaShape
commit 8e92c13cc0bb72760d467b35b4f4a409732bfb17
Author: Loïc Bartoletti <loic.bartoletti at oslandia.com>
Date: Fri Mar 4 11:55:21 2022 +0100
Add SFCGAL optimal alpha shapes doc
commit 734c430d337354143b1fe466f6e8bf1597c6e674
Author: Loïc Bartoletti <loic.bartoletti at oslandia.com>
Date: Fri Mar 4 11:33:16 2022 +0100
Add SFCGAL alpha shapes
diff --git a/.gitignore b/.gitignore
index 09f09a9cb..1caf56734 100644
--- a/.gitignore
+++ b/.gitignore
@@ -162,6 +162,7 @@ regress/postgis_garden_result.txt
regress/raster_garden_result.txt
sfcgal/Makefile
sfcgal/regress/Makefile
+sfcgal/regress/tests.mk
sfcgal/*.sql
sfcgal/sfcgal_upgrade.sql.in
*.so
diff --git a/GNUmakefile.in b/GNUmakefile.in
index b27471be8..6479ebb3e 100644
--- a/GNUmakefile.in
+++ b/GNUmakefile.in
@@ -205,7 +205,7 @@ include $(top_srcdir)/regress/dumper/tests.mk
include $(top_srcdir)/extensions/postgis_tiger_geocoder/tests.mk
ifeq ($(HAVE_SFCGAL),yes)
override RUNTESTFLAGS := $(RUNTESTFLAGS) --sfcgal
- include $(top_srcdir)/sfcgal/regress/tests.mk
+ include $(top_builddir)/sfcgal/regress/tests.mk
endif
ifeq (@TOPOLOGY@,topology)
include $(top_srcdir)/topology/test/tests.mk
diff --git a/NEWS b/NEWS
index 9d6f14e96..b143d9bf6 100644
--- a/NEWS
+++ b/NEWS
@@ -37,6 +37,7 @@ PostGIS 3.3.0dev
(Loïc Bartoletti)
- GH659, MARC21/XML, ST_GeomFromMARC21, ST_AsMARC21 (Jim Jones)
- #5132, GH683, sfcgal: ST_3DUnion aggregate function (Sergei Shoulbakov)
+ - #5143, SFCGAL ST_AlphaShape and ST_OptimalAlphaShape (Loïc Bartoletti)
* Bug Fix *
- #5100, Support for PostgreSQL 15 (atoi removal) (Laurenz Albe)
diff --git a/configure.ac b/configure.ac
index de4f73d78..695077429 100644
--- a/configure.ac
+++ b/configure.ac
@@ -808,7 +808,7 @@ if test "x$with_sfcgal" != "xno"; then
SFCGAL="sfcgal"
HAVE_SFCGAL="yes"
AC_DEFINE([HAVE_SFCGAL], [1], [Define to 1 if sfcgal is being built])
- SFCGAL_MAKEFILE_LIST="sfcgal/Makefile sfcgal/regress/Makefile extensions/postgis_sfcgal/Makefile"
+ SFCGAL_MAKEFILE_LIST="sfcgal/Makefile sfcgal/regress/Makefile sfcgal/regress/tests.mk extensions/postgis_sfcgal/Makefile"
fi
if test ! "$POSTGIS_SFCGAL_VERSION" -ge 10301; then
AC_MSG_ERROR([PostGIS requires SFCGAL >= 1.3.1 (found $SFCGAL_VERSION)])
diff --git a/doc/html/image_src/st_alphashape01.wkt b/doc/html/image_src/st_alphashape01.wkt
new file mode 100644
index 000000000..c60eae1ff
--- /dev/null
+++ b/doc/html/image_src/st_alphashape01.wkt
@@ -0,0 +1 @@
+POLYGON((8.9 5.3,9.1 5.0,8.7 4.2,9.0 3.0,8.4 1.9,7.8 1.6,7.3 1.6,6.5 1.6,5.3 1.8,4.3 1.9,3.7 2.3,3.0 2.2,2.8 3.3,2.3 3.6,2.6 4.4,2.7 5.4,2.3 6.0,2.4 6.7,2.7 7.7,2.4 8.2,2.6 8.5,3.4 8.6,3.9 8.8,4.5 9.0,4.9 9.5,5.2 9.8,5.7 9.7,6.4 9.7,7.2 9.5,7.6 8.8,7.5 8.4,8.3 7.2,8.5 7.1,8.8 5.8,8.9 5.3))
diff --git a/doc/html/image_src/st_alphashape02.wkt b/doc/html/image_src/st_alphashape02.wkt
new file mode 100644
index 000000000..a077ffc5d
--- /dev/null
+++ b/doc/html/image_src/st_alphashape02.wkt
@@ -0,0 +1 @@
+POLYGON((8.9 5.3,9.1 5.0,8.7 4.2,9.0 3.0,8.4 1.9,7.8 1.6,7.3 1.6,6.5 1.6,5.3 1.8,4.3 1.9,3.7 2.3,3.0 2.2,2.8 3.3,2.3 3.6,2.6 4.4,2.7 5.4,2.3 6.0,2.4 6.7,2.7 7.7,2.4 8.2,2.6 8.5,3.4 8.6,3.9 8.8,4.5 9.0,4.9 9.5,5.2 9.8,5.7 9.7,6.4 9.7,7.2 9.5,7.6 8.8,7.5 8.4,8.3 7.2,8.5 7.1,8.8 5.8,8.9 5.3),(3.6 6.1,3.6 6.8,4.0 7.5,4.3 8.0,6.0 8.1,6.8 7.3,7.7 6.7,8.1 6.0,8.2 5.4,8.1 4.7,7.8 4.3,7.6 2.7,6.2 2.2,5.4 3.2,4.4 4.2,3.8 4.6,3.6 6.1))
diff --git a/doc/html/image_src/st_optimalalphashape01.wkt b/doc/html/image_src/st_optimalalphashape01.wkt
new file mode 100644
index 000000000..4388c4fa4
--- /dev/null
+++ b/doc/html/image_src/st_optimalalphashape01.wkt
@@ -0,0 +1 @@
+POLYGON((8.9 5.3,9.1 5.0,8.7 4.2,9.0 3.0,8.8 2.9,8.4 1.9,7.8 1.6,7.3 1.6,6.5 1.6,5.3 1.8,4.3 1.9,3.7 2.3,3.0 2.2,2.8 3.3,2.3 3.6,2.6 4.4,2.7 5.4,2.3 6.0,2.4 6.7,2.7 7.7,2.4 8.2,2.6 8.5,3.4 8.6,3.9 8.8,4.5 9.0,4.9 9.5,5.2 9.8,5.7 9.7,6.4 9.7,7.2 9.5,7.6 8.8,7.5 8.4,7.5 7.7,8.3 7.2,8.5 7.1,8.3 6.4,8.8 5.8,8.9 5.3))
diff --git a/doc/html/image_src/st_optimalalphashape02.wkt b/doc/html/image_src/st_optimalalphashape02.wkt
new file mode 100644
index 000000000..6964ff736
--- /dev/null
+++ b/doc/html/image_src/st_optimalalphashape02.wkt
@@ -0,0 +1 @@
+POLYGON((8.9 5.3,9.1 5.0,8.7 4.2,9.0 3.0,8.8 2.9,8.4 1.9,7.8 1.6,7.3 1.6,6.5 1.6,5.3 1.8,4.3 1.9,3.7 2.3,3.0 2.2,2.8 3.3,2.3 3.6,2.6 4.4,2.7 5.4,2.3 6.0,2.4 6.7,2.7 7.7,2.4 8.2,2.6 8.5,3.4 8.6,3.9 8.8,4.5 9.0,4.9 9.5,5.2 9.8,5.7 9.7,6.4 9.7,7.2 9.5,7.6 8.8,7.5 8.4,7.5 7.7,8.3 7.2,8.5 7.1,8.3 6.4,8.8 5.8,8.9 5.3),(3.6 6.1,3.6 6.8,4.0 7.5,4.3 8.0,5.0 8.6,6.0 8.1,6.8 7.3,7.7 6.7,8.1 6.0,8.2 5.4,8.1 4.7,7.8 4.3,8.1 2.9,7.6 2.7,7.0 2.0,6.2 2.2,5.5 2.6,5.4 3.2,4.8 3.4,4.4 4.2,3.8 4.6,3.6 6.1))
diff --git a/doc/reference_processing.xml b/doc/reference_processing.xml
index f562243ee..13f80de5a 100644
--- a/doc/reference_processing.xml
+++ b/doc/reference_processing.xml
@@ -721,7 +721,7 @@ SELECT disease_type,
<refsection>
<title>See Also</title>
- <para><xref linkend="ST_ConvexHull" />, <xref linkend="ST_Collect" /></para>
+ <para><xref linkend="ST_ConvexHull" />, <xref linkend="ST_Collect" />, <xref linkend="ST_AlphaShape" />, <xref linkend="ST_OptimalAlphaShape" /></para>
</refsection>
</refentry>
diff --git a/doc/reference_sfcgal.xml b/doc/reference_sfcgal.xml
index ba0d26626..bce684e04 100644
--- a/doc/reference_sfcgal.xml
+++ b/doc/reference_sfcgal.xml
@@ -1214,4 +1214,148 @@ FROM ST_Subdivide(ST_Letters('CH'),5) WITH ORDINALITY AS sd(geom,i)
</refentry>
+ <refentry id="ST_AlphaShape">
+ <refnamediv>
+ <refname>ST_AlphaShape</refname>
+
+ <refpurpose>Computes a possible concave geometry using the CGAL Alpha Shapes algorithm.</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>geometry<function>ST_AlphaShape</function></funcdef>
+ <paramdef><type>geometry</type> <parameter>param_geom</parameter></paramdef>
+ <paramdef choice="opt"><type>float </type> <parameter>param_alpha</parameter></paramdef>
+ <paramdef choice="opt"><type>boolean </type> <parameter>param_allow_holes = false</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+
+ <refsection>
+ <title>Description</title>
+
+ <para>Assume we are given a set S of points in 2D [...] and we would like to have something like "the shape formed by these points". This is quite a vague notion and there are probably many possible interpretations, the α-shape being one of them. Alpha shapes can be used for shape reconstruction from a dense unorganized set of data points. Indeed, an α-shape is demarcated by a frontier, which is a linear approximation of the original shape [1].
+ [1] F. Bernardini and C. Bajaj. Sampling and reconstructing manifolds using alpha-shapes. Technical Report CSD-TR-97-013, Dept. Comput. Sci., Purdue Univ., West Lafayette, IN, 1997.
+
+ Source: <ulink url="https://doc.cgal.org/latest/Alpha_shapes_2/index.html#Chapter_2D_Alpha_Shapes">CGAL ALpha Shapes</ulink>
+
+ This function compute the concave hull of a set of geometry, but using CGAL and a different algorithm than ST_ConcaveHull performed by the GEOS module.
+ See : <ulink url="http://lin-ear-th-inking.blogspot.com/2022/01/concave-hulls-in-jts.html">Concave Hulls in JTS</ulink></para>
+
+ <para>Availability: 3.3.0 - requires SFCGAL >= 1.4.1.</para>
+ <para>&sfcgal_required;</para>
+ <para>&Z_support;</para>
+ <para>&P_support;</para>
+ <para>&T_support;</para>
+ </refsection>
+
+ <refsection>
+ <title>Examples</title>
+<para>
+ <informalfigure>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/st_alphashape01.png" />
+ </imageobject>
+ <caption><para>Concave Hull of a MultiPoint</para></caption>
+ </mediaobject>
+ </informalfigure>
+ <programlisting>SELECT ST_AsText(ST_AlphaShape('MultiPoint ((6.3 8.4),(7.6 8.8),(6.8 7.3),(5.3 1.8),(9.1 5),(8.1 7),(8.8 2.9),(2.4 8.2),(3.2 5.1),(3.7 2.3),(2.7 5.4),(8.4 1.9),(7.5 8.7),(4.4 4.2),(7.7 6.7),(9 3),(3.6 6.1),(3.2 6.5),(8.1 4.7),(8.8 5.8),(6.8 7.3),(4.9 9.5),(8.1 6),(8.7 5),(7.8 1.6),(7.9 2.1),(3 2.2),(7.8 4.3),(2.6 8.5),(4.8 3.4),(3.5 3.5),(3.6 4),(3.1 7.9),(8.3 2.9),(2.7 8.4),(5.2 9.8),(7.2 9.5),(8.5 7.1),(7.5 8.4),(7.5 7.7),(8.1 2.9),(7.7 7.3),(4.1 4.2),(8.3 7.2),(2.3 3.6),(8.9 5.3),(2.7 5.7),(5.7 9.7),(2.7 7.7),(3.9 8.8),(6 8.1),(8 7.2),(5.4 3.2),(5.5 2.6),(6.2 2.2),(7 2),(7.6 2.7),(8.4 3.5),(8.7 4.2),(8.2 5.4),(8.3 6.4),(6.9 8.6),(6 9),(5 8.6),(4.3 8),(3.6 7.3),(3.6 6.8),(4 7.5),(2.4 6.7),(2.3 6),(2.6 4.4),(2.8 3.3),(4 3.2),(4.3 1.9),(6.5 1.6),(7.3 1.6),(3.8 4.6),(3.1 5.9),(3.4 8.6),(4.5 9),(6.4 9.7))
+'::geometry));</programlisting>
+ <screen>POLYGON((8.9 5.3,9.1 5,8.7 4.2,9 3,8.4 1.9,7.8 1.6,7.3 1.6,6.5 1.6,5.3 1.8,4.3 1.9,3.7 2.3,3 2.2,2.8 3.3,2.3 3.6,2.6 4.4,2.7 5.4,2.3 6,2.4 6.7,2.7 7.7,2.4 8.2,2.6 8.5,3.4 8.6,3.9 8.8,4.5 9,4.9 9.5,5.2 9.8,5.7 9.7,6.4 9.7,7.2 9.5,7.6 8.8,7.5 8.4,8.3 7.2,8.5 7.1,8.8 5.8,8.9 5.3))</screen>
+ </para>
+
+<para>
+ <informalfigure>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/st_alphashape02.png" />
+ </imageobject>
+ <caption><para>Concave Hull of a MultiPoint, allowing holes</para></caption>
+ </mediaobject>
+ </informalfigure>
+ <programlisting>SELECT ST_AsText(ST_AlphaShape('MultiPoint ((6.3 8.4),(7.6 8.8),(6.8 7.3),(5.3 1.8),(9.1 5),(8.1 7),(8.8 2.9),(2.4 8.2),(3.2 5.1),(3.7 2.3),(2.7 5.4),(8.4 1.9),(7.5 8.7),(4.4 4.2),(7.7 6.7),(9 3),(3.6 6.1),(3.2 6.5),(8.1 4.7),(8.8 5.8),(6.8 7.3),(4.9 9.5),(8.1 6),(8.7 5),(7.8 1.6),(7.9 2.1),(3 2.2),(7.8 4.3),(2.6 8.5),(4.8 3.4),(3.5 3.5),(3.6 4),(3.1 7.9),(8.3 2.9),(2.7 8.4),(5.2 9.8),(7.2 9.5),(8.5 7.1),(7.5 8.4),(7.5 7.7),(8.1 2.9),(7.7 7.3),(4.1 4.2),(8.3 7.2),(2.3 3.6),(8.9 5.3),(2.7 5.7),(5.7 9.7),(2.7 7.7),(3.9 8.8),(6 8.1),(8 7.2),(5.4 3.2),(5.5 2.6),(6.2 2.2),(7 2),(7.6 2.7),(8.4 3.5),(8.7 4.2),(8.2 5.4),(8.3 6.4),(6.9 8.6),(6 9),(5 8.6),(4.3 8),(3.6 7.3),(3.6 6.8),(4 7.5),(2.4 6.7),(2.3 6),(2.6 4.4),(2.8 3.3),(4 3.2),(4.3 1.9),(6.5 1.6),(7.3 1.6),(3.8 4.6),(3.1 5.9),(3.4 8.6),(4.5 9),(6.4 9.7))
+ '::geometry), allow_holes => true);</programlisting>
+ <screen>POLYGON((8.9 5.3,9.1 5.0,8.7 4.2,9.0 3.0,8.4 1.9,7.8 1.6,7.3 1.6,6.5 1.6,5.3 1.8,4.3 1.9,3.7 2.3,3.0 2.2,2.8 3.3,2.3 3.6,2.6 4.4,2.7 5.4,2.3 6.0,2.4 6.7,2.7 7.7,2.4 8.2,2.6 8.5,3.4 8.6,3.9 8.8,4.5 9.0,4.9 9.5,5.2 9.8,5.7 9.7,6.4 9.7,7.2 9.5,7.6 8.8,7.5 8.4,8.3 7.2,8.5 7.1,8.8 5.8,8.9 5.3),(3.6 6.1,3.6 6.8,4.0 7.5,4.3 8.0,6.0 8.1,6.8 7.3,7.7 6.7,8.1 6.0,8.2 5.4,8.1 4.7,7.8 4.3,7.6 2.7,6.2 2.2,5.4 3.2,4.4 4.2,3.8 4.6,3.6 6.1))</screen>
+ </para>
+ </refsection>
+ <refsection>
+ <title>See Also</title>
+ <para><xref linkend="ST_ConcaveHull" />, <xref linkend="ST_OptimalAlphaShape" /></para>
+ </refsection>
+
+ </refentry>
+
+ <refentry id="ST_OptimalAlphaShape">
+ <refnamediv>
+ <refname>ST_OptimalAlphaShape</refname>
+
+ <refpurpose>Computes a possible concave geometry using the CGAL Alpha Shapes algorithm after have computed the "optimal" alpha value.</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>geometry<function>ST_OptimalAlphaShape</function></funcdef>
+ <paramdef><type>geometry</type> <parameter>param_geom</parameter></paramdef>
+ <paramdef choice="opt"><type>boolean </type> <parameter>param_allow_holes = false</parameter></paramdef>
+ <paramdef choice="opt"><type>integer </type> <parameter>param_nb_components</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+
+ <refsection>
+ <title>Description</title>
+
+ <para>Computes the "optimal" alpha-shapes of the set of geometry.
+
+ CGAL can automatically found the optimal value of alpha. This version use it to find an "optimal" alpha-shapes.
+ The result is a single polygon. It will not contain holes unless the optional <varname>param_allow_holes</varname> argument is specified as true.
+
+ The result will be generated such as the number of solid component of the alpha shape is equal to or smaller than <varname>param_nb_components</varname>.</para>
+
+ <para>Availability: 3.3.0 - requires SFCGAL >= 1.4.1.</para>
+ <para>&sfcgal_required;</para>
+ <para>&Z_support;</para>
+ <para>&P_support;</para>
+ <para>&T_support;</para>
+ </refsection>
+
+ <refsection>
+ <title>Examples</title>
+<para>
+ <informalfigure>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/st_optimalalphashape01.png" />
+ </imageobject>
+ <caption><para>Concave Hull of a MultiPoint</para></caption>
+ </mediaobject>
+ </informalfigure>
+ <programlisting>SELECT ST_AsText(ST_OptimalAlphaShape('MultiPoint ((6.3 8.4),(7.6 8.8),(6.8 7.3),(5.3 1.8),(9.1 5),(8.1 7),(8.8 2.9),(2.4 8.2),(3.2 5.1),(3.7 2.3),(2.7 5.4),(8.4 1.9),(7.5 8.7),(4.4 4.2),(7.7 6.7),(9 3),(3.6 6.1),(3.2 6.5),(8.1 4.7),(8.8 5.8),(6.8 7.3),(4.9 9.5),(8.1 6),(8.7 5),(7.8 1.6),(7.9 2.1),(3 2.2),(7.8 4.3),(2.6 8.5),(4.8 3.4),(3.5 3.5),(3.6 4),(3.1 7.9),(8.3 2.9),(2.7 8.4),(5.2 9.8),(7.2 9.5),(8.5 7.1),(7.5 8.4),(7.5 7.7),(8.1 2.9),(7.7 7.3),(4.1 4.2),(8.3 7.2),(2.3 3.6),(8.9 5.3),(2.7 5.7),(5.7 9.7),(2.7 7.7),(3.9 8.8),(6 8.1),(8 7.2),(5.4 3.2),(5.5 2.6),(6.2 2.2),(7 2),(7.6 2.7),(8.4 3.5),(8.7 4.2),(8.2 5.4),(8.3 6.4),(6.9 8.6),(6 9),(5 8.6),(4.3 8),(3.6 7.3),(3.6 6.8),(4 7.5),(2.4 6.7),(2.3 6),(2.6 4.4),(2.8 3.3),(4 3.2),(4.3 1.9),(6.5 1.6),(7.3 1.6),(3.8 4.6),(3.1 5.9),(3.4 8.6),(4.5 9),(6.4 9.7))
+'::geometry));</programlisting>
+ <screen>POLYGON((8.9 5.3,9.1 5,8.7 4.2,9 3,8.8 2.9,8.4 1.9,7.8 1.6,7.3 1.6,6.5 1.6,5.3 1.8,4.3 1.9,3.7 2.3,3 2.2,2.8 3.3,2.3 3.6,2.6 4.4,2.7 5.4,2.3 6,2.4 6.7,2.7 7.7,2.4 8.2,2.6 8.5,3.4 8.6,3.9 8.8,4.5 9,4.9 9.5,5.2 9.8,5.7 9.7,6.4 9.7,7.2 9.5,7.6 8.8,7.5 8.4,7.5 7.7,8.3 7.2,8.5 7.1,8.3 6.4,8.8 5.8,8.9 5.3))</screen>
+ </para>
+
+<para>
+ <informalfigure>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/st_optimalalphashape02.png" />
+ </imageobject>
+ <caption><para>Concave Hull of a MultiPoint, allowing holes</para></caption>
+ </mediaobject>
+ </informalfigure>
+ <programlisting>SELECT ST_AsText(ST_OptimalAlphaShape('MultiPoint ((6.3 8.4),(7.6 8.8),(6.8 7.3),(5.3 1.8),(9.1 5),(8.1 7),(8.8 2.9),(2.4 8.2),(3.2 5.1),(3.7 2.3),(2.7 5.4),(8.4 1.9),(7.5 8.7),(4.4 4.2),(7.7 6.7),(9 3),(3.6 6.1),(3.2 6.5),(8.1 4.7),(8.8 5.8),(6.8 7.3),(4.9 9.5),(8.1 6),(8.7 5),(7.8 1.6),(7.9 2.1),(3 2.2),(7.8 4.3),(2.6 8.5),(4.8 3.4),(3.5 3.5),(3.6 4),(3.1 7.9),(8.3 2.9),(2.7 8.4),(5.2 9.8),(7.2 9.5),(8.5 7.1),(7.5 8.4),(7.5 7.7),(8.1 2.9),(7.7 7.3),(4.1 4.2),(8.3 7.2),(2.3 3.6),(8.9 5.3),(2.7 5.7),(5.7 9.7),(2.7 7.7),(3.9 8.8),(6 8.1),(8 7.2),(5.4 3.2),(5.5 2.6),(6.2 2.2),(7 2),(7.6 2.7),(8.4 3.5),(8.7 4.2),(8.2 5.4),(8.3 6.4),(6.9 8.6),(6 9),(5 8.6),(4.3 8),(3.6 7.3),(3.6 6.8),(4 7.5),(2.4 6.7),(2.3 6),(2.6 4.4),(2.8 3.3),(4 3.2),(4.3 1.9),(6.5 1.6),(7.3 1.6),(3.8 4.6),(3.1 5.9),(3.4 8.6),(4.5 9),(6.4 9.7))
+ '::geometry), allow_holes => true);</programlisting>
+ <screen>POLYGON((8.9 5.3,9.1 5,8.7 4.2,9 3,8.8 2.9,8.4 1.9,7.8 1.6,7.3 1.6,6.5 1.6,5.3 1.8,4.3 1.9,3.7 2.3,3 2.2,2.8 3.3,2.3 3.6,2.6 4.4,2.7 5.4,2.3 6,2.4 6.7,2.7 7.7,2.4 8.2,2.6 8.5,3.4 8.6,3.9 8.8,4.5 9,4.9 9.5,5.2 9.8,5.7 9.7,6.4 9.7,7.2 9.5,7.6 8.8,7.5 8.4,7.5 7.7,8.3 7.2,8.5 7.1,8.3 6.4,8.8 5.8,8.9 5.3),(3.6 6.1,3.6 6.8,4 7.5,4.3 8,5 8.6,6 8.1,6.8 7.3,7.7 6.7,8.1 6,8.2 5.4,8.1 4.7,7.8 4.3,8.1 2.9,7.6 2.7,7 2,6.2 2.2,5.5 2.6,5.4 3.2,4.8 3.4,4.4 4.2,3.8 4.6,3.6 6.1))</screen>
+ </para>
+ </refsection>
+ <refsection>
+ <title>See Also</title>
+ <para><xref linkend="ST_ConcaveHull" />, <xref linkend="ST_AlphaShape" /></para>
+ </refsection>
+
+ </refentry>
</sect1>
diff --git a/sfcgal/lwgeom_sfcgal.c b/sfcgal/lwgeom_sfcgal.c
index 777365e0f..041f9d034 100644
--- a/sfcgal/lwgeom_sfcgal.c
+++ b/sfcgal/lwgeom_sfcgal.c
@@ -21,6 +21,7 @@
* Copyright 2012-2020 Oslandia <infos at oslandia.com>
*
**********************************************************************/
+#include "SFCGAL/capi/sfcgal_c.h"
#include "postgres.h"
#include "fmgr.h"
#include "utils/builtins.h"
@@ -122,6 +123,8 @@ Datum sfcgal_make_solid(PG_FUNCTION_ARGS);
Datum sfcgal_is_solid(PG_FUNCTION_ARGS);
Datum postgis_sfcgal_noop(PG_FUNCTION_ARGS);
Datum sfcgal_convexhull3D(PG_FUNCTION_ARGS);
+Datum sfcgal_alphashape(PG_FUNCTION_ARGS);
+Datum sfcgal_optimalalphashape(PG_FUNCTION_ARGS);
GSERIALIZED *geometry_serialize(LWGEOM *lwgeom);
char *text_to_cstring(const text *textptr);
@@ -656,3 +659,76 @@ Datum sfcgal_convexhull3D(PG_FUNCTION_ARGS)
PG_RETURN_POINTER(output);
}
+
+PG_FUNCTION_INFO_V1(sfcgal_alphashape);
+Datum sfcgal_alphashape(PG_FUNCTION_ARGS)
+{
+#if POSTGIS_SFCGAL_VERSION < 10401
+ lwpgerror("The SFCGAL version this PostGIS binary "
+ "was compiled against (%d) doesn't support "
+ "'sfcgal_geometry_alpha_shapes' function (1.4.1+ required)",
+ POSTGIS_SFCGAL_VERSION);
+ PG_RETURN_NULL();
+#else /* POSTGIS_SFCGAL_VERSION >= 10401 */
+ GSERIALIZED *input, *output;
+ sfcgal_geometry_t *geom;
+ sfcgal_geometry_t *result;
+ double alpha;
+ bool allow_holes;
+ srid_t srid;
+
+ sfcgal_postgis_init();
+
+ input = PG_GETARG_GSERIALIZED_P(0);
+ srid = gserialized_get_srid(input);
+ geom = POSTGIS2SFCGALGeometry(input);
+ PG_FREE_IF_COPY(input, 0);
+
+ alpha = PG_GETARG_FLOAT8(1);
+ allow_holes = PG_GETARG_BOOL(2);
+ result = sfcgal_geometry_alpha_shapes(geom, alpha, allow_holes);
+ sfcgal_geometry_delete(geom);
+
+ output = SFCGALGeometry2POSTGIS(result, 0, srid);
+ sfcgal_geometry_delete(result);
+
+ PG_RETURN_POINTER(output);
+#endif
+}
+
+PG_FUNCTION_INFO_V1(sfcgal_optimalalphashape);
+Datum sfcgal_optimalalphashape(PG_FUNCTION_ARGS)
+{
+#if POSTGIS_SFCGAL_VERSION < 10401
+ lwpgerror("The SFCGAL version this PostGIS binary "
+ "was compiled against (%d) doesn't support "
+ "'sfcgal_geometry_optimal_alpha_shapes' function (1.4.1+ required)",
+ POSTGIS_SFCGAL_VERSION);
+ PG_RETURN_NULL();
+#else /* POSTGIS_SFCGAL_VERSION >= 10401 */
+ GSERIALIZED *input, *output;
+ sfcgal_geometry_t *geom;
+ sfcgal_geometry_t *result;
+ bool allow_holes;
+ size_t nb_components;
+ srid_t srid;
+
+ sfcgal_postgis_init();
+
+ input = PG_GETARG_GSERIALIZED_P(0);
+ srid = gserialized_get_srid(input);
+ geom = POSTGIS2SFCGALGeometry(input);
+ PG_FREE_IF_COPY(input, 0);
+
+ allow_holes = PG_GETARG_BOOL(1);
+ nb_components = (size_t)PG_GETARG_INT32(2);
+ result = sfcgal_geometry_optimal_alpha_shapes(geom, allow_holes, nb_components);
+ sfcgal_geometry_delete(geom);
+
+ output = SFCGALGeometry2POSTGIS(result, 0, srid);
+ sfcgal_geometry_delete(result);
+
+ PG_RETURN_POINTER(output);
+#endif
+}
+
diff --git a/sfcgal/lwgeom_sfcgal.h b/sfcgal/lwgeom_sfcgal.h
index 7340cf10e..84438c94c 100644
--- a/sfcgal/lwgeom_sfcgal.h
+++ b/sfcgal/lwgeom_sfcgal.h
@@ -50,6 +50,8 @@ Datum sfcgal_distance3D(PG_FUNCTION_ARGS);
Datum sfcgal_make_solid(PG_FUNCTION_ARGS);
Datum sfcgal_is_solid(PG_FUNCTION_ARGS);
Datum sfcgal_convexhull3D(PG_FUNCTION_ARGS);
+Datum sfcgal_alphashape(PG_FUNCTION_ARGS);
+Datum sfcgal_optimalalphashape(PG_FUNCTION_ARGS);
/* Initialize sfcgal with PostGIS error handlers */
void sfcgal_postgis_init(void);
diff --git a/sfcgal/regress/Makefile.in b/sfcgal/regress/Makefile.in
index 4871ed746..a68cfb159 100644
--- a/sfcgal/regress/Makefile.in
+++ b/sfcgal/regress/Makefile.in
@@ -21,7 +21,7 @@ override RUNTESTFLAGS := $(RUNTESTFLAGS) --sfcgal
# TODO: drop this variable, use top_srcdir directly
topsrcdir = $(top_srcdir)
-include $(srcdir)/tests.mk
+include $(builddir)/tests.mk
include $(top_srcdir)/regress/runtest.mk
check: check-regress
diff --git a/sfcgal/regress/alphashape.sql b/sfcgal/regress/alphashape.sql
new file mode 100644
index 000000000..6d9b4c203
--- /dev/null
+++ b/sfcgal/regress/alphashape.sql
@@ -0,0 +1,9 @@
+SELECT 'ST_AlphaShape_default',
+ ST_AsText(ST_AlphaShape('MultiPoint ((6.3 8.4),(7.6 8.8),(6.8 7.3),(5.3 1.8),(9.1 5),(8.1 7),(8.8 2.9),(2.4 8.2),(3.2 5.1),(3.7 2.3),(2.7 5.4),(8.4 1.9),(7.5 8.7),(4.4 4.2),(7.7 6.7),(9 3),(3.6 6.1),(3.2 6.5),(8.1 4.7),(8.8 5.8),(6.8 7.3),(4.9 9.5),(8.1 6),(8.7 5),(7.8 1.6),(7.9 2.1),(3 2.2),(7.8 4.3),(2.6 8.5),(4.8 3.4),(3.5 3.5),(3.6 4),(3.1 7.9),(8.3 2.9),(2.7 8.4),(5.2 9.8),(7.2 9.5),(8.5 7.1),(7.5 8.4),(7.5 7.7),(8.1 2.9),(7.7 7.3),(4.1 4.2),(8.3 7.2),(2.3 3.6),(8.9 5.3),(2.7 5.7),(5.7 9.7),(2.7 7.7),(3.9 8.8),(6 8.1),(8 7.2),(5.4 3.2),(5.5 2.6),(6.2 2.2),(7 2),(7.6 2.7),(8.4 3.5),(8.7 4.2),(8.2 5.4),(8.3 6.4),(6.9 8.6),(6 9),(5 8.6),(4.3 8),(3.6 7.3),(3.6 6.8),(4 7.5),(2.4 6.7),(2.3 6),(2.6 4.4),(2.8 3.3),(4 3.2),(4.3 1.9),(6.5 1.6),(7.3 1.6),(3.8 4.6),(3.1 5.9),(3.4 8.6),(4.5 9),(6.4 9.7))'));
+SELECT 'ST_AlphaShape_hole',
+ ST_AsText(ST_AlphaShape('MultiPoint ((6.3 8.4),(7.6 8.8),(6.8 7.3),(5.3 1.8),(9.1 5),(8.1 7),(8.8 2.9),(2.4 8.2),(3.2 5.1),(3.7 2.3),(2.7 5.4),(8.4 1.9),(7.5 8.7),(4.4 4.2),(7.7 6.7),(9 3),(3.6 6.1),(3.2 6.5),(8.1 4.7),(8.8 5.8),(6.8 7.3),(4.9 9.5),(8.1 6),(8.7 5),(7.8 1.6),(7.9 2.1),(3 2.2),(7.8 4.3),(2.6 8.5),(4.8 3.4),(3.5 3.5),(3.6 4),(3.1 7.9),(8.3 2.9),(2.7 8.4),(5.2 9.8),(7.2 9.5),(8.5 7.1),(7.5 8.4),(7.5 7.7),(8.1 2.9),(7.7 7.3),(4.1 4.2),(8.3 7.2),(2.3 3.6),(8.9 5.3),(2.7 5.7),(5.7 9.7),(2.7 7.7),(3.9 8.8),(6 8.1),(8 7.2),(5.4 3.2),(5.5 2.6),(6.2 2.2),(7 2),(7.6 2.7),(8.4 3.5),(8.7 4.2),(8.2 5.4),(8.3 6.4),(6.9 8.6),(6 9),(5 8.6),(4.3 8),(3.6 7.3),(3.6 6.8),(4 7.5),(2.4 6.7),(2.3 6),(2.6 4.4),(2.8 3.3),(4 3.2),(4.3 1.9),(6.5 1.6),(7.3 1.6),(3.8 4.6),(3.1 5.9),(3.4 8.6),(4.5 9),(6.4 9.7))', allow_holes => true));
+
+SELECT 'ST_OptimalAlphaShape_default',
+ ST_AsText(ST_OptimalAlphaShape('MultiPoint ((6.3 8.4),(7.6 8.8),(6.8 7.3),(5.3 1.8),(9.1 5),(8.1 7),(8.8 2.9),(2.4 8.2),(3.2 5.1),(3.7 2.3),(2.7 5.4),(8.4 1.9),(7.5 8.7),(4.4 4.2),(7.7 6.7),(9 3),(3.6 6.1),(3.2 6.5),(8.1 4.7),(8.8 5.8),(6.8 7.3),(4.9 9.5),(8.1 6),(8.7 5),(7.8 1.6),(7.9 2.1),(3 2.2),(7.8 4.3),(2.6 8.5),(4.8 3.4),(3.5 3.5),(3.6 4),(3.1 7.9),(8.3 2.9),(2.7 8.4),(5.2 9.8),(7.2 9.5),(8.5 7.1),(7.5 8.4),(7.5 7.7),(8.1 2.9),(7.7 7.3),(4.1 4.2),(8.3 7.2),(2.3 3.6),(8.9 5.3),(2.7 5.7),(5.7 9.7),(2.7 7.7),(3.9 8.8),(6 8.1),(8 7.2),(5.4 3.2),(5.5 2.6),(6.2 2.2),(7 2),(7.6 2.7),(8.4 3.5),(8.7 4.2),(8.2 5.4),(8.3 6.4),(6.9 8.6),(6 9),(5 8.6),(4.3 8),(3.6 7.3),(3.6 6.8),(4 7.5),(2.4 6.7),(2.3 6),(2.6 4.4),(2.8 3.3),(4 3.2),(4.3 1.9),(6.5 1.6),(7.3 1.6),(3.8 4.6),(3.1 5.9),(3.4 8.6),(4.5 9),(6.4 9.7))'));
+SELECT 'ST_OptimalAlphaShape_hole',
+ ST_AsText(ST_OptimalAlphaShape('MultiPoint ((6.3 8.4),(7.6 8.8),(6.8 7.3),(5.3 1.8),(9.1 5),(8.1 7),(8.8 2.9),(2.4 8.2),(3.2 5.1),(3.7 2.3),(2.7 5.4),(8.4 1.9),(7.5 8.7),(4.4 4.2),(7.7 6.7),(9 3),(3.6 6.1),(3.2 6.5),(8.1 4.7),(8.8 5.8),(6.8 7.3),(4.9 9.5),(8.1 6),(8.7 5),(7.8 1.6),(7.9 2.1),(3 2.2),(7.8 4.3),(2.6 8.5),(4.8 3.4),(3.5 3.5),(3.6 4),(3.1 7.9),(8.3 2.9),(2.7 8.4),(5.2 9.8),(7.2 9.5),(8.5 7.1),(7.5 8.4),(7.5 7.7),(8.1 2.9),(7.7 7.3),(4.1 4.2),(8.3 7.2),(2.3 3.6),(8.9 5.3),(2.7 5.7),(5.7 9.7),(2.7 7.7),(3.9 8.8),(6 8.1),(8 7.2),(5.4 3.2),(5.5 2.6),(6.2 2.2),(7 2),(7.6 2.7),(8.4 3.5),(8.7 4.2),(8.2 5.4),(8.3 6.4),(6.9 8.6),(6 9),(5 8.6),(4.3 8),(3.6 7.3),(3.6 6.8),(4 7.5),(2.4 6.7),(2.3 6),(2.6 4.4),(2.8 3.3),(4 3.2),(4.3 1.9),(6.5 1.6),(7.3 1.6),(3.8 4.6),(3.1 5.9),(3.4 8.6),(4.5 9),(6.4 9.7))', allow_holes => true));
diff --git a/sfcgal/regress/alphashape_expected b/sfcgal/regress/alphashape_expected
new file mode 100644
index 000000000..4ed0fe5f1
--- /dev/null
+++ b/sfcgal/regress/alphashape_expected
@@ -0,0 +1,4 @@
+ST_AlphaShape_default|POLYGON((8.9 5.3,9.1 5,8.7 4.2,9 3,8.4 1.9,7.8 1.6,7.3 1.6,6.5 1.6,5.3 1.8,4.3 1.9,3.7 2.3,3 2.2,2.8 3.3,2.3 3.6,2.6 4.4,2.7 5.4,2.3 6,2.4 6.7,2.7 7.7,2.4 8.2,2.6 8.5,3.4 8.6,3.9 8.8,4.5 9,4.9 9.5,5.2 9.8,5.7 9.7,6.4 9.7,7.2 9.5,7.6 8.8,7.5 8.4,8.3 7.2,8.5 7.1,8.8 5.8,8.9 5.3))
+ST_AlphaShape_hole|POLYGON((8.9 5.3,9.1 5,8.7 4.2,9 3,8.4 1.9,7.8 1.6,7.3 1.6,6.5 1.6,5.3 1.8,4.3 1.9,3.7 2.3,3 2.2,2.8 3.3,2.3 3.6,2.6 4.4,2.7 5.4,2.3 6,2.4 6.7,2.7 7.7,2.4 8.2,2.6 8.5,3.4 8.6,3.9 8.8,4.5 9,4.9 9.5,5.2 9.8,5.7 9.7,6.4 9.7,7.2 9.5,7.6 8.8,7.5 8.4,8.3 7.2,8.5 7.1,8.8 5.8,8.9 5.3),(3.6 6.1,3.6 6.8,4 7.5,4.3 8,6 8.1,6.8 7.3,7.7 6.7,8.1 6,8.2 5.4,8.1 4.7,7.8 4.3,7.6 2.7,6.2 2.2,5.4 3.2,4.4 4.2,3.8 4.6,3.6 6.1))
+ST_OptimalAlphaShape_default|POLYGON((8.9 5.3,9.1 5,8.7 4.2,9 3,8.8 2.9,8.4 1.9,7.8 1.6,7.3 1.6,6.5 1.6,5.3 1.8,4.3 1.9,3.7 2.3,3 2.2,2.8 3.3,2.3 3.6,2.6 4.4,2.7 5.4,2.3 6,2.4 6.7,2.7 7.7,2.4 8.2,2.6 8.5,3.4 8.6,3.9 8.8,4.5 9,4.9 9.5,5.2 9.8,5.7 9.7,6.4 9.7,7.2 9.5,7.6 8.8,7.5 8.4,7.5 7.7,8.3 7.2,8.5 7.1,8.3 6.4,8.8 5.8,8.9 5.3))
+ST_OptimalAlphaShape_hole|POLYGON((8.9 5.3,9.1 5,8.7 4.2,9 3,8.8 2.9,8.4 1.9,7.8 1.6,7.3 1.6,6.5 1.6,5.3 1.8,4.3 1.9,3.7 2.3,3 2.2,2.8 3.3,2.3 3.6,2.6 4.4,2.7 5.4,2.3 6,2.4 6.7,2.7 7.7,2.4 8.2,2.6 8.5,3.4 8.6,3.9 8.8,4.5 9,4.9 9.5,5.2 9.8,5.7 9.7,6.4 9.7,7.2 9.5,7.6 8.8,7.5 8.4,7.5 7.7,8.3 7.2,8.5 7.1,8.3 6.4,8.8 5.8,8.9 5.3),(3.6 6.1,3.6 6.8,4 7.5,4.3 8,5 8.6,6 8.1,6.8 7.3,7.7 6.7,8.1 6,8.2 5.4,8.1 4.7,7.8 4.3,8.1 2.9,7.6 2.7,7 2,6.2 2.2,5.5 2.6,5.4 3.2,4.8 3.4,4.4 4.2,3.8 4.6,3.6 6.1))
diff --git a/sfcgal/regress/tests.mk b/sfcgal/regress/tests.mk.in
similarity index 67%
rename from sfcgal/regress/tests.mk
rename to sfcgal/regress/tests.mk.in
index efb2d0bfc..0879e9f99 100644
--- a/sfcgal/regress/tests.mk
+++ b/sfcgal/regress/tests.mk.in
@@ -9,8 +9,15 @@
# * the terms of the GNU General Public Licence. See the COPYING file.
# *
# **********************************************************************
+POSTGIS_PGSQL_VERSION=@POSTGIS_PGSQL_VERSION@
+POSTGIS_GEOS_VERSION=@POSTGIS_GEOS_VERSION@
+POSTGIS_SFCGAL_VERSION=@POSTGIS_SFCGAL_VERSION@
TESTS += \
$(topsrcdir)/sfcgal/regress/regress_sfcgal \
$(topsrcdir)/sfcgal/regress/approximatemedialaxis.sql
+ifeq ($(shell expr "$(POSTGIS_SFCGAL_VERSION)" ">=" 10401),1)
+ TESTS += \
+ $(topsrcdir)/sfcgal/regress/alphashape.sql
+endif
diff --git a/sfcgal/sfcgal.sql.in b/sfcgal/sfcgal.sql.in
index 57fe6ddd6..2466545ba 100644
--- a/sfcgal/sfcgal.sql.in
+++ b/sfcgal/sfcgal.sql.in
@@ -173,3 +173,19 @@ CREATE OR REPLACE FUNCTION ST_3DConvexHull(geometry)
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
COST 100;
COMMIT;
+
+-- Availability: 3.3.0
+CREATE OR REPLACE FUNCTION ST_AlphaShape(g1 geometry, alpha float8 DEFAULT 1.0, allow_holes boolean DEFAULT false)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'sfcgal_alphashape'
+ LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
+ COST 100;
+COMMIT;
+
+-- Availability: 3.3.0
+CREATE OR REPLACE FUNCTION ST_OptimalAlphaShape(g1 geometry, allow_holes boolean DEFAULT false, nb_components int DEFAULT 1)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'sfcgal_optimalalphashape'
+ LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
+ COST 100;
+COMMIT;
diff --git a/utils/check_tests_enabled.sh b/utils/check_tests_enabled.sh
index b041f6013..c7a289c30 100755
--- a/utils/check_tests_enabled.sh
+++ b/utils/check_tests_enabled.sh
@@ -79,6 +79,6 @@ cd ${RD}
check_enabled topology/test/tests.mk regress &&
check_enabled regress/loader/tests.mk &&
check_enabled regress/dumper/tests.mk &&
-check_enabled sfcgal/regress/tests.mk &&
+check_enabled sfcgal/regress/tests.mk.in &&
check_enabled regress/core/tests.mk.in &&
check_enabled raster/test/regress/tests.mk
-----------------------------------------------------------------------
Summary of changes:
.gitignore | 1 +
GNUmakefile.in | 2 +-
NEWS | 1 +
configure.ac | 2 +-
doc/html/image_src/st_alphashape01.wkt | 1 +
doc/html/image_src/st_alphashape02.wkt | 1 +
doc/html/image_src/st_optimalalphashape01.wkt | 1 +
doc/html/image_src/st_optimalalphashape02.wkt | 1 +
doc/reference_processing.xml | 2 +-
doc/reference_sfcgal.xml | 144 ++++++++++++++++++++++++++
sfcgal/lwgeom_sfcgal.c | 76 ++++++++++++++
sfcgal/lwgeom_sfcgal.h | 2 +
sfcgal/regress/Makefile.in | 2 +-
sfcgal/regress/alphashape.sql | 9 ++
sfcgal/regress/alphashape_expected | 4 +
sfcgal/regress/{tests.mk => tests.mk.in} | 7 ++
sfcgal/sfcgal.sql.in | 16 +++
utils/check_tests_enabled.sh | 2 +-
18 files changed, 269 insertions(+), 5 deletions(-)
create mode 100644 doc/html/image_src/st_alphashape01.wkt
create mode 100644 doc/html/image_src/st_alphashape02.wkt
create mode 100644 doc/html/image_src/st_optimalalphashape01.wkt
create mode 100644 doc/html/image_src/st_optimalalphashape02.wkt
create mode 100644 sfcgal/regress/alphashape.sql
create mode 100644 sfcgal/regress/alphashape_expected
rename sfcgal/regress/{tests.mk => tests.mk.in} (67%)
hooks/post-receive
--
PostGIS
More information about the postgis-tickets
mailing list