Beispiel #1
0
def load_file(fname):
    try:
        radar = read_nexrad_archive(fname)
    except Exception as e:
        print(e, fname)
    xsect = cross_section_ppi(radar, [274])
    return xsect
Beispiel #2
0
def readNEXRAD(filename):
    """
    """
    print("Reading: %s" % (filename))
    dat = read_nexrad_archive(filename, linear_interp=False)
    print("Done reading!")

    return dat
Beispiel #3
0
    async def fetch(cls, site, dt, local=False):
        if local:
            url = f"http://127.0.0.1:8000/data/l2raw/{site}{dt.strftime('%Y%m%d_%H%M%S')}_V06"
        else:
            url = f"{_url_base}/{site}/{site}_{dt.strftime('%Y%m%d_%H%M')}"

        _logger.debug(
            f"Downloading radar volume for {site} at {dt.strftime('%d %b %Y %H%M UTC')}"
        )
        bio = BytesIO()
        bio.write(await download(url))
        bio.seek(0)

        rfile = read_nexrad_archive(bio)
        rfile_dealias = dealias_unwrap_phase(rfile)
        dt = datetime.strptime(rfile.time['units'],
                               'seconds since %Y-%m-%dT%H:%M:%SZ')

        sweeps = []
        for field in rfile.fields.keys():
            for ie, elv in enumerate(rfile.fixed_angle['data']):
                istart, iend = rfile.get_start_end(ie)
                azimuths = rfile.get_azimuth(ie)
                ranges = rfile.range['data']

                nyquist = rfile.get_nyquist_vel(ie)
                if field == 'velocity' and nyquist < 10:
                    continue
                elif field != 'velocity' and len(sweeps) > 0 and sweeps[
                        -1].elevation == elv and sweeps[-1].field == field:
                    # Check to see if this is a "duplicate" sweep
                    if nyquist > 10:
                        # Assume this is the short-range sweep and ignore it
                        continue
                    else:
                        # Assume that somehow the short-range sweep got put in the file
                        # first and take it out. I don't think this should ever happen.
                        sweeps.pop()

                saz = azimuths[0]
                eaz = azimuths[
                    -1] if azimuths[-1] > azimuths[0] else azimuths[-1] + 360
                dazim = round((eaz - saz) / len(azimuths), 1)

                dt_sweep = dt + timedelta(seconds=rfile.time['data'][istart])

                if field == 'velocity':
                    field_data = rfile_dealias['data'][istart:(iend + 1)]
                else:
                    field_data = rfile.get_field(ie, field)

                rs = RadarSweep(site, dt_sweep, field, elv, azimuths[0],
                                float(ranges[0]), dazim, 250, field_data)
                sweeps.append(rs)
        return cls(sweeps)
Beispiel #4
0
def readNEXRAD(filename):
    """
    """
    print("Reading: %s" % (filename))
    try:
        dat = read_nexrad_archive(filename, linear_interp=False)
        print("Done reading!")
    except (ValueError, IndexError) as e:
        print("%s is likely a bad file!" % (filename))
        print(str(e))
        dat = None

    return dat
Beispiel #5
0
    def create_image_file(nexrad_file: Path, image_file: Path):
        radar: Radar = read_nexrad_archive(str(nexrad_file))
        display: RadarDisplay = RadarDisplay(radar)
        fig = plt.figure(figsize=(12, 10))

        ax = fig.add_subplot(111)
        display.plot('reflectivity',
                     0,
                     title='NEXRAD Reflectivity',
                     vmin=-32,
                     vmax=64,
                     colorbar_label='',
                     ax=ax)
        #display.plot_range_ring(radar.range['data'][-1]/1000., ax=ax)
        display.set_limits(xlim=(-500, 500), ylim=(-500, 500), ax=ax)
        plt.savefig(str(image_file), bbox_inches='tight')