[postgis-devel] Faster ST_Intersection

Martin Davis mtnclimb at gmail.com
Tue Oct 23 11:24:36 PDT 2018


Darafei, what is your use case for needing intersection areas only?

It seems like this should be a common use case in spatial analysis - as
long as no spatial visualization of the results are required.  (And if they
are, perhaps simply computing an interior point for each resultant would
suffice for visualization purposes?  Which should also be amenable to a
faster algorithm - perhaps called InteriorPointClipped)

On Tue, Oct 23, 2018 at 10:02 AM 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
> _______________________________________________
> 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/3f9a5adf/attachment.html>


More information about the postgis-devel mailing list