Thanks for your suggestion Pierre. I am working with v2.0 and it seems that ST_PixelsAsPolygons() is not available. The singular Pixel version works though. Any idea why that would be?<div><br></div><div>Peter<br><br><div class="gmail_quote">
On Wed, Apr 4, 2012 at 7:31 AM, Pierre Racine <span dir="ltr"><<a href="mailto:Pierre.Racine@sbf.ulaval.ca">Pierre.Racine@sbf.ulaval.ca</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">> I would like to create a raster of an area-weighted average value derived from a<br>
> polygon layer. The raster template is a 2km grid and the polygon layer is also a<br>
> grid but at 10km. If some one could recommend a (high level) strategy for this if<br>
> be grateful.<br>
<br>
</div>1) Create a vector grid having a x and a y like this:<br>
<br>
CREATE TABLE yourgrid AS<br>
SELECT (gvxy).geom geom, (gvxy).x x,  (gvxy).y y<br>
FROM (SELECT ST_PixelsAsPolygons(rast) gvxy<br>
             FROM (SELECT ST_MakeEmptyRaster(your own parameters here covering your polygon extent)) foo1) foo2<br></blockquote><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<br>
2) Make sure your polygon layer is indexed<br>
<br>
CREATE INDEX yourpolylayer_geom_idx  ON yourpolylayer USING gist  (geom );<br>
<br>
3) Intersect mygrid with your polygon layer and generate summary stats at the same time:<br>
<br>
CREATE TABLE weightedvectorgrid AS<br>
SELECT g.x, g.y, g.geom, (aws).weightedmean mean<br>
FROM (SELECT ST_AreaWeightedSummaryStats(intgeom, p.value) aws, g.x, g.y, g.geom<br>
      FROM (SELECT ST_Intersection(g.geom, p.geom) intgeom, p.value, g.x, g.y, g.geom<br>
            FROM yourgrid g, yourpolylayer p<br>
            WHERE ST_Intersects(g.geom, p.geom)<br>
           ) foo<br>
      GROUP BY g.x, g.y, g.geom<br>
     ) foo2<br>
<br>
The ST_AreaWeightedSummaryStats() function is not part of the PostGIS release but is available as part of the source tree:<br>
<br>
<a href="http://trac.osgeo.org/postgis/browser/trunk/raster/scripts/plpgsql/st_areaweightedsummarystats.sql" target="_blank">http://trac.osgeo.org/postgis/browser/trunk/raster/scripts/plpgsql/st_areaweightedsummarystats.sql</a><br>

<br>
4) Union all the geometry as a raster (this one might be a bit slow depending on the size of your grid)<br>
<br>
CREATE TABLE weightedrastergrid AS<br>
SELECT ST_Union(ST_AsRaster(geom, 'MEAN')) rast<br>
FROM weightedvectorgrid<br>
<br>
I wrote all these without testing so you might have some adjustment to do.<br>
<br>
Let me know about your progress...<br>
<br>
Pierre<br>
_______________________________________________<br>
postgis-users mailing list<br>
<a href="mailto:postgis-users@postgis.refractions.net">postgis-users@postgis.refractions.net</a><br>
<a href="http://postgis.refractions.net/mailman/listinfo/postgis-users" target="_blank">http://postgis.refractions.net/mailman/listinfo/postgis-users</a><br>
</blockquote></div><br></div>