[GRASS-SVN] r60324 - in grass-addons/grass7/vector: . v.link.precip

svn_grass at osgeo.org svn_grass at osgeo.org
Sun May 18 11:00:48 PDT 2014


Author: krejcmat
Date: 2014-05-18 11:00:48 -0700 (Sun, 18 May 2014)
New Revision: 60324

Added:
   grass-addons/grass7/vector/v.link.precip/
   grass-addons/grass7/vector/v.link.precip/v.link.precip.html
   grass-addons/grass7/vector/v.link.precip/v.link.precip.py
Log:
first version of v.link.precip

Added: grass-addons/grass7/vector/v.link.precip/v.link.precip.html
===================================================================
--- grass-addons/grass7/vector/v.link.precip/v.link.precip.html	                        (rev 0)
+++ grass-addons/grass7/vector/v.link.precip/v.link.precip.html	2014-05-18 18:00:48 UTC (rev 60324)
@@ -0,0 +1,5 @@
+<h2>DESCRIPTION</h2>
+
+<h2>AUTHOR</h2>
+
+Matej Krejci, Czech Technical University in Prague, Czech Republic

Added: grass-addons/grass7/vector/v.link.precip/v.link.precip.py
===================================================================
--- grass-addons/grass7/vector/v.link.precip/v.link.precip.py	                        (rev 0)
+++ grass-addons/grass7/vector/v.link.precip/v.link.precip.py	2014-05-18 18:00:48 UTC (rev 60324)
@@ -0,0 +1,368 @@
+#!/usr/bin/env python
+# -*- coding: utf-8
+import os
+import sys
+import argparse
+import string, random
+import re
+
+try:
+    from grass.script import core as grass  
+except ImportError:
+    sys.exit("Cannot find 'grass' Python module. Python is supported by GRASS from version >= 6.4")
+
+
+##########################################################
+################## guisection: required ##################
+##########################################################
+#%module
+#% description: Module for linking time-windows to vector link map 
+#%end
+
+
+#%option
+#% key: schema
+#% type: string
+#% label: Set schema name containing timewindows
+#% required : yes
+#%end
+
+
+#%option
+#% key: time
+#% type: string
+#% label: Set time "YYYY-MM-DD H:M:S"
+
+#%end
+
+#%option
+#% key: type
+#% label: Choose object type to connect
+#% options: raingauge, links
+#% multiple: yes
+#% required : yes
+#% answer: links
+#%end
+
+#%option
+#% key: vector
+#% label: Choose MV representation
+#% options: lines, points
+#% multiple: yes
+#% required : yes
+#% answer: points
+#%end
+
+#%flag
+#% key:c
+#% description: Create vector map
+#%end
+
+#%flag
+#% key:a
+#% description: Create vector maps for all timewin
+#%end
+
+
+
+#%option
+#% key: layername
+#% type: string
+#% label: Name of points layer to connect
+#%end
+
+##########################################################
+################## guisection: optional ##################
+##########################################################
+#%option G_OPT_F_INPUT
+#% key: color
+#% label: Set color table
+#% required: no
+#%end
+
+
+#%flag
+#% key:p
+#% description: Print attribut table
+#%end
+
+#%flag
+#% key:r
+#% description: Remove temp file
+#%end
+
+
+schema=''
+time=''
+path=''
+ogr=''
+nat=''
+layer=''
+key=''
+prefix=''
+typ=''
+firstrun=''
+view=''
+filetimewin=''
+
+
+
+def print_message(msg):
+    grass.message(msg)
+    grass.message('-' * 60)
+
+def setFirstRun():
+    try:
+        io= open(os.path.join(path,firstrun),"wr")
+        io.write(options['type'])
+        io.close
+    except IOError as (errno,strerror):
+        print "I/O error({0}): {1}".format(errno, strerror)
+
+def firstConnect():
+
+    print_message('v.in.ogr')
+    grass.run_command('v.in.ogr',
+                    dsn="PG:",
+                    layer = layer,
+                    output = ogr,
+                    overwrite=True,
+                    flags='t',
+                    type=typ,
+                    quiet=True)
+   
+    # if vector already exits, remove dblink (original table)
+    if grass.find_file(nat, element='vector')['fullname']:
+
+        grass.run_command('v.db.connect',
+                          map=nat,
+                          flags='d',
+                          layer='1',
+                          quiet=True)
+        
+        grass.run_command('v.db.connect',
+                          map=nat,
+                          flags='d',
+                          layer='2',
+                          quiet=True)
+        
+
+    grass.run_command('v.category',
+                    input=ogr,
+                    output=nat,
+                    option="transfer",
+                    overwrite=True,
+                    layer="1,2",
+                    quiet=True)
+    
+
+    grass.run_command('v.db.connect',
+                    map=nat,
+                    table=layer,
+                    key=key,
+                    layer='1',
+                    quiet=True)
+    
+def nextConnect():
+
+    grass.run_command('v.db.connect',
+                    map=nat,
+                    layer='2',
+                    flags='d',
+                    quiet=True)
+    
+    grass.run_command('v.db.connect',
+                    map=nat,
+                    table=view,
+                    key=key,
+                    layer='2',
+                    quiet=True)
+    
+    if options['color']:
+        setColor(nat)
+   
+def setColor(mapa):
+    grass.run_command('v.colors',
+                      map=mapa,
+                      use='attr',
+                      layer=2,
+                      column='precip_mm_h',
+                      rules=options['color']
+                      )
+
+def createVect(view_nat):
+    
+    
+    grass.run_command('v.in.ogr',
+                    dsn="PG:",
+                    layer = layer,
+                    output = ogr,
+                    overwrite=True,
+                    flags='t',
+                    key=key,
+                    type=typ,
+                    quiet=True)
+   
+    # if vector already exits, remove dblink (original table)
+    if grass.find_file(view_nat, element='vector')['fullname']:
+        grass.run_command('v.db.connect',
+                          map=view_nat,
+                          flags='d',
+                          layer='1',
+                          quiet=True)
+        
+        grass.run_command('v.db.connect',
+                          map=view_nat,
+                          flags='d',
+                          layer='2',
+                          quiet=True)
+        
+
+    grass.run_command('v.category',
+                    input=ogr,
+                    output=view_nat,
+                    option="transfer",
+                    overwrite=True,
+                    layer="1,2",
+                    quiet=True)
+    
+    grass.run_command('v.db.connect',
+                    map=view_nat,
+                    table=layer,
+                    key=key,
+                    layer='1',
+                    quiet=True)
+    
+    grass.run_command('v.db.connect',
+                    map=view_nat,
+                    table=view,
+                    key=key,
+                    layer='2',
+                    quiet=True)    
+    
+    if options['color']:
+        setColor(view_nat)    
+
+def run():
+    try: 
+        os.makedirs(path)
+    except OSError:
+        if not os.path.isdir(path):
+            raise
+        
+    #dbConnGrass(options['database'],options['user'],options['password'])
+    global view
+
+
+    if not flags['c'] and not flags['a']:
+        view=schema+'.%sview'%prefix+time.replace('-','_').replace(':','_').replace(' ','_')
+        view=view[:-3]
+        
+        if not os.path.exists(os.path.join(path,firstrun)):
+            setFirstRun()
+            #print_message("first")
+            firstConnect()
+            nextConnect()
+        else:
+            #print_message("next")
+            nextConnect()
+            
+    elif flags['c']:
+        
+        view=schema+'.%sview'%prefix+time.replace('-','_').replace(':','_').replace(' ','_')
+        view=view[:-3]
+        view_nat='view'+time.replace('-','_').replace(':','_').replace(' ','_')
+        createVect(view_nat)
+   
+    elif flags['a']:
+        try:
+                with open(os.path.join(path,filetimewin),'r') as f:            
+                    for win in f.read().splitlines():
+                        view=schema+'.%sview'%prefix+win[5:]
+
+                        createVect(win)
+
+        except IOError as (errno,strerror):
+            print "I/O error({0}): {1}".format(errno, strerror)
+         
+
+    if flags['p']:
+
+        sql='select %s, precip_mm_h from %s '%(key,view)
+        grass.run_command('db.select',
+                    sql=sql,
+                    separator='  ')
+        
+def isTimeValid(time):
+
+        RE = re.compile(r'^\d{4}-\d{2}-\d{2}[ T]\d{2}:\d{2}:\d{2}$')
+        return bool(RE.search(time))
+
+def main():
+
+    global schema,time,path,ogr,nat,layer,key,prefix,typ,firstrun,filetimewin
+    schema=options['schema']
+
+    
+    time=options['time']
+    path= os.path.join(os.path.dirname(os.path.realpath(__file__)), "tmp_%s"%schema)
+    
+
+
+##remove schema and tempfile    
+    if flags['r']:
+        try:
+            os.remove(os.path.join(path,'firstrunlink'))
+            os.remove(os.path.join(path,'firstrungauge'))
+        except:
+            print_message("Temp file not exists")
+           
+           
+    #for links
+    if options['type'].find('l')!=-1:
+        if options['vector'].find('l')!=-1:
+  #connect to line layer
+            ogr='link_ogr'
+            nat="link_nat"
+            layer='link'
+            key='linkid'
+            prefix='l'
+            typ='line'
+            firstrun='firstrunlink'
+            filetimewin='l_timewindow'
+            run()
+        else:
+            #connect to points layer
+            if not options['layername']:
+                grass.fatal("set up name of points layer")
+            else:               
+                ogr='point_ogr'
+                nat="points_nat"
+                layer='%s.%s'%(schema,options['layername'])
+                key='linkid'
+                prefix='l'
+                typ='point'
+                firstrun='firstrunlink'
+                filetimewin='l_timewindow'
+                run()
+                
+    #for rain gaugues            
+    if options['type'].find('r')!=-1:  
+        ogr='gauge_ogr'
+        nat="gauge_nat"
+        layer='%s.rgauge'%schema
+        key='gaugeid'
+        prefix='g'
+        typ='point'            
+        firstrun='firstrungauge'
+        filetimewin='g_timewindow'
+        run()  
+
+
+ 
+    print_message("DONE")    
+    
+if __name__ == "__main__":
+    options, flags = grass.parser()
+
+main()


Property changes on: grass-addons/grass7/vector/v.link.precip/v.link.precip.py
___________________________________________________________________
Added: svn:executable
   + *



More information about the grass-commit mailing list