Added caching for generated images
This commit is contained in:
@@ -65,14 +65,22 @@ def get_radar_frames(site, datetime_t, num_frames):
|
||||
closest_datetime = _nearestDate(datetimes, datetime_t)
|
||||
index = datetimes.index(closest_datetime)
|
||||
|
||||
radarFrames = [0] * num_frames
|
||||
#radarFrames = [0] * num_frames
|
||||
radarFrames = {}
|
||||
i = index
|
||||
printdebug('Pulling all the radar images requested')
|
||||
while i > (index - num_frames) and i >= 0:
|
||||
radarFrames[num_frames - ((index - i) + 1)] = get_radar_from_aws(keys[i].Object())
|
||||
#radarFrames[num_frames - ((index - i) + 1)] = get_radar_from_aws(keys[i].Object())
|
||||
filename = keys[i].key.replace('/', '_')
|
||||
radarFrames[filename] = get_radar_from_aws(keys[i].Object())
|
||||
i = i - 1
|
||||
|
||||
return radarFrames
|
||||
sortedIndices = sorted(radarFrames)
|
||||
sortedRadarFrames = {}
|
||||
for key in sortedIndices:
|
||||
sortedRadarFrames[key] = radarFrames[key]
|
||||
|
||||
return sortedRadarFrames
|
||||
|
||||
def get_radar_from_aws(aws_object):
|
||||
"""
|
||||
@@ -150,7 +158,7 @@ def generate_radar_image(radar_data, tiler, mercator):
|
||||
ax.add_image(tiler, 6)
|
||||
printdebug('Plotting!')
|
||||
display.plot_ppi_map('reflectivity', sweep = 0, resolution='10m',
|
||||
vmin = 10, vmax = 64,
|
||||
vmin = -8, vmax = 64,
|
||||
cmap = "ChaseSpectral",
|
||||
min_lat = min_lat, min_lon = min_lon,
|
||||
max_lat = max_lat, max_lon = max_lon,
|
||||
@@ -165,22 +173,33 @@ def generate_radar_image(radar_data, tiler, mercator):
|
||||
|
||||
fmt = '%Y%m%d_%H%M%S'
|
||||
currentDatetime = datetime.now(timezone.utc)
|
||||
num_frames = 10
|
||||
num_frames = 20
|
||||
secondary_frames = [0] * (num_frames - 1)
|
||||
|
||||
radar = get_radar_frames('KVNX', currentDatetime, num_frames=num_frames)
|
||||
print(list(radar.keys()))
|
||||
|
||||
tiler = OSM(cache=True)
|
||||
mercator = tiler.crs
|
||||
|
||||
firstFrameFig = generate_radar_image(radar[0], tiler, mercator)
|
||||
firstFrame = convert_fig_to_img(firstFrameFig)
|
||||
radarKeys = list(radar.keys())
|
||||
|
||||
if not os.path.isfile(f'cache/radarimages/{radarKeys[0]}.png'):
|
||||
firstFrameFig = generate_radar_image(radar[radarKeys[0]], tiler, mercator)
|
||||
firstFrame = convert_fig_to_img(firstFrameFig)
|
||||
firstFrame.save(f'cache/radarimages/{radarKeys[0]}.png')
|
||||
else:
|
||||
firstFrame = Image.open(f'cache/radarimages/{radarKeys[0]}.png')
|
||||
|
||||
i = 0
|
||||
for i in range(num_frames - 1):
|
||||
fig = generate_radar_image(radar[i + 1], tiler, mercator)
|
||||
secondary_frames[i] = convert_fig_to_img(fig)
|
||||
# filename = aws_object.key.replace('/', '_')
|
||||
if not os.path.isfile(f'cache/radarimages/{radarKeys[i + 1]}.png'):
|
||||
fig = generate_radar_image(radar[radarKeys[i + 1]], tiler, mercator)
|
||||
secondary_frames[i] = convert_fig_to_img(fig)
|
||||
secondary_frames[i].save(f'cache/radarimages/{radarKeys[i + 1]}.png')
|
||||
else:
|
||||
secondary_frames[i] = Image.open(f'cache/radarimages/{radarKeys[i + 1]}.png')
|
||||
|
||||
datetimeString = datetime.strftime(currentDatetime, fmt)
|
||||
|
||||
firstFrame.save(f'testradar_{datetimeString}.gif', append_images=secondary_frames, duration=200)
|
||||
firstFrame.save(f'testradar_{datetimeString}.webp', append_images=secondary_frames, duration=200)
|
||||
|
||||
Reference in New Issue
Block a user