Name

ST_Clip — Returnerar det raster som klippts av indatageometrin. Om bandnummer inte anges bearbetas alla band. Om crop inte anges eller om TRUE anges, beskärs utdatarastret. Om touched är inställt på TRUE inkluderas pixlar som berörs, annars inkluderas endast pixlar vars mittpunkt ligger i geometrin.

Synopsis

raster ST_Clip(raster rast, integer[] nband, geometry geom, double precision[] nodataval=NULL, boolean crop=TRUE, boolean touched=FALSE);

raster ST_Clip(raster rast, integer nband, geometry geom, double precision nodataval, boolean crop=TRUE, boolean touched=FALSE);

raster ST_Clip(raster rast, integer nband, geometry geom, boolean crop, boolean touched=FALSE);

raster ST_Clip(raster rast, geometry geom, double precision[] nodataval=NULL, boolean crop=TRUE, boolean touched=FALSE);

raster ST_Clip(raster rast, geometry geom, double precision nodataval, boolean crop=TRUE, boolean touched=FALSE);

raster ST_Clip(raster rast, geometry geom, boolean crop, boolean touched=FALSE);

Beskrivning

Returnerar ett raster som är klippt av indatageometrin geom. Om bandindex inte anges bearbetas alla band.

Raster som blir resultatet av ST_Clip måste ha ett nodatavärde tilldelat för områden som klippts, ett för varje band. Om inget anges och indatarastret inte har något nodatavärde definierat, sätts nodatavärdena för det resulterande rastret till ST_MinPossibleValue(ST_BandPixelType(rast, band)). När antalet nodatavärden i matrisen är mindre än antalet band används det sista i matrisen för de återstående banden. Om antalet nodatavärden är större än antalet band ignoreras de extra nodatavärdena. Alla varianter som accepterar en matris med noddatavärden accepterar också ett enda värde som tilldelas varje band.

Om crop inte anges antas true, vilket innebär att utdatarastret beskärs till skärningspunkten mellan geom- och rast-utbredningarna. Om crop är satt till false får det nya rastret samma utsträckning som rast. Om touched är satt till true väljs alla pixlar i rast som skär geometrin.

[Note]

Standardinställningen är touched=false, vilket innebär att endast pixlar vars mittpunkt täcks av geometrin väljs.

Förbättrad: 3.5.0 - rörda argument har lagts till.

Tillgänglighet: 2.0.0

Förbättrad: 2.1.0 Omskriven i C

I exemplen här används flygdata från Massachusetts som finns tillgängliga på MassGIS webbplats MassGIS Aerial Orthos.

Exempel: Jämförelse mellan att välja alla som berörs och inte alla som berörs

SELECT ST_Count(rast) AS count_pixels_in_orig, ST_Count(rast_touched) AS all_touched_pixels, ST_Count(rast_not_touched) AS default_clip
FROM ST_AsRaster(ST_Letters('R'), scalex =
> 1.0, scaley =
> -1.0) AS r(rast)
    INNER JOIN ST_GeomFromText('LINESTRING(0 1, 5 6, 10 10)') AS g(geom)
 ON ST_Intersects(r.rast,g.geom)
 , ST_Clip(r.rast, g.geom, touched =
> true) AS rast_touched
 , ST_Clip(r.rast, g.geom, touched =
> false) AS rast_not_touched;

 count_pixels_in_orig | all_touched_pixels | default_clip
----------------------+--------------------+--------------
                 2605 |                 16 |           10
(1 row)
 

Exempel: 1 bandklippning (inte berörd)

-- Clip the first band of an aerial tile by a 20 meter buffer.
SELECT ST_Clip(rast, 1,
        ST_Buffer(ST_Centroid(ST_Envelope(rast)),20)
    ) from aerials.boston
WHERE rid = 4;
                    
-- Demonstrate effect of crop on final dimensions of raster
-- Note how final extent is clipped to that of the geometry
-- if crop = true
SELECT ST_XMax(ST_Envelope(ST_Clip(rast, 1, clipper, true))) As xmax_w_trim,
    ST_XMax(clipper) As xmax_clipper,
    ST_XMax(ST_Envelope(ST_Clip(rast, 1, clipper, false))) As xmax_wo_trim,
    ST_XMax(ST_Envelope(rast)) As xmax_rast_orig
FROM (SELECT rast, ST_Buffer(ST_Centroid(ST_Envelope(rast)),6) As clipper
    FROM aerials.boston
WHERE rid = 6) As foo;

   xmax_w_trim    |   xmax_clipper   |   xmax_wo_trim   |  xmax_rast_orig
------------------+------------------+------------------+------------------
 230657.436173996 | 230657.436173996 | 230666.436173996 | 230666.436173996
                    

Fullständig rasterplatta före klippning

Efter klippning

Exempel: klippning av 1 band utan beskärning och lägg tillbaka andra band oförändrade

-- Same example as before, but we need to set crop to false to be able to use ST_AddBand
-- because ST_AddBand requires all bands be the same Width and height
SELECT ST_AddBand(ST_Clip(rast, 1,
        ST_Buffer(ST_Centroid(ST_Envelope(rast)),20),false
    ), ARRAY[ST_Band(rast,2),ST_Band(rast,3)] ) from aerials.boston
WHERE rid = 6;
                    

Fullständig rasterplatta före klippning

Efter klippning - surrealistisk

Exempel: Klipp alla band

-- Clip all bands of an aerial tile by a 20 meter buffer.
-- Only difference is we don't specify a specific band to clip
-- so all bands are clipped
SELECT ST_Clip(rast,
      ST_Buffer(ST_Centroid(ST_Envelope(rast)), 20),
      false
    ) from aerials.boston
WHERE rid = 4;
                    

Fullständig rasterplatta före klippning

Efter klippning