[postgis-users] ST_AsRaster and gdal_translate
Guillaume Drolet DRF
DROGU2 at intranet.mrn.gouv
Wed Jul 25 12:57:26 PDT 2012
Hi,
I have been struggling with this since yesterday and now I think it is
time for me to request some help from the community :
I am trying to convert a geometry table (polygons) to a raster that will
have 1000 m-pixels, and then export that raster to a TIF file using
gdal_translate.
I've tried loads of different queries but nothing seems to work... Here
are examples of some the queries I tried:
CREATE TABLE rasters.bdtq_20k_hydro_so_gfsm_aea_subset_1000m AS
SELECT ST_AsRaster(hyd.geom, 1000.0, 1000.0) AS rast
FROM hydrology.bdtq_20k_hydro_so_gfsm_aea_subset AS hyd;
ALTER TABLE rasters.bdtq_20k_hydro_so_gfsm_aea_subset_1000m ADD COLUMN
rid serial PRIMARY KEY;
CREATE INDEX
ON rasters.bdtq_20k_hydro_so_gfsm_aea_subset_1000m
USING gist(st_convexhull(rast));
SELECT AddRasterConstraints('rasters'::name,
'bdtq_20k_hydro_so_gfsm_aea_subset_1000m'::name,
'rast'::name);
Then at the command line:
>gdal_translate "PG:host=localhost port=5432 dbname=testspdb
user=postgres password=*** schema=rasters
table=bdtq_20k_hydro_so_gfsm_aea_subset_1000m mode=2" E:\temp\hydro1000m.tif
I get this error:
ERROR 1: Error, the table
rasters.bdtq_20k_hydro_so_gfsm_aea_subset_1000m contains tiles with
different size, and irregular blocking is not supported yet
GDALOpen failed - 1
Error, the table rasters.bdtq_20k_hydro_so_gfsm_aea_subset_1000m
contains tiles
with different size, and irregular blocking is not supported yet
My problem seems to be related to the irregular blocking of my raster. I
though I could create a raster with regular block and pixel size but I
didn't figure how to do this yet. I tried to achieve this by creating an
empty raster:
CREATE TABLE rasters.test_rasterize (
rid serial PRIMARY KEY,
rast raster
);
INSERT INTO rasters.test_rasterize VALUES (
1,
ST_MakeEmptyRaster(45, 62, 1828552.00, 1422569.00, 1000.0, 1000.0,
0.0, 0.0, 3175)
);
-- 45 and 62 are the approximate numbers of 1000 m pixels in x and y
that fit inside the extent of my geometry layer
UPDATE rasters.test_rasterize
SET rast = ST_AsRaster(geom, 1000.0, 1000.0)
FROM hydrology.bdtq_20k_hydro_so_gfsm_aea_subset;
When I call gdal_translate with rasters.test_rasterize, I get this:
Input file size is 2, 4
0...10...20...30...40...50...60...70...80...90...100 - done.
I'm getting desperate and will greatly appreciate any hints!
If that can help, I'm using PostGIS 2.0.0 r9605 and GDAL 1.9.0
Many thanks,
Guillaume
More information about the postgis-users
mailing list