Hi, Regina, It did not work. ERROR: function st_optimalalphashape(geometry) does not exist LINE 1: SELECT min(gs) , max(gs), st_optimalalphashape(st_collect(S... ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. SQL state: 42883 Character: 28
On Mon, 11 Sept 2023 at 08:31, Regina Obe <l...@pcorp.us> wrote: > You are using the wrong version of ST_Collect. You want to use the > aggregate form. You are using the two point form - > https://postgis.net/docs/en/ST_Collect.html > > > > Also when you aggregate, you can’t include the gs in there. > > > > Try: > > > > SELECT min(gs) , max(gs), > st_optimalalphashape(st_collect(ST_MakePoint(random()*10,random()*10)) ) > > from generate_series(1,100) gs; > > > > *From:* postgis-users <postgis-users-boun...@lists.osgeo.org> *On Behalf > Of *Shaozhong SHI > *Sent:* Monday, September 11, 2023 3:21 AM > *To:* PostGIS Users Discussion <postgis-users@lists.osgeo.org> > *Subject:* Re: [postgis-users] generate a geometry column of random > point, line and polygon > > > > I tested St_optimalphashape and it does not work. > > > > select gs, > st_optimalalphashape(st_collect(ST_MakePoint(random()*10,random()*10),ST_MakePoint(random()*10,random()*10))::geometry) > > from generate_series(1,100) gs; > > > > Example given here does not work either. > > ST_OptimalAlphaShape (postgis.net) > <https://postgis.net/docs/en/ST_OptimalAlphaShape.html> > > > > Regards, > > > > David > > > > On Fri, 8 Sept 2023 at 16:16, Regina Obe <l...@pcorp.us> wrote: > > David, > > > > The example query in the docs, is as simple as it gets. It’s a > self-contained example you can just run, but it does return a multipoint > and I realize now the docs don’t make it clear ST_GeneratePoints returns a > single geometry that is a multipoint. > > > > IF you want individual points, you’d combine with ST_DumpPoints. > > I’ll add such an example to the docs. > > > > So here is an example you can apply to a table of polygons > > > > For polygons you can do something like below where p is the table name and > geom is the polygon column. > > This will generate 100 random points for each polygon > > > > > > SELECT p.id, dp.path[1], dp.geom > > FROM p, ST_DumpPoints(ST_GeneratePoints(p.geom, 100)) AS dp; > > > > The p.id and path I just threw in cause I find them useful, but you could > leave them out. > > > > > > Here is a self-contained using the example table in docs: > > > > WITH p AS ( SELECT 1 AS id, ST_Buffer( > > ST_GeomFromText( > > 'LINESTRING(50 50,150 150,150 50)'), > > 10, 'endcap=round join=round') AS geom) > > SELECT p.id, dp.path[1], dp.geom > > FROM p, ST_DumpPoints(ST_GeneratePoints(p.geom, 100)) AS dp; > > > > > > *From:* postgis-users <postgis-users-boun...@lists.osgeo.org> *On Behalf > Of *Shaozhong SHI > *Sent:* Friday, September 8, 2023 10:54 AM > *To:* PostGIS Users Discussion <postgis-users@lists.osgeo.org> > *Subject:* Re: [postgis-users] generate a geometry column of random > point, line and polygon > > > > The simplicity is beautiful. Any simple script to do so? I think that > will be an useful addition. > > Regards, > > David > > On Friday, 8 September 2023, Regina Obe <l...@pcorp.us> wrote: > > David, > > > > For this are you needing to generate random points from a line or polygon > or are you trying to generate random polygons, lines, and points? > > > > If you need to generate random points from a polygon: > > > > Use ST_GeneratePoints: https://postgis.net/docs/en/ST_GeneratePoints.html > > Note there is a option seed argument, that will give you the same exact > answer if you give it the same seed, but without that the generated points > will be different each time. > > > > As I recall, ST_GeneratePoints only works with areals so won’t work with a > line, however you can buffer a line very thinly to do the same. Use a flat > buffer: > > > > https://postgis.net/docs/en/ST_Buffer.html > > > > SELECT ST_GeneratePoints(ST_Buffer( > > ST_GeomFromText( > > 'LINESTRING(50 50,150 150,150 50)' > > ), 0.5, 'endcap=square join=round'), 1000); > > > > > > If you want to generate random polygons, you could use ST_ConcaveHull or > ST_AlphaShape around the section of a polygon you did a ST_GeneratePoints on > > > > And then use something like https://postgis.net/docs/en/ST_Subdivide.html > to chop up the polygons. > > > > To get a linestring out of that (It will be closed), you can take the > boundary of any of the above > > > > https://postgis.net/docs/ST_Boundary.html > > > > Hope that helps, > > Regina > > > > *From:* postgis-users <postgis-users-boun...@lists.osgeo.org> *On Behalf > Of *Shaozhong SHI > *Sent:* Friday, September 8, 2023 7:56 AM > *To:* PostGIS Users Discussion <postgis-users@lists.osgeo.org> > *Subject:* [postgis-users] generate a geometry column of random point, > line and polygon > > > > Is a simple way to do this? > > > > Regards, > > > > David > > _______________________________________________ > postgis-users mailing list > postgis-users@lists.osgeo.org > https://lists.osgeo.org/mailman/listinfo/postgis-users > > _______________________________________________ > postgis-users mailing list > postgis-users@lists.osgeo.org > https://lists.osgeo.org/mailman/listinfo/postgis-users >
_______________________________________________ postgis-users mailing list postgis-users@lists.osgeo.org https://lists.osgeo.org/mailman/listinfo/postgis-users