Esempio n. 1
0
    def stackio(self, cmd: 'txt', name: 'txt' = ''):
        ''' Calculate a set of metrics within specified sectors. '''
        print('BLAAA', cmd, name)
        if cmd == 'LIST':
            if not self.sectors:
                return True, 'No registered sectors available'
            return True, 'Registered sectors:', str.join(', ', self.sectors)
        elif cmd == 'ADDSECTOR':
            if name == 'ALL':
                for areaname in areafilter.basic_shapes.keys():
                    self.stackio('ADDSECTOR', areaname)
            # Add new sector to list.
            elif name in self.sectors:
                return False, 'Sector %s already registered.' % name
            elif areafilter.hasArea(name):
                if not self.sectors:
                    self.fconv = open(
                        'output/' + stack.get_scenname() + 'convergence.csv',
                        'w')
                    self.fsd = open(
                        'output/' + stack.get_scenname() + 'density.csv', 'w')
                    self.feff = open(
                        'output/' + stack.get_scenname() + 'efficiency.csv',
                        'w')
                    # Create the plot if this is the first sector
                    plotter.plot('metrics.metrics.sectorsd',
                                 dt=2.5,
                                 title='Static Density',
                                 xlabel='Time',
                                 ylabel='Aircraft count',
                                 fig=1)
                    plotter.plot('metrics.metrics.sectorconv',
                                 dt=2.5,
                                 title='Summed Pairwise Convergence',
                                 xlabel='Time',
                                 ylabel='Convergence',
                                 fig=2)
                    self.effplot = plotter.Plot('metrics.metrics.sectoreff',
                                                title='Route Efficiency',
                                                plot_type='boxplot',
                                                xlabel='Sector',
                                                ylabel='Efficiency',
                                                fig=3)
                # Add new area to the sector list, and add an initial inside count of traffic
                self.sectors.append(name)
                self.acinside.append(SectorData())
                plotter.legend(self.sectors, 1)
                return True, 'Added %s to sector list.' % name

            else:
                return False, "No area found with name '%s', create it first with one of the shape commands" % name

        else:
            # Remove area from sector list
            if name in self.sectors:
                idx = self.sectors.index(name)
                self.sectors.pop(idx)
                return True, 'Removed %s from sector list.' % name
            return False, "No sector registered with name '%s'." % name
Esempio n. 2
0
    def stackio(self, cmd, name):
        if cmd == 'LIST':
            if not self.sectors:
                return True, 'No registered sectors available'
            else:
                return True, 'Registered sectors:', str.join(', ', self.sectors)
        elif cmd == 'ADDSECTOR':
            if name == 'ALL':
                for name in areafilter.areas.keys():
                    self.stackio('ADDSECTOR', name)
            # Add new sector to list.
            elif name in self.sectors:
                return False, 'Sector %s already registered.' % name
            elif areafilter.hasArea(name):
                if not self.sectors:
                    self.fconv = open('output/convergence.csv', 'w')
                    self.fsd = open('output/density.csv', 'w')
                    self.feff = open('output/efficiency.csv', 'w')
                    # Create the plot if this is the first sector
                    plotter.plot('metrics.metrics.sectorsd', dt=2.5, title='Static Density',
                                xlabel='Time', ylabel='Aircraft count', fig=1)
                    plotter.plot('metrics.metrics.sectorconv', dt=2.5, title='Summed Pairwise Convergence',
                                xlabel='Time', ylabel='Convergence', fig=2)
                    self.effplot = plotter.Plot('metrics.metrics.sectoreff', title='Route Efficiency', plot_type='boxplot',
                                xlabel='Sector', ylabel='Efficiency', fig=3)
                # Add new area to the sector list, and add an initial inside count of traffic
                self.sectors.append(name)
                self.acinside.append(SectorData())
                plotter.legend(self.sectors, 1)
                return True, 'Added %s to sector list.' % name

            else:
                return False, "No area found with name '%s', create it first with one of the shape commands" % name

        else:
            # Remove area from sector list
            if name in self.sectors:
                idx = self.sectors.index(name)
                self.sectors.pop(idx)
                return True, 'Removed %s from sector list.' % name
            else:
                return False, "No sector registered with name '%s'." % name