[GRASS-dev] [GRASS GIS] #409: v.label.editor

GRASS GIS trac at osgeo.org
Mon Dec 22 14:58:08 EST 2008


#409: v.label.editor
-------------------------+--------------------------------------------------
 Reporter:  neuba        |       Owner:  grass-dev at lists.osgeo.org
     Type:  enhancement  |      Status:  new                      
 Priority:  major        |   Milestone:  6.4.0                    
Component:  default      |     Version:  unspecified              
 Keywords:               |    Platform:  Unspecified              
      Cpu:  Unspecified  |  
-------------------------+--------------------------------------------------
 This is a python for editing and remove file item. Please is this a new
 for grass?


 {{{
 #!/usr/bin/env python

 ############################################################################
 #
 # MODULE:       v.label.editor
 # AUTHOR:       Neuba Danho Fursy Rodelec (danho_f at yahoo.fr)
 #               Ivory Coast'
 #
 #
 # PURPOSE:      simple label file editor to modify individual label item
 parameters and create a new label file
 #                 (
 # COPYRIGHT:    (c) 2008 Neuba Danho, and 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.
 #
 #############################################################################
 #%Module
 #% description: Edit,remove individual label item
 #% keywords: vector, area, dissolve
 #%End

 #%flag
 #%key:i
 #%description: get label information
 #%end
 #%flag
 #%key:r
 #%description: remove label item
 #%end

 #%option
 #%key: filename
 #%type: string
 #%required: yes
 #%description: the label filename
 #%end
 #%option
 #%key: parameter
 #%type: string
 #%required: yes
 #%description: Parameter to modify
 #%end
 #%option
 #%key: value
 #%type: string
 #%required: no
 #%description: The new value
 #%end
 #%option
 #%key: idlab
 #%type: string
 #%required: yes
 #%description: the label text
 #%end
 #%option
 #%key: output
 #%type: string
 #%required: no
 #%description: the output filename
 #%end



 import grass
 import sys
 import string as st
 import os
 __version__="1.0"

 def led():
         ge= grass.gisenv()
         gdb=ge['GISDBASE']
         loc=ge['LOCATION_NAME']
         maps=ge['MAPSET']
         paint='paint'
         lp='labels'
         filename=options['filename']
         labpath=os.path.join(gdb,loc,maps,paint,lp)
         info=flags['i']
         remove=flags['r']
         idlab=options['idlab']
         value=options['value']
         para=options['parameter']
         output=options['output']
 parlist=('east','north','opaque','color','border','hwidth','yoffset','width','hcolor','fontsize','background','font','ref','xoffset','rotation')
         if para not in parlist:
                         print 'paramater not in list'
                         sys.exit()

         if os.path.isdir(labpath)==True:
                 fname=os.path.join(labpath,filename)
                 data=labelItem(fname)


         else:
                 fname=os.path.join(labpath,filename)
                 print faname+': no such file or directory'
                 sys.exit()




         if info:
                 if para:

                         grass.message(data[idlab][para])
                 else:
                         grass.message(data[idlab])

         else:
                 if output:
                         outfile=output
                 else:
                         outfile=filename
                 if remove:
                         del data[idlab]
                         grass.message( idlab+ ': deleted from '+filename)
                 else:

                         labtomodify=data[idlab]
                         labtomodify[para]=value
                         grass.message( para+ ': set to
 '+labtomodify[para]+' for label: '+idlab)
                         data[idlab]=labtomodify

                 createlabfile(data,labpath,outfile)

 def createlabfile(x,lpx,op):
         text=''
         for k in x.keys():
                 val=x[k]
                 for kv in val.keys():
                         text=text+kv+': '+val[kv]+'\n'
                 text=text+'text: '+k+'\n\n'

         fx=open(os.path.join(lpx,op),'w')
         fx.write(text)
         fx.close()


 def labelItem(fx):
         f=open(fx,'r')
         data={}
         par={}

         for l in f.readlines():

                 sl=l.split(':')
                 if l.find(':')>-1:

                         if sl[0]=='text':
                                 kr=st.strip(sl[1][0:len(sl[1])-1],' ')
                                 data[kr]=par
                                 par={}

                         else:
                                 val=st.strip(sl[1][0:len(sl[1])-1],' ')
                                 par[sl[0]]=val
         return data
         f.close()


 if __name__=='__main__':
         options,flags=grass.parser()

         led()
 }}}

-- 
Ticket URL: <http://trac.osgeo.org/grass/ticket/409>
GRASS GIS <http://grass.osgeo.org>


More information about the grass-dev mailing list