]> granicus.if.org Git - postgis/commitdiff
code refactored and added copying of raster attributes to new raster in rt_raster_fro...
authorBborie Park <bkpark at ucdavis.edu>
Tue, 31 May 2011 22:47:33 +0000 (22:47 +0000)
committerBborie Park <bkpark at ucdavis.edu>
Tue, 31 May 2011 22:47:33 +0000 (22:47 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@7302 b70326c6-7e19-0410-871a-916f4a2858ee

raster/rt_core/rt_api.c

index 09d5d3eab9ceaf4bcb533e36bf2c51a2508af836..57a115b80a97dcd0f51cc1483cc4748cbe410bec 100644 (file)
@@ -5192,12 +5192,22 @@ rt_raster_from_band(rt_raster raster, uint32_t *bandNums, int count) {
                rt_raster_get_num_bands(raster));
 
        /* create new raster */
-       rast = rt_raster_new(raster->width, raster->height);
-       if (!rast) {
+       rast = rt_raster_new(rt_raster_get_width(raster), rt_raster_get_height(raster));
+       if (NULL == rast) {
                rterror("rt_raster_from_band: Out of memory allocating new raster\n");
                return 0;
        }
 
+       /* copy raster attributes */
+       /* scale */
+       rt_raster_set_scale(rast, rt_raster_get_x_scale(raster), rt_raster_get_y_scale(raster));
+       /* offset */
+       rt_raster_set_offsets(rast, rt_raster_get_x_offset(raster), rt_raster_get_y_offset(raster));
+       /* skew */
+       rt_raster_set_skews(rast, rt_raster_get_x_skew(raster), rt_raster_get_y_skew(raster));
+       /* srid */
+       rt_raster_set_srid(rast, rt_raster_get_srid(raster));
+
        /* copy bands */
        for (i = 0; i < count; i++) {
                idx = bandNums[i];
@@ -5480,12 +5490,13 @@ rt_raster_to_gdal_mem(rt_raster raster, char *srs,
        GDALRegister_MEM();
        if (NULL == *rtn_drv) {
                drv = GDALGetDriverByName("MEM");
-               *rtn_drv = drv;
-               drv_gen = 1;
                if (NULL == drv) {
                        rterror("rt_raster_to_gdal_mem: Unable to load the MEM GDAL driver\n");
                        return 0;
                }
+
+               *rtn_drv = drv;
+               drv_gen = 1;
        }
 
        ds = GDALCreate(drv, "", rt_raster_get_width(raster),