123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- ############################################################################
- #
- # MODULE: t.vect.db.select
- # AUTHOR(S): Soeren Gebbert
- #
- # PURPOSE: Prints attributes of vector maps registered in a space time vector dataset.
- # COPYRIGHT: (C) 2011 by the GRASS Development Team
- #
- # This program is free software under the GNU General Public
- # License (version 2). Read the file COPYING that comes with GRASS
- # for details.
- #
- #############################################################################
- #%module
- #% description: Prints attributes of vector maps registered in a space time vector dataset.
- #% keywords: temporal
- #% keywords: attribute table
- #% keywords: vector
- #% keywords: database
- #% keywords: select
- #%end
- #%option G_OPT_STVDS_INPUT
- #%end
- #%option G_OPT_DB_COLUMNS
- #%end
- #%option G_OPT_F_SEP
- #% description: Separator character between the output columns
- #%end
- #%option G_OPT_V_FIELD
- #%end
- #%option G_OPT_DB_WHERE
- #%end
- #%option G_OPT_T_WHERE
- #% key: t_where
- #%end
- import grass.script as grass
- import grass.temporal as tgis
- ############################################################################
- def main():
- # Get the options
- input = options["input"]
- where = options["where"]
- columns = options["columns"]
- tempwhere = options["t_where"]
- layer = options["layer"]
- fs = options["separator"]
- if where == "" or where == " " or where == "\n":
- where = None
- if columns == "" or columns == " " or columns == "\n":
- columns = None
- # Make sure the temporal database exists
- tgis.init()
- sp = tgis.open_old_space_time_dataset(input, "stvds")
- rows = sp.get_registered_maps("name,layer,mapset,start_time,end_time",
- tempwhere, "start_time", None)
- col_names = ""
- if rows:
- for row in rows:
- vector_name = "%s@%s" % (row["name"], row["mapset"])
- # In case a layer is defined in the vector dataset,
- # we override the option layer
- if row["layer"]:
- layer = row["layer"]
- select = grass.read_command("v.db.select", map=vector_name,
- layer=layer, columns=columns,
- separator="%s" % (fs), where=where)
- if not select:
- grass.fatal(_("Unable to run v.db.select for vector map <%s> "
- "with layer %s") % (vector_name, layer))
- # The first line are the column names
- list = select.split("\n")
- count = 0
- for entry in list:
- if entry.strip() != "":
- # print the column names in case they change
- if count == 0:
- col_names_new = "start_time%send_time%s%s" % (
- fs, fs, entry)
- if col_names != col_names_new:
- col_names = col_names_new
- print col_names
- else:
- if row["end_time"]:
- print "%s%s%s%s%s" % (row["start_time"], fs,
- row["end_time"], fs, entry)
- else:
- print "%s%s%s%s" % (row["start_time"],
- fs, fs, entry)
- count += 1
- if __name__ == "__main__":
- options, flags = grass.parser()
- main()
|