253 | | CREATE TYPE raster_geom AS (value integer[], geom geometry); |
254 | | |
255 | | |
256 | | FOR poly IN SELECT ST_GeomFromText(r.geom), FROM ST_AsWKTPolygon(rast) AS r LOOP |
257 | | RETURN NEXT poly; |
258 | | END LOOP; |
| 253 | CREATE TYPE geomval AS (geom geometry, val float8); |
| 254 | CREATE TYPE wktgeomval AS (wktgeom text, val float8); |
| 255 | |
| 256 | CREATE OR REPLACE FUNCTION ST_AsPolygon(rast) RETURNS SETOF geomval AS |
| 257 | $BODY$ |
| 258 | DECLARE |
| 259 | pl geomval%rowtype; |
| 260 | BEGIN |
| 261 | FOR pl IN SELECT ST_GeomFromText(wktgeomval.wktgeom), wktgeomval.val FROM ST_Dump(ST_GeomFromText(txtgeom)) AS wktgeomval |
| 262 | LOOP |
| 263 | RETURN NEXT pl; |
| 264 | END LOOP; |
| 265 | RETURN; |
| 266 | END |
| 267 | $BODY$ |
| 268 | LANGUAGE 'plpgsql'; |
| 269 | |
| 270 | So it can then be used like this: |
| 271 | |
| 272 | SELECT (ST_AsPolygon(rast)).val, (ST_AsPolygon(rast)).geom FROM sometable |