<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=us-ascii" http-equiv=Content-Type>
<STYLE>.hmmessage P {
PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px
}
BODY.hmmessage {
FONT-FAMILY: Tahoma; FONT-SIZE: 10pt
}
</STYLE>
<META name=GENERATOR content="MSHTML 9.00.8112.16434"></HEAD>
<BODY class=hmmessage>
<DIV dir=ltr align=left><SPAN class=980404021-23082011><FONT color=#0000ff
face=Arial>yah that error is just because the postgis optimizer
isn't optimized for left joins. You can ignore.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=980404021-23082011><FONT color=#0000ff
face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=980404021-23082011><FONT color=#0000ff
face=Arial>Hmm never tried that function with that many points. Will be
interesting to see what happens. I know there are some topological
exceptions that arise which we've tried to work around. I blame GEOS for
that. Will be nice to get some funding for GEOS to solve some of those
cases since those are a big pain for this and anything involving
Union. :)</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=980404021-23082011><FONT color=#0000ff
face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=980404021-23082011><FONT color=#0000ff
face=Arial>Right now the concave hull function is implemented in plpgsql, but I
think the new version of GEOS has some delaunay triangulation functions
which will make this process hopefully easier and a pure C
solution.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=980404021-23082011><FONT color=#0000ff
face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=980404021-23082011><FONT color=#0000ff
face=Arial>strk can comment on that.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=980404021-23082011><FONT color=#0000ff
face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=980404021-23082011><FONT color=#0000ff
face=Arial>Thanks,</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=980404021-23082011><FONT color=#0000ff
face=Arial>Regina</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=980404021-23082011><FONT color=#0000ff
face=Arial><A
href="http://www.postgis.us">http://www.postgis.us</A></FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=980404021-23082011><FONT color=#0000ff
face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=980404021-23082011><FONT color=#0000ff
face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=980404021-23082011><FONT color=#0000ff
face=Arial></FONT></SPAN> </DIV><FONT color=#0000ff face=Arial></FONT><BR>
<BLOCKQUOTE
style="BORDER-LEFT: #0000ff 2px solid; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; MARGIN-RIGHT: 0px"
dir=ltr>
<DIV dir=ltr lang=en-us class=OutlookMessageHeader align=left>
<HR tabIndex=-1>
<FONT face=Tahoma><B>From:</B> postgis-users-bounces@postgis.refractions.net
[mailto:postgis-users-bounces@postgis.refractions.net] <B>On Behalf Of
</B>Paul & Caroline Lewis<BR><B>Sent:</B> Tuesday, August 23, 2011 1:31
PM<BR><B>To:</B> PostGIS Users<BR><B>Subject:</B> [postgis-users] Array Size
Error<BR></FONT><BR></DIV>
<DIV></DIV>
<DIV dir=ltr>Thanks for you previous help and quick responses. I'm only
getting to look at your suggestions now, however I noticed in PostGIS 2.0
the ST_ConcaveHull() which is closer to our functionality needs so have
started to try and work with this instead of the convexhull option. Maybe
another to-do re aggregate operations of both
these functions.<BR> <BR>Anyway I started my first test
implementation from your suggestions in the following form:<BR> <BR>WITH
ctsubgroup AS <BR> ( SELECT
ST_ConcaveHull(ST_Force_2D(ST_Union(local_geom)), 0.9) As
geom<BR> FROM lidar_099<BR> GROUP BY
ST_SnapToGrid(local_geom, 10,10)<BR>)<BR>SELECT
ST_AsEWKT(ST_ConcaveHull(ST_Union(geom), 0.9))<BR>FROM
ctsubgroup;<BR> <BR>The table in question has 62 million popints and is a
small one. The Query is still running after 6 hours but quite quickly it
reported the following:<BR> <BR>**************PGADMIN MESSAGE -
START**************<BR>NOTICE: geometry_gist_joinsel called with
incorrect join type<BR>CONTEXT: SQL statement "SELECT
ST_Union(ARRAY(SELECT geom<BR> FROM
(<BR> -- fuse near neighbors
together<BR> SELECT DISTINCT ON (i)
i, ST_Distance(var_atempgeoms[i],var_atempgeoms[j]),
ST_Buffer(ST_MakeLine(var_atempgeoms[i], var_atempgeoms[j]) , var_buf*5,
'quad_segs=3') As geom<BR> FROM
generate_series(1,array_upper(var_atempgeoms, 1)) As
i<BR> INNER JOIN
generate_series(1,array_upper(var_atempgeoms, 1)) As j
<BR> ON
(<BR> NOT
ST_Intersects(var_atempgeoms[i],var_atempgeoms[j])<BR> AND
ST_DWithin(var_atempgeoms[i],var_atempgeoms[j],
var_buf*10)<BR> )<BR> UNION
ALL<BR> -- catch the ones with no near
neighbors<BR> SELECT i, 0,
ST_Buffer(var_atempgeoms[i] , var_buf*10, 'quad_segs=3') As
geom<BR> FROM
generate_series(1,array_upper(var_atempgeoms, 1)) As
i<BR> LEFT JOIN
generate_series(ceiling(array_upper(var_atempgeoms,1)/2)::integer,array_upper(var_atempgeoms,
1)) As j <BR> ON
(<BR> NOT
ST_Intersects(var_atempgeoms[i],var_atempgeoms[j])<BR> AND
ST_DWithin(var_atempgeoms[i],var_atempgeoms[j], var_buf*10)
<BR> )<BR> WHERE
j IS NULL<BR> ORDER BY 1,
2<BR> ) As foo ) )"<BR>PL/pgSQL
function "st_concavehull" line 39 at assignment<BR>NOTICE:
geometry_gist_joinsel called with incorrect join type<BR>CONTEXT: SQL
statement "SELECT ST_Union(ARRAY(SELECT
geom<BR> FROM
(<BR> -- fuse near neighbors
together<BR> SELECT DISTINCT ON (i)
i, ST_Distance(var_atempgeoms[i],var_atempgeoms[j]),
ST_Buffer(ST_MakeLine(var_atempgeoms[i], var_atempgeoms[j]) , var_buf*5,
'quad_segs=3') As geom<BR> FROM
generate_series(1,array_upper(var_atempgeoms, 1)) As
i<BR> INNER JOIN
generate_series(1,array_upper(var_atempgeoms, 1)) As j
<BR> ON
(<BR> NOT
ST_Intersects(var_atempgeoms[i],var_atempgeoms[j])<BR> AND
ST_DWithin(var_atempgeoms[i],var_atempgeoms[j],
var_buf*10)<BR> )<BR> UNION
ALL<BR> -- catch the ones with no near
neighbors<BR> SELECT i, 0,
ST_Buffer(var_atempgeoms[i] , var_buf*10, 'quad_segs=3') As
geom<BR> FROM
generate_series(1,array_upper(var_atempgeoms, 1)) As
i<BR> LEFT JOIN
generate_series(ceiling(array_upper(var_atempgeoms,1)/2)::integer,array_upper(var_atempgeoms,
1)) As j <BR> ON
(<BR> NOT
ST_Intersects(var_atempgeoms[i],var_atempgeoms[j])<BR> AND
ST_DWithin(var_atempgeoms[i],var_atempgeoms[j], var_buf*10)
<BR> )<BR> WHERE
j IS NULL<BR> ORDER BY 1,
2<BR> ) As foo ) )"<BR>PL/pgSQL
function "st_concavehull" line 39 at assignment<BR>NOTICE:
geometry_gist_joinsel called with incorrect join type<BR>CONTEXT: SQL
statement "SELECT ST_Union(ARRAY(SELECT
geom<BR> FROM
(<BR> -- fuse near neighbors
together<BR> SELECT DISTINCT ON (i)
i, ST_Distance(var_atempgeoms[i],var_atempgeoms[j]),
ST_Buffer(ST_MakeLine(var_atempgeoms[i], var_atempgeoms[j]) , var_buf*5,
'quad_segs=3') As geom<BR> FROM
generate_series(1,array_upper(var_atempgeoms, 1)) As
i<BR> INNER JOIN
generate_series(1,array_upper(var_atempgeoms, 1)) As j
<BR> ON
(<BR> NOT
ST_Intersects(var_atempgeoms[i],var_atempgeoms[j])<BR> AND
ST_DWithin(var_atempgeoms[i],var_atempgeoms[j],
var_buf*10)<BR> )<BR> UNION
ALL<BR> -- catch the ones with no near
neighbors<BR> SELECT i, 0,
ST_Buffer(var_atempgeoms[i] , var_buf*10, 'quad_segs=3') As
geom<BR> FROM
generate_series(1,array_upper(var_atempgeoms, 1)) As
i<BR> LEFT JOIN
generate_series(ceiling(array_upper(var_atempgeoms,1)/2)::integer,array_upper(var_atempgeoms,
1)) As j <BR> ON
(<BR> NOT
ST_Intersects(var_atempgeoms[i],var_atempgeoms[j])<BR> AND
ST_DWithin(var_atempgeoms[i],var_atempgeoms[j], var_buf*10)
<BR> )<BR> WHERE
j IS NULL<BR> ORDER BY 1,
2<BR> ) As foo ) )"<BR>PL/pgSQL
function "st_concavehull" line 39 at assignment<BR>**************PGADMIN
MESSAGE - END**************<BR> <BR>Is this a significant issue as the
Query still seems to be
running.<BR> <BR>Cheers,<BR> <BR>Paul<BR> <BR> <BR></DIV></BLOCKQUOTE></BODY></HTML>