> The result is that I change raster values in only 1 of the 81 polygon cells 
> that I have in
> schema.data_vector. What am I missing here? Thanks for your help! Keep
> up the great work!

UPDATE schema.data_raster SET rast = ST_SetValue(rast,1, geom, 100)
FROM schema.data_vector

I don't fully understand the behavior of UPDATE in that case but, or it join 
with only one row of schema.data_vector, or it join with all of them but only 
the last one is used to update schema.data_raster. Or actually probably 
schema.data_raster is updated many times but always from the original value. 
Not incrementally.

Hugues suggestion:

SELECT rid,  ST_SetValue(rast,1, geom, 100) AS RAST
FROM schema.data_raster, schema.data_vector

Would produce as many raster rows as you have geometries...

There are two better ways to do this...

The first one is to ST_Union the rasterizization of the geometries and to union 
it with the existing raster:

SELECT ST_Union(rast, 'LAST') rast
FROM 
(SELECT rast FROM schema.data_raster
UNION ALL
SELECT ST_Union(ST_AsRaster(geom, rast, '16BSI', elevation, -10000)) rast
FROM schema.data_raster, schema.data_vector
) foo

You can probably assign this single result as an UPDATE to your table..

The second one is to install the PostGIS Add-ons from 
https://github.com/pedrogit/postgisaddons/releases
and to do something like:

SELECT ST_ExtractToRaster(ST_AddBand(ST_MakeEmptyRaster(rast), '16BSI'), 
'schema', 'geomtable', 'data_vector', 'elevation', 
'MEAN_OF_VALUES_AT_PIXEL_CENTROID') rast FROM schema.data_raster;

You can probably also assign this single result as an UPDATE to your table...

Pierre

_______________________________________________
postgis-users mailing list
postgis-users@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users

Reply via email to