Andreas,

My way of solving this issue is to do a weighted mean based on the area of the 
part of the pixel intersecting. ST_Intersection() return a geomval of the true 
intersecting part. You must weigh the elevation with the area of the 
intersecting part. I explain how to do this at the end of the tutorial:

http://trac.osgeo.org/postgis/wiki/WKTRasterTutorial01

Pierre

> -----Original Message-----
> From: [email protected] [mailto:postgis-users-
> [email protected]] On Behalf Of Andreas Forø Tollefsen
> Sent: Thursday, November 24, 2011 5:14 AM
> To: PostGIS Users Discussion
> Subject: [postgis-users] Raster pixel value
> 
> Hi,
> 
> I am trying to calculate the average pixel value in a elevation raster inside
> quadrate polygons.
> However, I am not getting the correct values from my query:
> 
> SELECT gid, AVG(((foo.geomval).val)) as avgmnt FROM (SELECT p.gid,
> ST_Intersection(p.cell, r.rast) AS geomval FROM mountain r, priogrid_land p
> WHERE ST_Intersects(p.cell, r.rast, ) AND p.gid =186124) AS foo GROUP BY
> gid ORDER BY gid;
> 
> The problem here is that the ST_Intersects(geom, rast) takes into
> consideration the pixels that is outside, but touches the border of the
> quadrate polygons. Then, the average values for each quadrate polygon is
> affected by pixels inside other polygons. This will potentially lead to a
> flawed result.
> So what I want is to be able to calculate the average value for the pixels
> INSIDE the polygon excluding those outside.
> 
> How can i restrict the AVG pixel value to be calculated only for pixels that 
> is
> inside the polygon, and not the pixels that touch the outside of the border?
> 
> Thanks!
> 
> Best,
> Andreas
> 

_______________________________________________
postgis-users mailing list
[email protected]
http://postgis.refractions.net/mailman/listinfo/postgis-users

Reply via email to