Skip to content

ST_Difference

Computes the difference between geomA and geomB.

Usage

geometry ST_Difference(geomA: geometry, geomB: geometry)
geography ST_Difference(geogA: geography, geogB: geography)

Arguments

  • geogA (geography): Input geography
  • geogB (geography): Input geography
  • geomA (geometry): Input geometry
  • geomB (geometry): Input geometry

Description

Returns the part of geometry A that does not intersect with geometry B.

Examples

SELECT ST_Difference(
    ST_GeomFromText('POLYGON ((1 1, 11 1, 11 11, 1 11, 1 1))'),
    ST_GeomFromText('POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))')
) AS val;
┌─────────────────────────────────────────────────┐
│                       val                       │
│                     geometry                    │
╞═════════════════════════════════════════════════╡
│ POLYGON((1 11,11 11,11 1,10 1,10 10,1 10,1 11)) │
└─────────────────────────────────────────────────┘
SELECT ST_Difference(
    ST_GeogFromText('POLYGON ((1 1, 11 1, 11 11, 1 11, 1 1))'),
    ST_GeogFromText('POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))')
) AS val;
┌──────────────────────────────────────────────────────────────────────────────┐
│                                      val                                     │
│                                   geography                                  │
╞══════════════════════════════════════════════════════════════════════════════╡
│ POLYGON((10 10.000000000000002,10.000000000000002 1.0013743031643259,11 0.9… │
└──────────────────────────────────────────────────────────────────────────────┘