PostGIS  3.0.6dev-r@@SVN_REVISION@@

◆ parse_command_line()

def raster2pgsql.parse_command_line ( )
Collects, parses and validates command line arguments.

Definition at line 79 of file raster2pgsql.py.

79 def parse_command_line():
80  """Collects, parses and validates command line arguments."""
81 
82  prs = OptionParser(version="%prog $Revision$")
83 
84  # Mandatory parameters
85  grp0 = OptionGroup(prs, "Source and destination",
86  "*** Mandatory parameters always required ***")
87  grp0.add_option("-r", "--raster", dest="raster", action="append", default=None,
88  help="append raster to list of input files, at least one raster "
89  "file required. You may use wildcards (?,*) for specifying multiple files.")
90  grp0.add_option("-t", "--table", dest="table", action="store", default=None,
91  help="raster destination in form of [<schema>.]<table> or base raster table for overview level>1, required")
92  prs.add_option_group(grp0);
93 
94  # Optional parameters - raster manipulation
95  grp_r = OptionGroup(prs, "Raster processing",
96  "Optional parameters used to manipulate input raster dataset")
97  grp_r.add_option("-s", "--srid", dest="srid", action="store", type="int", default=-1,
98  help="assign output raster with specified SRID")
99  grp_r.add_option("-b", "--band", dest="band", action="store", type="int", default=None,
100  help="specify number of the band to be extracted from raster file")
101  grp_r.add_option("-k", "--block-size", dest="block_size", action="store", default=None,
102  help="cut raster(s) into tiles to be inserted one by table row."
103  "BLOCK_SIZE is expressed as WIDTHxHEIGHT. Incomplete tiles are completed with nodata values")
104  grp_r.add_option("-R", "--register", dest="register", action="store_true", default=False,
105  help="register the raster as a filesystem (out-db) raster")
106  grp_r.add_option("-l", "--overview-level", dest="overview_level", action="store", type="int", default=1,
107  help='create overview tables named as o_<LEVEL>_<RASTER_TABLE> and '
108  'populate with GDAL-provided overviews (regular blocking only)')
109  prs.add_option_group(grp_r);
110 
111  # Optional parameters - database/table manipulation
112  grp_t = OptionGroup(prs, 'Database processing',
113  'Optional parameters used to manipulate database objects')
114  grp_t.add_option('-c', '--create', dest='create_table', action='store_true', default=False,
115  help='create new table and populate it with raster(s), this is the default mode')
116  grp_t.add_option('-a', '--append', dest='append_table', action='store_true', default=False,
117  help='append raster(s) to an existing table')
118  grp_t.add_option("-d", "--drop", dest="drop_table", action="store_true", default=False,
119  help="drop table, create new one and populate it with raster(s)")
120  grp_t.add_option("-f", "--field", dest="column", action="store", default=g_rt_column,
121  help="specify name of destination raster column, default is 'rast'")
122  grp_t.add_option("-F", "--filename", dest="filename", action="store_true", default=False,
123  help="add a column with the name of the file")
124  grp_t.add_option("-I", "--index", dest="index", action="store_true", default=False,
125  help="create a GiST index on the raster column")
126  grp_t.add_option("-M", "--vacuum", dest="vacuum", action="store_true", default=False,
127  help="issue VACUUM command against all generated tables")
128  grp_t.add_option('-V', '--create-raster-overviews', dest='create_raster_overviews_table',
129  action='store_true', default=False,
130  help='create RASTER_OVERVIEWS table used to store overviews metadata')
131  prs.add_option_group(grp_t);
132 
133  # Other optional parameters
134  grp_u = OptionGroup(prs, "Miscellaneous", "Other optional parameters")
135  grp_u.add_option("-e", "--endian", dest="endian", action="store", type="int", default=g_rt_endian,
136  help="control endianness of generated binary output of raster; "
137  "specify 0 for XDR and 1 for NDR (default); "
138  "only NDR output is supported now")
139  grp_u.add_option("-w", "--raster-version", dest="version",
140  action="store", type="int", default=g_rt_version,
141  help="specify version of raster protocol, default is 0; "
142  "only value of zero is supported now")
143  grp_u.add_option("-o", "--output", dest="output", action="store", default=sys.stdout,
144  help="specify output file, otherwise send to stdout")
145  grp_u.add_option("-v", "--verbose", dest="verbose", action="store_true", default=False,
146  help="verbose mode. Useful for debugging")
147  prs.add_option_group(grp_u);
148 
149  (opts, args) = prs.parse_args()
150 
151  # Validate options
152  if opts.create_table and opts.drop_table and opts.append_table:
153  prs.error("options -c, -a and -d are mutually exclusive")
154  if opts.create_table and opts.drop_table:
155  prs.error("options -c and -d are mutually exclusive")
156  if opts.create_table and opts.append_table:
157  prs.error("options -c and -a are mutually exclusive")
158  if opts.append_table and opts.drop_table:
159  prs.error("options -a and -d are mutually exclusive")
160  if (not opts.create_table and not opts.drop_table and not opts.append_table) or opts.drop_table:
161  opts.create_table = True
162 
163  if opts.raster is None:
164  prs.error("use option -r to specify at least one input raster. Wildcards (?,*) are accepted.")
165 
166  if opts.block_size is not None and len(opts.raster) != 1:
167  prs.error("regular blocking supports single-raster input only")
168 
169  if opts.block_size is not None:
170  if len(opts.block_size.split('x')) != 2 and len(opts.block_size.split('X')) != 2:
171  prs.error("invalid format of block size, expected WIDTHxHEIGHT")
172 
173  if opts.overview_level > 1 and opts.block_size is None:
174  prs.error("regular blocking mode required to enable overviews support (level > 1)")
175 
176  if opts.create_raster_overviews_table and opts.overview_level <= 1:
177  prs.error('create table for RASTER_OVERVIEWS available only if overviews import requested')
178 
179  # XXX: Now, if --band=Nth, then only Nth band of all specified rasters is dumped/imported
180  # This behavior can be changed to support only single-raster input if --band option used.
181  #if opts.band is not None and len(opts.raster) > 1:
182  # prs.error("option -b requires single input raster only, specify -r option only once")
183 
184  if opts.table is None:
185  prs.error("use option -t to specify raster destination table")
186  if len(opts.table.split('.')) > 2:
187  prs.error("invalid format of table name specified with option -t, expected [<schema>.]table")
188 
189  if opts.output is None:
190  prs.error("failed to initialise output file, try to use option -o explicitly")
191 
192  if opts.version is not None:
193  if opts.version != g_rt_version:
194  prs.error("invalid version of WKT Raster protocol specified, only version 0 is supported")
195  else:
196  prs.error("use option -w to specify version of WKT Raster protocol")
197 
198  if opts.endian is not None:
199  if opts.endian != NDR and opts.endian != XDR:
200  prs.error("invalid endianness value, valid ones are 0 for NDR or 1 for XDR")
201  else:
202  prs.error("use option -e to specify endianness of binary output")
203 
204  return (opts, args)
205 
206 
def parse_command_line()
Definition: raster2pgsql.py:79

Referenced by main().

Here is the caller graph for this function: