跳转至
🎉 Apache Sedona 1.9.1 已正式发布!🗺️ 新增 Geography SQL 函数、Box2D 与 Box3D 类型、栅格 Python UDF 等。查看发布说明 →

RS_ZonalStatsAll

Introduction: Returns a struct of statistic values, where each statistic is computed over a region defined by the zone geometry. The struct has the following schema:

For polygon geometries, the allTouched parameter (Since v1.7.1) determines how pixels are selected:

  • When true, pixel selection also includes cells entered by the polygon's boundary, following the RS_AsRaster rules.
  • When false (default), pixels whose centroid intersects the polygon will be included.

A polygon never selects a pixel it touches only on the pixel's boundary, whichever edge that is. A polygon aligned with grid lines selects only pixels inside it.

Point geometries select the single pixel containing the point under the half-open rule, regardless of allTouched. Line rasterization follows the cells entered by its segments rather than requiring a pixel-centre intersection. A point or line lying on an internal grid edge selects the pixel after it in pixel order; one lying on the raster's last edge selects none. A neighboring pixel contacted only at a line endpoint is not selected unless the segment enters it.

RS_ZonalStatsAll_allTouched

  • count: Count of the pixels.
  • sum: Sum of the pixel values.
  • mean: Arithmetic mean.
  • median: Median.
  • mode: Mode.
  • stddev: Standard deviation.
  • variance: Variance.
  • min: Minimum value of the zone.
  • max: Maximum value of the zone.

Note

If the coordinate reference system (CRS) of the input zone geometry differs from that of the raster, then zone will be transformed to match the CRS of the raster before computation.

The following conditions will throw an IllegalArgumentException if they are not met:

  • The provided raster and zone geometry should intersect when lenient parameter is set to false.
  • The option provided to statType should be valid.

lenient parameter is set to true by default. The function will return null if the raster and zone geometry do not intersect.

RS_ZonalStatsAll

Format:

RS_ZonalStatsAll(raster: Raster, zone: Geometry)
RS_ZonalStatsAll(raster: Raster, zone: Geometry, band: Integer)
RS_ZonalStatsAll(raster: Raster, zone: Geometry, band: Integer, allTouched: Boolean)
RS_ZonalStatsAll(raster: Raster, zone: Geometry, band: Integer, allTouched: Boolean, excludeNodata: Boolean)
RS_ZonalStatsAll(raster: Raster, zone: Geometry, band: Integer, allTouched: Boolean, excludeNodata: Boolean, lenient: Boolean)

Return type: Struct<count: Long, sum: Double, mean: Double, median: Double, mode: Double, stddev: Double, variance: Double, min: Double, max: Double>

Since: v1.5.1

SQL Example

RS_ZonalStatsAll(rast1, geom1, 1, true, false)

Output:

{184792.0, 1.0690406E7, 57.851021689230684, 0.0, 0.0, 92.13277429243035, 8488.448098819916, 0.0, 255.0}

SQL Example

RS_ZonalStatsAll(rast2, geom2, 1, false, true)

Output:

{14184.0, 3213526.0, 226.55992667794473, 255.0, 255.0, 74.87605357255357, 5606.423398599913, 1.0, 255.0}