<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style>
</head>
<body lang="EN-US" link="blue" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">This would be incredibly useful and likely become one of the most used functions in Postgis!
</p>
<p class="MsoNormal"><br>
Personally I think the simplest most intuitive function definition would be</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">st_polygonal_overlay(idpoly[]) RETURNS SETOF idpolyportion;<br>
<br>
CREATE TYPE idpoly(</p>
<p class="MsoNormal"> id integer,</p>
<p class="MsoNormal"> geom geometry(Polygon)</p>
<p class="MsoNormal">);</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">CREATE TYPE idpoly_portion(</p>
<p class="MsoNormal"> parent_ids integer[],</p>
<p class="MsoNormal"> geom geometry(Polygon)</p>
<p class="MsoNormal">);</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">This would make it trivial to recombine the geometries with the originals.<br>
<br>
The biggest question I’d have would be how would parallelization work? Might be helpful to have another function that would create an ideal grid for clipping input geometries maybe something like:</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">st_create_parallel_overlay_grid(geoms geometry[], numcores integer, max_mem_per_grid integer) RETURNS box2d;<br>
<br>
This way you could spread out st_polygonal_overlay across cores, then recombine using st_union by comparing parent_ids.</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986">
Mail</a> for Windows 10</p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>