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)
|
closest_datetime = _nearestDate(datetimes, datetime_t)
|
||||||
index = datetimes.index(closest_datetime)
|
index = datetimes.index(closest_datetime)
|
||||||
|
|
||||||
radarFrames = [0] * num_frames
|
#radarFrames = [0] * num_frames
|
||||||
|
radarFrames = {}
|
||||||
i = index
|
i = index
|
||||||
printdebug('Pulling all the radar images requested')
|
printdebug('Pulling all the radar images requested')
|
||||||
while i > (index - num_frames) and i >= 0:
|
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
|
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):
|
def get_radar_from_aws(aws_object):
|
||||||
"""
|
"""
|
||||||
@@ -150,7 +158,7 @@ def generate_radar_image(radar_data, tiler, mercator):
|
|||||||
ax.add_image(tiler, 6)
|
ax.add_image(tiler, 6)
|
||||||
printdebug('Plotting!')
|
printdebug('Plotting!')
|
||||||
display.plot_ppi_map('reflectivity', sweep = 0, resolution='10m',
|
display.plot_ppi_map('reflectivity', sweep = 0, resolution='10m',
|
||||||
vmin = 10, vmax = 64,
|
vmin = -8, vmax = 64,
|
||||||
cmap = "ChaseSpectral",
|
cmap = "ChaseSpectral",
|
||||||
min_lat = min_lat, min_lon = min_lon,
|
min_lat = min_lat, min_lon = min_lon,
|
||||||
max_lat = max_lat, max_lon = max_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'
|
fmt = '%Y%m%d_%H%M%S'
|
||||||
currentDatetime = datetime.now(timezone.utc)
|
currentDatetime = datetime.now(timezone.utc)
|
||||||
num_frames = 10
|
num_frames = 20
|
||||||
secondary_frames = [0] * (num_frames - 1)
|
secondary_frames = [0] * (num_frames - 1)
|
||||||
|
|
||||||
radar = get_radar_frames('KVNX', currentDatetime, num_frames=num_frames)
|
radar = get_radar_frames('KVNX', currentDatetime, num_frames=num_frames)
|
||||||
|
print(list(radar.keys()))
|
||||||
|
|
||||||
tiler = OSM(cache=True)
|
tiler = OSM(cache=True)
|
||||||
mercator = tiler.crs
|
mercator = tiler.crs
|
||||||
|
|
||||||
firstFrameFig = generate_radar_image(radar[0], tiler, mercator)
|
radarKeys = list(radar.keys())
|
||||||
firstFrame = convert_fig_to_img(firstFrameFig)
|
|
||||||
|
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
|
i = 0
|
||||||
for i in range(num_frames - 1):
|
for i in range(num_frames - 1):
|
||||||
fig = generate_radar_image(radar[i + 1], tiler, mercator)
|
if not os.path.isfile(f'cache/radarimages/{radarKeys[i + 1]}.png'):
|
||||||
secondary_frames[i] = convert_fig_to_img(fig)
|
fig = generate_radar_image(radar[radarKeys[i + 1]], tiler, mercator)
|
||||||
# filename = aws_object.key.replace('/', '_')
|
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)
|
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