[postgis-devel] [PostGIS] #901: [raster] ST_AsGDALRaster and the helper functions ST_getGDALDrivers and ST_srtext

PostGIS trac at osgeo.org
Wed Apr 6 11:08:44 PDT 2011


#901: [raster] ST_AsGDALRaster and the helper functions ST_getGDALDrivers and
ST_srtext
-----------------------+----------------------------------------------------
 Reporter:  dustymugs  |       Owner:  pracine              
     Type:  task       |      Status:  new                  
 Priority:  medium     |   Milestone:  PostGIS Raster Future
Component:  postgis    |     Version:  trunk                
 Keywords:             |  
-----------------------+----------------------------------------------------
 What follows is a proposal on the specifics of ST_AsGDALRaster and two
 supporting functions.

 This is a generic interface to outputting a supported and installed GDAL
 raster:

 ST_AsGDALRaster(rast raster, format text, options text[], srs text) ->
 bytea

     This is the most generic and GDAL-specific method to convert a raster
 to a GDAL raster. All other version of ST_AsGDALRaster and other format
 specific functions (ST_AsJPEG, ST_AsTIFF and ST_AsPNG) are all wrappers
 around this function. Reference information for the format and options
 arguments of a particular format are specified at:
 http://gdal.org/formats_list.html. The arguments specified are:

     format: the GDAL format code. e.g. GTiff, JPEG, PNG

     options: the GDAL creation options found in the Creation Options
 section of a specified format. e.g. COMPRESS=JPEG, JPEG_QUALITY=90

     srs: the user-specified OGC WKT or the proj4 text for a spatial
 reference to embed in the GDAL raster. Not all formats support embedding
 this information. e.g. the non-empty value for the srtext or proj4text
 column from the spatial_ref_sys table.

 {{{
 ST_AsGDALRaster(rast, 'GTiff', ARRAY['COMPRESS=JPEG', 'JPEG_QUALITY=90'],
 '+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000
 +ellps=GRS80 +datum=NAD83 +units=m +no_defs')

 ST_AsGDALRaster(rast, 'GTiff', ARRAY['COMPRESS=JPEG', 'JPEG_QUALITY=90'],
 'PROJCS["NAD83 / California
 Albers",GEOGCS["NAD83",DATUM["North_American_Datum_1983",SPHEROID["GRS
 1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]],AUTHORITY["EPSG","6269"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4269"]],UNIT["metre",1,AUTHORITY["EPSG","9001"]],PROJECTION["Albers_Conic_Equal_Area"],PARAMETER["standard_parallel_1",34],PARAMETER["standard_parallel_2",40.5],PARAMETER["latitude_of_center",0],PARAMETER["longitude_of_center",-120],PARAMETER["false_easting",0],PARAMETER["false_northing",-4000000],AUTHORITY["EPSG","3310"],AXIS["X",EAST],AXIS["Y",NORTH]]')
 }}}

 ST_AsGDALRaster(rast raster, format text, options text[]) -> bytea

     This one removes the user-specified srs argument. The output GDAL
 raster's spatial reference will be set to the same as the input raster, if
 possible.

 {{{
 ST_AsGDALRaster(rast, 'JPEG', ARRAY!['QUALITY=50'])

 ST_AsGDALRaster(rast, 'PNG', ARRAY!['ZLEVEL=7'])
 }}}

 ST_AsGDALRaster(rast raster, format text) -> bytea

     The simplest implementation of this function. Since the options
 argument has been removed, the output GDAL raster will be created with
 default options. Like the prior function, the spatial reference of the
 GDAL raster will be set to the same as the input raster.

 {{{
 ST_AsGDALRaster(rast, 'JPEG')
 }}}

 The two helper functions are:

 ST_getGDALDrivers() -> set of record

 As each GDAL installation may be different and ST_AsGDALRaster can be used
 to support formats other than GTiff, JPEG and PNG, a method is needed to
 expose to the end user the possible GDAL formats capable of being
 exported. This function will output the following columns.

     idx: the internal GDAL index number

     short_name: the GDAL format code. This is the value to pass to the
 format paramenter of ST_AsGDALRaster

     long_name: the full name of the GDAL format

     create_options: the creation options available for the format as an
 XML string.

 {{{
 SELECT * FROM ST_getGDALDrivers()
 }}}

 The formats outputted from ST_getGDALDrivers have been filtered to only
 those that the GDAL capabilities !CreateCopy and Virtual IO support.

 Should the GDAL raster process be capable of supporting the GDAL
 capability Create? As the GDAL raster process writes nothing to a file in
 the filesystem (via Virtual IO), should there be support for writing the
 output GDAL raster temporarily to the filesystem? If so, how is it done in
 other PostgreSQL extensions in a secure manner?

 ST_srtext(rast raster) -> text

 A helper function to get the value of column srtext or proj4text for a
 raster with an SRID. By default, the srtext is returned. If srtext is not
 available but proj4text is, the proj4text is returned.

 {{{
 SELECT ST_srtext(rast);
 }}}

 This function may be removed based upon the capabilities of SPI. It may
 not be possible to remove this function as the srs function argument of
 ST_AsGDALRaster can be NULL, thereby instructing the function to not embed
 any spatial reference information into the output GDAL raster.

-- 
Ticket URL: <http://trac.osgeo.org/postgis/ticket/901>
PostGIS <http://trac.osgeo.org/postgis/>
The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project.


More information about the postgis-devel mailing list