Changeset 1156 for TI02-CSML


Ignore:
Timestamp:
12/06/06 15:02:41 (14 years ago)
Author:
domlowe
Message:

Added new FeatureFileMap? option to Scanner. The option is called oneonly and means that the structure of just one file represents a feature spannign mulptiple directories.

Location:
TI02-CSML/trunk/Scanner
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • TI02-CSML/trunk/Scanner/csmllibs/csmlbuilder.py

    r1084 r1156  
    8383        elif self.mapping=='onetoone': 
    8484            self.ffmap = fmm.onetoone() 
     85        elif self.mapping=='oneonly': 
     86            self.ffmap = fmm.oneonly() 
    8587 
    8688    def makeFileExtracts(self): 
  • TI02-CSML/trunk/Scanner/csmllibs/csmlfiles.py

    r57 r1156  
    66 
    77class FileMapMaker: 
    8         # class which handles the lower level featurefilemap and directorytree classes 
    9         #to build a featurefilemap object of featuretypes/files. 
    10         #current relationships are onetomany, onetoone and mixedft, 
    11         #but others could be created 
    12         def __init__(self,topdirectory, ftorftdictionary): 
    13                 self.topdir=topdirectory 
    14                 if type(ftorftdictionary) is str: 
    15                         self.ft = ftorftdictionary 
    16                 elif type(ftorftdictionary) is dict: 
    17                         self.ftdictionary=ftorftdictionary  
    18                 else: 
    19                         #wrong type 
    20                         print 'FileMapMaker takes a  featuretype string or dictionary' 
    21                         sys.exit() 
    22          
    23         def onetomany(self): 
    24                 tree = csmllibs.csmldirectory.DirectoryTree() 
    25                 tree.setTopDirectory(self.topdir) 
    26                 tree.readDirectory() 
    27                 subdirs = tree.getSubDirectories() 
    28                 ffmap = csmllibs.csmlfeaturefilemap.FeatureFileMap() 
     8    ''' class which handles the lower level featurefilemap and directorytree classes 
     9    to build a featurefilemap object of featuretypes/files. 
     10    current relationships are onetomany, onetoone and mixedft, 
     11    but others could be created ''' 
     12    def __init__(self,topdirectory, ftorftdictionary): 
     13            self.topdir=topdirectory 
     14            if type(ftorftdictionary) is str: 
     15                    self.ft = ftorftdictionary 
     16            elif type(ftorftdictionary) is dict: 
     17                    self.ftdictionary=ftorftdictionary  
     18            else: 
     19                    #wrong type 
     20                    print 'FileMapMaker takes a  featuretype string or dictionary' 
     21                    sys.exit() 
     22     
     23    def onetomany(self): 
     24        ''' onetomany means one file per directory/subdirectory is the representative file ''' 
     25        tree = csmllibs.csmldirectory.DirectoryTree() 
     26        tree.setTopDirectory(self.topdir) 
     27        tree.readDirectory() 
     28        subdirs = tree.getSubDirectories() 
     29        ffmap = csmllibs.csmlfeaturefilemap.FeatureFileMap() 
     30         
     31        for dir in subdirs: 
     32                file=tree.getFirstInSubDir(dir) 
     33                if file == None: 
     34                        continue 
     35                #create representative file 
     36                repfile=csmllibs.csmlfeaturefilemap.representativeFile(file) 
     37                repfile.setFeatureType(self.ft) 
     38                try: 
     39                        print dir 
     40                        otherfiles=tree.getAllCSMLFilesExceptFirst(dir) 
     41                        errtest=otherfiles[0] 
     42                except: 
     43                        print 'no other csml files in this directory' 
     44                        #add representative file with no related files. 
     45                        ffmap.addRepresentativeFile(repfile) 
     46                        continue 
     47                 
     48                #add otherfiles as related files with feature type, ft 
     49                #note they could have individual featuretypes. 
     50 
     51                for f in otherfiles: 
     52                        relfile = csmllibs.csmlfeaturefilemap.relatedFile(f) 
     53                        relfile.setFeatureType(self.ft) 
     54                        repfile.addRelatedFile(relfile) 
     55                ffmap.addRepresentativeFile(repfile) 
     56                 
     57        return ffmap 
    2958                 
    30                 for dir in subdirs: 
    31                         file=tree.getFirstInSubDir(dir) 
    32                         if file == None: 
    33                                 continue 
    34                         #create representative file 
    35                         repfile=csmllibs.csmlfeaturefilemap.representativeFile(file) 
    36                         repfile.setFeatureType(self.ft) 
    37                         try: 
    38                                 print dir 
    39                                 otherfiles=tree.getAllCSMLFilesExceptFirst(dir) 
    40                                 errtest=otherfiles[0] 
    41                         except: 
    42                                 print 'no other csml files in this directory' 
    43                                 #add representative file with no related files. 
    44                                 ffmap.addRepresentativeFile(repfile) 
    45                                 continue 
    46                          
    47                         #add otherfiles as related files with feature type, ft 
    48                         #note they could have individual featuretypes. 
     59    def onetoone(self): 
     60        """ onetoone means each feature is self contained within any individual file 
     61        """ 
     62        tree = csmllibs.csmldirectory.DirectoryTree() 
     63        tree.setTopDirectory(self.topdir) 
     64        tree.readDirectory() 
     65        subdirs = tree.getSubDirectories() 
     66        ffmap = csmllibs.csmlfeaturefilemap.FeatureFileMap() 
     67        for dir in subdirs:      
     68                files=tree.getCSMLSupportedFilesInSubDir(dir) 
     69                for f in files: 
     70                        repfile=csmllibs.csmlfeaturefilemap.representativeFile(f) 
     71                        repfile.setFeatureType(self.ft) 
     72                        ffmap.addRepresentativeFile(repfile) 
     73        return ffmap     
     74         
     75    def oneonly(self): 
     76        """ oneonly means one file represents feature spanning multiple directories  
     77        assumes no file in toplevel directory, and then lots of subdirectories at next level containing files 
     78        """ 
     79         
     80        tree = csmllibs.csmldirectory.DirectoryTree() 
     81        tree.setTopDirectory(self.topdir) 
     82        tree.readDirectory() 
     83        subdirs = tree.getSubDirectories() 
     84        print subdirs 
     85        allfiles= tree.getAllCSMLSupportedFiles() 
     86        print allfiles 
     87        ffmap = csmllibs.csmlfeaturefilemap.FeatureFileMap() 
     88         
     89        #create representative file from first file 
     90        repfile=csmllibs.csmlfeaturefilemap.representativeFile(allfiles[0]) 
     91        repfile.setFeatureType(self.ft) 
     92         
     93        #create related files from all other files 
     94        for f in allfiles[1:]: 
     95            relfile = csmllibs.csmlfeaturefilemap.relatedFile(f) 
     96            relfile.setFeatureType(self.ft) 
     97            repfile.addRelatedFile(relfile) 
     98        ffmap.addRepresentativeFile(repfile) 
     99        return ffmap 
    49100 
    50                         for f in otherfiles: 
    51                                 relfile = csmllibs.csmlfeaturefilemap.relatedFile(f) 
    52                                 relfile.setFeatureType(self.ft) 
    53                                 repfile.addRelatedFile(relfile) 
    54                         ffmap.addRepresentativeFile(repfile) 
    55                          
    56                 return ffmap 
    57                  
    58         def onetoone(self): 
    59                 tree = csmllibs.csmldirectory.DirectoryTree() 
    60                 tree.setTopDirectory(self.topdir) 
    61                 tree.readDirectory() 
    62                 subdirs = tree.getSubDirectories() 
    63                 ffmap = csmllibs.csmlfeaturefilemap.FeatureFileMap() 
    64                 for dir in subdirs:      
    65                         files=tree.getCSMLSupportedFilesInSubDir(dir) 
    66                         for f in files: 
    67                                 repfile=csmllibs.csmlfeaturefilemap.representativeFile(f) 
    68                                 repfile.setFeatureType(self.ft) 
    69                                 ffmap.addRepresentativeFile(repfile) 
    70                 return ffmap     
    71          
    72         def mixedft(self): 
    73                 tree = csmllibs.csmldirectory.DirectoryTree() 
    74                 tree.setTopDirectory(self.topdir) 
    75                 tree.readDirectory() 
    76                 subdirs = tree.getSubDirectories() 
    77                 ffmap = csmllibs.csmlfeaturefilemap.FeatureFileMap() 
    78                 for dir in subdirs:      
    79                         files=tree.getCSMLSupportedFilesInSubDir(dir) 
    80                         for f in files: 
    81                                 repfile=csmllibs.csmlfeaturefilemap.representativeFile(f) 
    82                                 #look up feature type in dictionary 
    83                                 ft=self.ftdictionary[f] 
    84                                 repfile.setFeatureType(ft) 
    85                                 ffmap.addRepresentativeFile(repfile)     
    86                 return ffmap 
     101 
     102             
     103                         
     104    def mixedft(self): 
     105        ''' allows the use of a dictonary object to store feature file map info not well tested ''' 
     106        tree = csmllibs.csmldirectory.DirectoryTree() 
     107        tree.setTopDirectory(self.topdir) 
     108        tree.readDirectory() 
     109        subdirs = tree.getSubDirectories() 
     110        ffmap = csmllibs.csmlfeaturefilemap.FeatureFileMap() 
     111        for dir in subdirs:      
     112                files=tree.getCSMLSupportedFilesInSubDir(dir) 
     113                for f in files: 
     114                        repfile=csmllibs.csmlfeaturefilemap.representativeFile(f) 
     115                        #look up feature type in dictionary 
     116                        ft=self.ftdictionary[f] 
     117                        repfile.setFeatureType(ft) 
     118                        ffmap.addRepresentativeFile(repfile)     
     119        return ffmap 
  • TI02-CSML/trunk/Scanner/csmlscan.py

    r1083 r1156  
    102102        sys.argv =optargs 
    103103    try: 
    104             opts, args = getopt.getopt(sys.argv[1:], "d:c:t:frpo:h", ["directory=", "csmlfeaturetype=", "timedimension=", "filemapping=", "recursive", "printscreen", "outputfile=", "help"]) 
     104            opts, args = getopt.getopt(sys.argv[1:], "d:c:t:f:rpo:h", ["directory=", "csmlfeaturetype=", "timedimension=", "filemapping=", "recursive", "printscreen", "outputfile=", "help"]) 
    105105    except getopt.error, msg: 
    106106            print "Invalid options, use --help for help" 
    107107            sys.exit() 
    108108    print sys.argv 
     109     
    109110    # process options 
    110111    directory = None 
     
    114115    recursive = 0 
    115116    printscreen=0 
    116     print printscreen 
    117117    individual = False 
    118118    outputfile = 'csmloutput.xml' 
     
    129129                    elif v == '1n': 
    130130                        mapping = 'onetomany' 
     131                    elif v == '1o': 
     132                        mapping = 'oneonly' 
    131133            elif o in ("-p", "--printscreen"): 
    132134                    printscreen = 1 
     
    136138                    print usage 
    137139                    sys.exit()                           
    138      
    139140             
    140141    #create CSML: 
     
    167168 
    168169    csmldataset=csmllibs.csmlbuilder.csmlBuilder(directory,csmlfeaturetype,mapping,timedimension, outputfile, printscreen) 
    169     print "building csml..." 
     170    print 'building csml... with %s mapping '%mapping 
    170171    csmldataset.build() 
    171172     
Note: See TracChangeset for help on using the changeset viewer.