[postgis-commits] svn - r3876 - spike/wktraster/scripts

postgis-commits at postgis.refractions.net postgis-commits at postgis.refractions.net
Mon Mar 16 15:57:33 PDT 2009


Author: pracine
Date: 2009-03-16 15:57:33 -0700 (Mon, 16 Mar 2009)
New Revision: 3876

Modified:
   spike/wktraster/scripts/gdal2wktraster.py
Log:
Added an option (-F) to add the name of the file in a new column. This is useful to correctly identify tiles order from filenames after loading.

Modified: spike/wktraster/scripts/gdal2wktraster.py
===================================================================
--- spike/wktraster/scripts/gdal2wktraster.py	2009-03-16 22:23:58 UTC (rev 3875)
+++ spike/wktraster/scripts/gdal2wktraster.py	2009-03-16 22:57:33 UTC (rev 3876)
@@ -65,6 +65,8 @@
                       help="drop table, create new one and populate with raster(s)")
     optprs.add_option("-f", "--field", dest="column", action="store", default=g_rt_column, 
                       help="specify name of raster data column, default is 'rast'")
+    optprs.add_option("-F", "--filename", dest="filename", action="store_true", default=False, 
+                      help="insert a column with the name of the file")
     optprs.add_option("-R", "--register", dest="register", action="store_true", default=False, 
                       help="register the raster as a filesystem (out-db) raster")
     optprs.add_option("-I", "--index", dest="index", action="store_true", default=False, 
@@ -298,14 +300,21 @@
     return sql
 
 
-def make_sql_create_table(table, rast):
-    sql = "CREATE TABLE %s (rid serial PRIMARY KEY, \"%s\" RASTER );\n" % (make_sql_full_table_name(table), rast)
+def make_sql_create_table(table, rast, insert_filename):
+    if insert_filename:
+        sql = "CREATE TABLE %s (rid serial PRIMARY KEY, \"filename\" text, \"%s\" RASTER );\n" % (make_sql_full_table_name(table), rast)
+    else:
+        sql = "CREATE TABLE %s (rid serial PRIMARY KEY, \"%s\" RASTER );\n" % (make_sql_full_table_name(table), rast)
     logit("SQL: %s" % sql)
     return sql
 
 
-def make_sql_insert_raster(table, rast, hexwkb):
-    sql = "INSERT INTO %s ( %s ) VALUES ( (\'%s\')::raster );\n" % (make_sql_full_table_name(table), rast, hexwkb)
+def make_sql_insert_raster(table, rast, hexwkb, insert_filename, file):
+    if insert_filename:
+        sql = "INSERT INTO %s ( filename, %s ) VALUES ( (\'%s\')::text, (\'%s\')::raster );\n" % (make_sql_full_table_name(table), rast, file, hexwkb)
+    else:
+        sql = "INSERT INTO %s ( %s ) VALUES ( (\'%s\')::raster );\n" % (make_sql_full_table_name(table), rast, hexwkb)
+        
     # NOTE: Usually, no need for such detailed verbosity
     #logit("SQL: %s" % sql)
     return sql
@@ -333,7 +342,7 @@
         fout.write(sql)
 
     # CREATE TABLE
-    sql = make_sql_create_table(opts.table, opts.column)
+    sql = make_sql_create_table(opts.table, opts.column, opts.filename)
     fout.write(sql)
 
     # Burn all specified input raster files into single WKTRaster table
@@ -343,13 +352,13 @@
         filelist = glob.glob(infile)
         for file in filelist:
             logit("MSG: Raster #%d: %s\n" % (i + 1, file))
-        
+            
             hexwkb = wkblify_raster(file, opts.band, g_rt_version, g_rt_endiannes, opts.srid, opts.register)
             assert len(hexwkb) > 0, "Error: No HEX WKB generated"
             assert (len(hexwkb) % 2 == 0), "Error: Invalid size of generated HEX WKB"
 
             # INSERT INTO ... (rast) VALUES (...)
-            sql = make_sql_insert_raster(opts.table, opts.column, hexwkb)
+            sql = make_sql_insert_raster(opts.table, opts.column, hexwkb, opts.filename, file)
             fout.write(sql)
 
             i += 1



More information about the postgis-commits mailing list