[postgis-users] Using PostGIS for partial intersection/union of many polygons

Martin Davis mtnclimb at telus.net
Tue Jul 30 19:37:47 PDT 2013


This kind of question can be answered by a classic N-polygon overlay.  
AFAIK PostGIS doesn't have such a function directly, so you will have to 
compute the noding of the polygon linework, followed by a polygonization 
step.  Then take a interior point of each resultant polygon and compute 
how many source polygons it lies in.  You can then union the set of 
polygons for each count of interest.

Be warned - if the sample below is representative of your data, you may 
well encounter TopologyExceptions, since it appears that there is a lot 
of nearly coincident linework.

No doubt others can weigh in if there is a better way of doing this in 
PostGIS.

On 7/30/2013 9:37 AM, Sparr wrote:
> It was suggested on IRC that I ask this question to this mailing list.
>
> I have a set of 1000 (or many more) polygons, most of which intersect 
> with each other. I want to produce a polygon (or set of polygons, or 
> an empty set) describing the area covered by N-or-more of those 
> polygons. For N=1, the answer is the union of all of the polygons. For 
> N=1000, the answer is their intersection. The naive way to calculate 
> N=2 through N=999 is to make a list of combinations of polygons, 
> intersect those, and then union the results, but this will require a 
> prohibitively large number of union and intersection operations in 
> some cases.
>
> To illustrate the problem, here is an example with a smaller set of 
> data (422 polygons right now):
>
> http://regionaldifferences.com/results.html?region=New%20England&lat=42&lon=-73&zoom=6
>
> If you hover your mouse over the center of Massachusetts you'll see 
> that 98% of the polygons (415/422 currently) intersect there. Syracuse 
> NY is about 25%.
>
> What I want is the outline of specific percentiles on this map. I want 
> a single polygon representing the 50%-or-more area, and a single 
> polygon representing the 90%-or-more area, etc.
>
> Can PostGIS do this without my needing to assemble a string of union 
> and intersection operations for the query? I would prefer not to 
> rasterize the data unless it proves infeasible to do this with the 
> full precision vector data.
>
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at lists.osgeo.org
> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>
>
> No virus found in this message.
> Checked by AVG - www.avg.com <http://www.avg.com>
> Version: 2013.0.3349 / Virus Database: 3209/6535 - Release Date: 07/30/13
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20130730/4e1cac3c/attachment.html>


More information about the postgis-users mailing list