[postgis-devel] Faster ST_Intersection

Paul Ramsey pramsey at cleverelephant.ca
Tue Oct 23 10:04:36 PDT 2018


The first GIS system I ever used had an “intersection area” function that was distinct from, and faster than, the full-on “intersection” function that output a new geometry. I wonder if there is some possibility there…

P

> On Oct 23, 2018, at 6:01 PM, Darafei Komяpa Praliaskouski <me at komzpa.net> wrote:
> 
> Hi,
> 
> I have two polygonal layers to intersect and need to measure area of intersections.
> 
> ST_Area(ST_Intersection(a.geom, b.geom)) works fine, but is rather slow. Typical polygon on first side has <10 edges, on second 200..1000 edges.
> 
> What are my options to make it faster? Any ideas, links, experiences to share are welcome.
> 
> For starters, this seems to work faster than vanilla ST_Intersection in my case:
> create or replace function clipped_st_intersection(geom1 geometry, geom2 geometry)
>   returns geometry
> as $$select ST_Intersection(
>               case
>                 when ST_MemSize(geom1) > 160 then ST_ClipByBox2D(geom1, geom2)
>                 else geom1 end, case
>                 when ST_MemSize(geom2) > 160 then ST_ClipByBox2D(geom2, geom1)
>                 else geom2 end)$$
> language sql
> immutable
> strict
> parallel safe;
> -- 
> Darafei Praliaskouski
> Support me: http://patreon.com/komzpa <http://patreon.com/komzpa>_______________________________________________
> postgis-devel mailing list
> postgis-devel at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/postgis-devel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-devel/attachments/20181023/684d6e61/attachment.html>


More information about the postgis-devel mailing list