123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641 |
- """!@package grass.temporal
- @brief GRASS Python scripting module (temporal GIS functions)
- Temporal GIS related metadata functions to be used in Python scripts and tgis packages.
- Usage:
- @code
- import grass.temporal as tgis
- meta = tgis.raster_metadata()
- ...
- @endcode
- (C) 2008-2011 by the GRASS Development Team
- This program is free software under the GNU General Public
- License (>=v2). Read the file COPYING that comes with GRASS
- for details.
- @author Soeren Gebbert
- """
- from base import *
- ###############################################################################
- class raster_metadata_base(sql_database_interface):
- """This is the raster metadata base class for raster and raster3d maps"""
- def __init__(self, table=None, ident=None, datatype=None, cols=None, rows=None, number_of_cells=None, nsres=None, ewres=None, min=None, max=None):
- sql_database_interface.__init__(self, table, ident)
- self.set_id(ident)
- self.set_datatype(datatype)
- self.set_cols(cols)
- self.set_rows(rows)
- self.set_number_of_cells(number_of_cells)
- self.set_nsres(nsres)
- self.set_ewres(ewres)
- self.set_min(min)
- self.set_max(max)
- def set_id(self, ident):
- """Convenient method to set the unique identifier (primary key)"""
- self.ident = ident
- self.D["id"] = ident
- def set_datatype(self, datatype):
- """Set the datatype"""
- self.D["datatype"] = datatype
- def set_cols(self, cols):
- """Set the number of cols"""
- self.D["cols"] = cols
- def set_rows(self, rows):
- """Set the number of rows"""
- self.D["rows"] = rows
- def set_number_of_cells(self, number_of_cells):
- """Set the number of cells"""
- self.D["number_of_cells"] = number_of_cells
- def set_nsres(self, nsres):
- """Set the north-south resolution"""
- self.D["nsres"] = nsres
- def set_ewres(self, ewres):
- """Set the east-west resolution"""
- self.D["ewres"] = ewres
- def set_min(self, min):
- """Set the minimum raster value"""
- self.D["min"] = min
- def set_max(self, max):
- """Set the maximum raster value"""
- self.D["max"] = max
- def get_id(self):
- """Convenient method to get the unique identifier (primary key)
- @return None if not found
- """
- if self.D.has_key("id"):
- return self.D["id"]
- else:
- return None
- def get_datatype(self):
- """Get the map type
- @return None if not found"""
- if self.D.has_key("datatype"):
- return self.D["datatype"]
- else:
- return None
- def get_cols(self):
- """Get number of cols
- @return None if not found"""
- if self.D.has_key("cols"):
- return self.D["cols"]
- else:
- return None
- def get_rows(self):
- """Get number of rows
- @return None if not found"""
- if self.D.has_key("rows"):
- return self.D["rows"]
- else:
- return None
- def get_number_of_cells(self):
- """Get number of cells
- @return None if not found"""
- if self.D.has_key("number_of_cells"):
- return self.D["number_of_cells"]
- else:
- return None
- def get_nsres(self):
- """Get the north-south resolution
- @return None if not found"""
- if self.D.has_key("nsres"):
- return self.D["nsres"]
- else:
- return None
- def get_ewres(self):
- """Get east-west resolution
- @return None if not found"""
- if self.D.has_key("ewres"):
- return self.D["ewres"]
- else:
- return None
- def get_min(self):
- """Get the minimum cell value
- @return None if not found"""
- if self.D.has_key("min"):
- return self.D["min"]
- else:
- return None
- def get_max(self):
- """Get the maximum cell value
- @return None if not found"""
- if self.D.has_key("max"):
- return self.D["max"]
- else:
- return None
- def print_info(self):
- """Print information about this class in human readable style"""
- # 0123456789012345678901234567890
- print " | Datatype:................... " + str(self.get_datatype())
- print " | Number of columns:.......... " + str(self.get_cols())
- print " | Number of rows:............. " + str(self.get_rows())
- print " | Number of cells:............ " + str(self.get_number_of_cells())
- print " | North-South resolution:..... " + str(self.get_nsres())
- print " | East-west resolution:....... " + str(self.get_ewres())
- print " | Minimum value:.............. " + str(self.get_min())
- print " | Maximum value:.............. " + str(self.get_max())
- def print_shell_info(self):
- """Print information about this class in shell style"""
- print "datatype=" + str(self.get_datatype())
- print "cols=" + str(self.get_cols())
- print "rows=" + str(self.get_rows())
- print "number_of_cells=" + str(self.get_number_of_cells())
- print "nsres=" + str(self.get_nsres())
- print "ewres=" + str(self.get_ewres())
- print "min=" + str(self.get_min())
- print "max=" + str(self.get_max())
- ###############################################################################
- class raster_metadata(raster_metadata_base):
- """This is the raster metadata class"""
- def __init__(self, ident=None, strds_register=None, datatype=None, cols=None, rows=None, number_of_cells=None, nsres=None, ewres=None, min=None, max=None):
- raster_metadata_base.__init__(self, "raster_metadata", ident, datatype, cols, rows, number_of_cells, nsres, ewres, min, max)
- self.set_strds_register(strds_register)
- def set_strds_register(self, strds_register):
- """Set the space time raster dataset register table name"""
- self.D["strds_register"] = strds_register
- def get_strds_register(self):
- """Get the space time raster dataset register table name
- @return None if not found"""
- if self.D.has_key("strds_register"):
- return self.D["strds_register"]
- else:
- return None
- def print_info(self):
- """Print information about this class in human readable style"""
- print " +-------------------- Metadata information ----------------------------------+"
- # 0123456789012345678901234567890
- print " | STRDS register table ....... " + str(self.get_strds_register())
- raster_metadata_base.print_info(self)
- def print_shell_info(self):
- """Print information about this class in shell style"""
- raster_metadata_base.print_shell_info(self)
- ###############################################################################
- class raster3d_metadata(raster_metadata_base):
- """This is the raster3d metadata class"""
- def __init__(self, ident=None, str3ds_register=None, datatype=None, cols=None, rows=None, depths=None, number_of_cells=None, nsres=None, ewres=None, tbres=None, min=None, max=None):
- raster_metadata_base.__init__(self, "raster3d_metadata", ident, datatype, cols, rows, number_of_cells, nsres, ewres, min, max)
- self.set_str3ds_register(str3ds_register)
- self.set_tbres(tbres)
- self.set_depths(depths)
- def set_str3ds_register(self, str3ds_register):
- """Set the space time raster3d dataset register table name"""
- self.D["str3ds_register"] = str3ds_register
- def set_depths(self, depths):
- """Set the number of depths"""
- self.D["depths"] = depths
- def set_tbres(self, tbres):
- """Set the top-bottom resolution"""
- self.D["tbres"] = tbres
- def get_str3ds_register(self):
- """Get the space time raster3d dataset register table name
- @return None if not found"""
- if self.D.has_key("str3ds_register"):
- return self.D["str3ds_register"]
- else:
- return None
- def get_depths(self):
- """Get number of depths
- @return None if not found"""
- if self.D.has_key("depths"):
- return self.D["depths"]
- else:
- return None
- def get_tbres(self):
- """Get top-bottom resolution
- @return None if not found"""
- if self.D.has_key("tbres"):
- return self.D["tbres"]
- else:
- return None
- def print_info(self):
- """Print information about this class in human readable style"""
- print " +-------------------- Metadata information ----------------------------------+"
- # 0123456789012345678901234567890
- print " | STR3DS register table ...... " + str(self.get_str3ds_register())
- raster_metadata_base.print_info(self)
- # 0123456789012345678901234567890
- print " | Number of depths:........... " + str(self.get_depths())
- print " | Top-Bottom resolution:...... " + str(self.get_tbres())
- def print_shell_info(self):
- """Print information about this class in shell style"""
- raster_metadata_base.print_shell_info(self)
- print "depths=" + str(self.get_depths())
- print "tbres=" + str(self.get_tbres())
-
- ###############################################################################
- class vector_metadata(sql_database_interface):
- """This is the vector metadata class"""
- def __init__(self, ident=None, stvds_register=None):
- sql_database_interface.__init__(self, "vector_metadata", ident)
- self.set_id(ident)
- self.set_stvds_register(stvds_register)
- def set_id(self, ident):
- """Convenient method to set the unique identifier (primary key)"""
- self.ident = ident
- self.D["id"] = ident
- def set_stvds_register(self, stvds_register):
- """Set the space time vector dataset register table name"""
- self.D["stvds_register"] = stvds_register
- def get_id(self):
- """Convenient method to get the unique identifier (primary key)
- @return None if not found
- """
- if self.D.has_key("id"):
- return self.D["id"]
- else:
- return None
- def get_stvds_register(self):
- """Get the space time vector dataset register table name
- @return None if not found"""
- if self.D.has_key("stvds_register"):
- return self.D["stvds_register"]
- else:
- return None
- def print_info(self):
- """Print information about this class in human readable style"""
- # 0123456789012345678901234567890
- print " +-------------------- Metadata information ----------------------------------+"
- print " | STVDS register table ....... " + str(self.get_stvds_register())
- def print_shell_info(self):
- """Print information about this class in shell style"""
- print "stvds_register=" + str(self.get_stvds_register())
- ###############################################################################
- class stds_metadata_base(sql_database_interface):
- """This is the space time dataset metadata base class for strds, stvds and str3ds datasets
- setting/getting the id, the title and the description
- """
- def __init__(self, table=None, ident=None, title=None, description=None):
- sql_database_interface.__init__(self, table, ident)
- self.set_id(ident)
- self.set_title(title)
- self.set_description(description)
- # No setter for this
- self.D["number_of_maps"] = None
- def set_id(self, ident):
- """Convenient method to set the unique identifier (primary key)"""
- self.ident = ident
- self.D["id"] = ident
- def set_title(self, title):
- """Set the title"""
- self.D["title"] = title
- def set_description(self, description):
- """Set the number of cols"""
- self.D["description"] = description
- def get_id(self):
- """Convenient method to get the unique identifier (primary key)
- @return None if not found
- """
- if self.D.has_key("id"):
- return self.D["id"]
- else:
- return None
- def get_title(self):
- """Get the title
- @return None if not found"""
- if self.D.has_key("title"):
- return self.D["title"]
- else:
- return None
- def get_description(self):
- """Get description
- @return None if not found"""
- if self.D.has_key("description"):
- return self.D["description"]
- else:
- return None
- def get_number_of_maps(self):
- """Get the number of registered maps, this value is set in the database
- automatically via SQL trigger, so no setter exists
- @return None if not found"""
- if self.D.has_key("number_of_maps"):
- return self.D["number_of_maps"]
- else:
- return None
- def print_info(self):
- """Print information about this class in human readable style"""
- # 0123456789012345678901234567890
- print " | Number of registered maps:.. " + str(self.get_number_of_maps())
- print " | Title:"
- print " | " + str(self.get_title())
- print " | Description:"
- print " | " + str(self.get_description())
- def print_shell_info(self):
- """Print information about this class in shell style"""
- print "number_of_maps=" + str(self.get_number_of_maps())
- ###############################################################################
-
- class stds_raster_metadata_base(stds_metadata_base):
- """This is the space time dataset metadata base class for strds and str3ds datasets
-
- Most of the metadata values are set by triggers in the database when
- new raster of voxel maps are added. Therefor only some set- an many get-functions
- are available.
- """
- def __init__(self, table=None, ident=None, title=None, description=None):
- stds_metadata_base.__init__(self, table, ident, title, description)
-
- # Initialize the dict to select all values from the db
- self.D["min_max"] = None
- self.D["max_max"] = None
- self.D["min_min"] = None
- self.D["max_min"] = None
- self.D["nsres_min"] = None
- self.D["nsres_max"] = None
- self.D["ewres_min"] = None
- self.D["ewres_max"] = None
- def get_max_min(self):
- """Get the minimal maximum of all registered maps, this value is set in the database
- automatically via SQL trigger, so no setter exists
- @return None if not found"""
- if self.D.has_key("max_min"):
- return self.D["max_min"]
- else:
- return None
- def get_min_min(self):
- """Get the minimal minimum of all registered maps, this value is set in the database
- automatically via SQL trigger, so no setter exists
- @return None if not found"""
- if self.D.has_key("min_min"):
- return self.D["min_min"]
- else:
- return None
- def get_max_max(self):
- """Get the maximal maximum of all registered maps, this value is set in the database
- automatically via SQL trigger, so no setter exists
- @return None if not found"""
- if self.D.has_key("max_max"):
- return self.D["max_max"]
- else:
- return None
- def get_min_max(self):
- """Get the maximal minimum of all registered maps, this value is set in the database
- automatically via SQL trigger, so no setter exists
- @return None if not found"""
- if self.D.has_key("min_max"):
- return self.D["min_max"]
- else:
- return None
- def get_nsres_min(self):
- """Get the minimal north-south resolution of all registered maps, this value is set in the database
- automatically via SQL trigger, so no setter exists
- @return None if not found"""
- if self.D.has_key("nsres_min"):
- return self.D["nsres_min"]
- else:
- return None
- def get_nsres_max(self):
- """Get the maximal north-south resolution of all registered maps, this value is set in the database
- automatically via SQL trigger, so no setter exists
- @return None if not found"""
- if self.D.has_key("nsres_max"):
- return self.D["nsres_max"]
- else:
- return None
- def get_ewres_min(self):
- """Get the minimal east-west resolution of all registered maps, this value is set in the database
- automatically via SQL trigger, so no setter exists
- @return None if not found"""
- if self.D.has_key("ewres_min"):
- return self.D["ewres_min"]
- else:
- return None
- def get_ewres_max(self):
- """Get the maximal east-west resolution of all registered maps, this value is set in the database
- automatically via SQL trigger, so no setter exists
- @return None if not found"""
- if self.D.has_key("ewres_max"):
- return self.D["ewres_max"]
- else:
- return None
- def print_info(self):
- """Print information about this class in human readable style"""
- stds_metadata_base.print_info(self)
- # 0123456789012345678901234567890
- print " | North-South resolution min:. " + str(self.get_nsres_min())
- print " | North-South resolution max:. " + str(self.get_nsres_max())
- print " | East-west resolution min:... " + str(self.get_ewres_min())
- print " | East-west resolution max:... " + str(self.get_ewres_max())
- print " | Minimum value min:.......... " + str(self.get_min_min())
- print " | Minimum value max:.......... " + str(self.get_min_max())
- print " | Maximum value min:.......... " + str(self.get_max_min())
- print " | Maximum value max:.......... " + str(self.get_max_max())
- def print_shell_info(self):
- """Print information about this class in shell style"""
- stds_metadata_base.print_shell_info(self)
- print "nsres_min=" + str(self.get_nsres_min())
- print "nsres_max=" + str(self.get_nsres_max())
- print "ewres_min=" + str(self.get_ewres_min())
- print "ewres_max=" + str(self.get_ewres_max())
- print "min_min=" + str(self.get_min_min())
- print "min_max=" + str(self.get_min_max())
- print "max_min=" + str(self.get_max_min())
- print "max_max=" + str(self.get_max_max())
- ###############################################################################
- class strds_metadata(stds_raster_metadata_base):
- """This is the raster metadata class"""
- def __init__(self, ident=None, raster_register=None, title=None, description=None):
- stds_raster_metadata_base.__init__(self, "strds_metadata", ident, title, description)
- self.set_raster_register(raster_register)
- def set_raster_register(self, raster_register):
- """Set the raster map register table name"""
- self.D["raster_register"] = raster_register
- def get_raster_register(self):
- """Get the raster map register table name
- @return None if not found"""
- if self.D.has_key("raster_register"):
- return self.D["raster_register"]
- else:
- return None
- def print_info(self):
- """Print information about this class in human readable style"""
- print " +-------------------- Metadata information ----------------------------------+"
- # 0123456789012345678901234567890
- print " | Raster register table:...... " + str(self.get_raster_register())
- stds_raster_metadata_base.print_info(self)
- def print_shell_info(self):
- """Print information about this class in shell style"""
- stds_raster_metadata_base.print_shell_info(self)
- ###############################################################################
- class str3ds_metadata(stds_raster_metadata_base):
- """This is the space time raster3d metadata class"""
- def __init__(self, ident=None, raster3d_register=None, title=None, description=None):
- stds_raster_metadata_base.__init__(self, "str3ds_metadata", ident, title, description)
- self.set_raster3d_register(raster3d_register)
- self.D["tbres_min"] = None
- self.D["tbres_max"] = None
- def set_raster3d_register(self, raster3d_register):
- """Set the raster map register table name"""
- self.D["raster3d_register"] = raster3d_register
- def get_raster3d_register(self):
- """Get the raster3d map register table name
- @return None if not found"""
- if self.D.has_key("raster3d_register"):
- return self.D["raster3d_register"]
- else:
- return None
- def get_tbres_min(self):
- """Get the minimal top-bottom resolution of all registered maps, this value is set in the database
- automatically via SQL trigger, so no setter exists
- @return None if not found"""
- if self.D.has_key("tbres_min"):
- return self.D["tbres_min"]
- else:
- return None
- def get_tbres_max(self):
- """Get the maximal top-bottom resolution of all registered maps, this value is set in the database
- automatically via SQL trigger, so no setter exists
- @return None if not found"""
- if self.D.has_key("tbres_max"):
- return self.D["tbres_max"]
- else:
- return None
- def print_info(self):
- """Print information about this class in human readable style"""
- print " +-------------------- Metadata information ----------------------------------+"
- # 0123456789012345678901234567890
- print " | Raster3d register table:.... " + str(self.get_raster3d_register())
- stds_raster_metadata_base.print_info(self)
- # 0123456789012345678901234567890
- print " | Top-bottom resolution min:.. " + str(self.get_ewres_min())
- print " | Top-bottom resolution max:.. " + str(self.get_ewres_max())
- def print_shell_info(self):
- """Print information about this class in shell style"""
- stds_raster_metadata_base.print_shell_info(self)
- print "tbres_min=" + str(self.get_tbres_min())
- print "tbres_max=" + str(self.get_tbres_max())
- ###############################################################################
- class stvds_metadata(stds_metadata_base):
- """This is the raster metadata class"""
- def __init__(self, ident=None, vector_register=None, title=None, description=None):
- stds_metadata_base.__init__(self, "stvds_metadata", ident, title, description)
- self.set_vector_register(vector_register)
- def set_vector_register(self, vector_register):
- """Set the vector map register table name"""
- self.D["vector_register"] = vector_register
- def get_vector_register(self):
- """Get the vector map register table name
- @return None if not found"""
- if self.D.has_key("vector_register"):
- return self.D["vector_register"]
- else:
- return None
- def print_info(self):
- """Print information about this class in human readable style"""
- print " +-------------------- Metadata information ----------------------------------+"
- # 0123456789012345678901234567890
- print " | Vector register table:...... " + str(self.get_vector_register())
- stds_metadata_base.print_info(self)
- def print_shell_info(self):
- """Print information about this class in shell style"""
- stds_metadata_base.print_shell_info(self)
|