[postgis-users] PostGIS - Simple Raster Point Query
Pierre Racine
Pierre.Racine at sbf.ulaval.ca
Sat Dec 8 03:49:22 PST 2012
ST_Point does not set the SRID you have to do it explicitly:
select st_value(rast,ST_SetSRID(ST_Point(1821416, 5649720), 2193)) from nzdem3
If your raster is big and you want this kind of query to be fast you have to tile your raster when you load it using the -t raster2pgsql option and then use ST_Intersects(rast, yourgeom) in the WHERE clause.
Pierre
> -----Original Message-----
> From: postgis-users-bounces at lists.osgeo.org [mailto:postgis-users-
> bounces at lists.osgeo.org] On Behalf Of Tim-Hinnerk Heuer
> Sent: Saturday, December 08, 2012 6:29 AM
> To: postgis-users at lists.osgeo.org
> Subject: [postgis-users] PostGIS - Simple Raster Point Query
>
> Hi,
>
> I'm new to PostGIS, at least in the backend, so please excuse my naive question,
> but I couldn't figure this out Googling.
>
> So, I've got it all working (PostGIS 2.0, imported the raster file and got the right
> projection information etc).
> SELECT PostGIS_full_version();
> postgis_full_version
> --------------------------------------------------------------------------------------------------
> ---------------------------------------------------
> POSTGIS="2.0.1 r9979" GEOS="3.3.5-CAPI-1.7.5" PROJ="Rel. 4.8.0, 6 March
> 2012" GDAL="GDAL 1.9.1, released 2012/05/15" LIBXML="2.7.8" TOPOLOGY
> RASTER
> (1 row)
>
>
> Now I come to querying but cannot seem to get there. I would like to make a
> simple point query for the height in a point on the raster that we have.
>
> I tried this:
> select st_value(rast,ST_Point(1821416, 5649720)) from nzdem3;
> where ST_Point(1821416, 5649720) is in NZTM (EPSG:2193). However, it doesn't
> work and just complains it is out of range. So, I did some research and found
> that it wants the pixel coordinate. Now, I could calculate it by getting the Geo
> Transformation with GDAL etc, but what is the point of PostGIS if I have to use
> GDAL instead? The point is that I would like to use PostGIS, because it seems like
> it's much more powerful. And we have PostGIS running anyway and it seems like
> the sensible choice.
>
> I also tried this:
> select DISTINCT ST_World2RasterCoordX(rast,ST_Point(1821416, 5649720))
> from nzdem3;
>
> but that gives me a pixel offset for each row in the database which really
> confuses me. How am I supposed to query if there are 56 different values for x
> alone:
> st_world2rastercoordx
> -----------------------
> -6038
> 10762
> 40762
> -4838
> 31162
> 33562
> 38362
> -38
> 45562
> 14362
> 19162
> 7162
> 11962
> 21562
> -13238
> 20362
> 46762
> 1162
> 8362
> -14438
> 27562
> 15562
> 26362
> -15638
> 28762
> -9638
> -2438
> -12038
> 49162
> 3562
> 37162
> 39562
> 22762
> 9562
> 35962
> -3638
> -16838
> 4762
> 47962
> 5962
> 34762
> 2362
> 41962
> 25162
> 17962
> 23962
> -1238
> 16762
> -7238
> 32362
> 13162
> 43162
> -8438
> -10838
> 44362
> 29962
> (56 rows)
>
> I see that PostGIS has a lot of potential also with raster queries and ultimately, I
> would like to be able to intersect it with a line string or even a multi poligon. But
> for now I would be happy if I could get a point with the projection's geographic
> coordinates.
>
> Please help!
>
> Thanks,
> Tim
>
> Tim-Hinnerk Heuer
>
> Twitter: @geekdenz
>
> Blog: http://www.thheuer.com <http://www.thheuer.com/>
More information about the postgis-users
mailing list