Changeset 3263 for DPPP/kml


Ignore:
Timestamp:
24/01/08 16:57:41 (12 years ago)
Author:
mkochan
Message:

Added time ticks to the x axis, but the spacing and formatting of the ticks is still not working properly.

Location:
DPPP/kml/csml2kml/python/pylonsstack
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • DPPP/kml/csml2kml/python/pylonsstack/development.ini

    r3253 r3263  
    1414use = egg:Paste#http 
    1515host = 0.0.0.0 
    16 port = 5000 
     16port = 8089 
    1717 
    1818[app:main] 
  • DPPP/kml/csml2kml/python/pylonsstack/pylonsstack/controllers/csmlGrapher.py

    r3261 r3263  
    55# Other imports 
    66import csml 
    7 from cStringIO import StringIO 
    87import Image 
     8import pylab 
    99from pylab import * 
    1010from datetime import datetime, timedelta 
    1111import re 
     12from cStringIO import StringIO 
     13from tempfile import NamedTemporaryFile 
    1214 
    1315log = logging.getLogger(__name__) 
    1416 
     17# [TODO] . Remove plotting via temp file. 
     18#        . Add correct labeling of time axis 
     19#        . Comments 
     20#        . Add security (especially checking of input parameters). 
    1521class CsmlgrapherController(BaseController): 
    1622 
    1723    def plot(self): 
    18         # . parse CSML file, isolate the PointFeature 
    19         # . isolate the time series 
    20         # . draw and return (explore drawing straight to a memory stream) 
    21  
    22         def _getElapsedDays(time_step): 
    23             matchObject = re.match("(\d+)\-(\d+)\-(\d+)T(\d+):(\d+):(\d+)", time_step) 
    24             str_tuple = matchObject.groups() 
    25             (Y, M, D, h, m, s) = map(int, str_tuple) 
    26             dt = datetime(Y, M, D, h, m, s) 
    27             epoch_start = datetime(1900, 1, 1) 
    28             time_delta = dt - epoch_start 
    29             elapsed_days = float(time_delta.days) + float(time_delta.seconds) / float(24*60*60) 
    30             return elapsed_days 
    3124 
    3225        def _plot_feature(feature): 
     
    4033            print 'All times (%s of them): '% len(times) 
    4134            print times 
    42  
    43             elapsed_times = map(_getElapsedDays, times) 
    44             print 'All times (%s of them) as days since 1 Jan 1900: '% len(elapsed_times) 
     35             
     36            #!span = dates.date2num(times[-1]) - dates.date2num(times[0]) 
     37            #!print 'The span is ' + span + ' days.' 
     38            elapsed_times = map(pylab.matplotlib.dates.datestr2num, times) 
     39            #!(tickLocator, tickFormatter) = dates.date_ticker_factory(span, 5) 
     40             
     41            print 'All times (%s of them) as days since 01-01-0001 UTC: '% len(elapsed_times) 
    4542            print elapsed_times 
    4643 
     
    4845            # vals=feature.value.rangeSet.valueArray.valueComponent.insertedExtract.components.getDataFromChunks(0,19) 
    4946 
    50             #but for inline data: 
     47            # We use this for inline data: 
    5148            ql = feature.value.rangeSet.quantityList 
    5249            vals = map(float, ql.CONTENT.split()) 
    5350            print 'Measurement values (%s of them):\n%s' % (len(vals), repr(vals)) 
    5451 
     52            # Determine the units of measurement 
    5553            uom=ql.uom.title() 
    5654            if ql.uom.islower(): 
     
    6058            print 'Units of measurement: %s' % uom 
    6159 
    62             plot(elapsed_times, vals, '-', lw=2) 
    63  
     60            # Plot the figure 
     61            clf() 
     62            plot_date(elapsed_times, vals, '-', xdate=True, lw=2) 
    6463            xlabel('Time since start [days]') 
    6564            ylabel('Values [%s]' % uom) 
     
    6766            grid(True) 
    6867 
    69             savefig('/home/users/mkochan/svn-root/kml/csml2kml/output/psplot.temp.png') 
     68            # Save the figure to a temporary file 
     69            tempFile = NamedTemporaryFile(suffix='.png') 
     70            savefig(tempFile.name) 
     71             
     72            return tempFile 
    7073 
    71             show() 
    72             clf() 
    73             close() 
    74  
    75         def _set_response(): 
     74        def _set_response(tempFile): 
    7675            ''' 
    7776            Set the WSGI response to an image, containing image read from a temporary location. 
    7877            ''' 
    79             from cStringIO import StringIO 
    80             import Image 
    81             img = Image.open('/home/users/mkochan/svn-root/kml/csml2kml/output/psplot.temp.png') 
     78            img = Image.open(tempFile.name) 
    8279            buf = StringIO() 
    8380            img.save(buf, 'PNG') 
     
    9693                break 
    9794        if feature: 
    98             _plot_feature(feature)                             # plot the feature into a temporary file 
    99             _set_response()                                    # set WSGI response as an image containing the plot 
     95            try: 
     96                tempFile = _plot_feature(feature)              # plot the feature into a temporary file 
     97                _set_response(tempFile)                        # set WSGI response as an image containing the plot 
     98            finally: 
     99                try: 
     100                    tempFile.close() 
     101                except NameError: 
     102                    pass  # tempFile undefined -- no need to close 
    100103        else: 
    101104            raise HTTPNotFound('Feature not found (wrong feature ID given)') 
Note: See TracChangeset for help on using the changeset viewer.