]> granicus.if.org Git - postgis/commitdiff
Replaced testing of two rasters' geotransform matrix with alignment test
authorBborie Park <bkpark at ucdavis.edu>
Mon, 16 Apr 2012 20:06:19 +0000 (20:06 +0000)
committerBborie Park <bkpark at ucdavis.edu>
Mon, 16 Apr 2012 20:06:19 +0000 (20:06 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@9645 b70326c6-7e19-0410-871a-916f4a2858ee

raster/loader/raster2pgsql.c

index 89ffa61c242e7389e34dce9d1e9e8261948100a4..b6e371f632e81c22c848e02c30dc82ebc6c3a772 100644 (file)
@@ -594,14 +594,37 @@ diff_rastinfo(RASTERINFO *x, RASTERINFO *ref) {
                }
        }
 
-       /* geotransform */
+       /* alignment */
        if (!msg[4]) {
-               for (i = 0; i < 6; i++) {
-                       if (FLT_NEQ(x->gt[i], ref->gt[i])) {
-                               rtwarn(_("Different geotransform matrices found in the set of rasters being converted to PostGIS raster"));
-                               msg[4]++;
-                               break;
-                       }
+               rt_raster rx = NULL;
+               rt_raster rref = NULL;
+               int err;
+               int aligned;
+
+               if (
+                       (rx = rt_raster_new(1, 1)) == NULL ||
+                       (rref = rt_raster_new(1, 1)) == NULL
+               ) {
+                       rterror(_("diff_rastinfo: Could not allocate memory for raster alignment test"));
+                       if (rx != NULL) rt_raster_destroy(rx);
+                       if (rref != NULL) rt_raster_destroy(rref);
+                       return;
+               }
+
+               rt_raster_set_geotransform_matrix(rx, x->gt);
+               rt_raster_set_geotransform_matrix(rref, ref->gt);
+
+               err = rt_raster_same_alignment(rx, rref, &aligned);
+               rt_raster_destroy(rx);
+               rt_raster_destroy(rref);
+               if (!err) {
+                       rterror(_("diff_rastinfo: Could not run raster alignment test"));
+                       return;
+               }
+
+               if (!aligned) {
+                       rtwarn(_("Raster with different alignment found in the set of rasters being converted to PostGIS raster"));
+                       msg[4]++;
                }
        }