Compare commits

..

No commits in common. "9c58664770d8b05cdbf1dc1ee83a57df2c29f8f3" and "cce0cd258dbc1d78bedd00a66f530c7d1ef8e2d7" have entirely different histories.

View File

@ -70,8 +70,6 @@ def main(catalog_file, mc_file, pdf_file, m_file, m_select, mag_label, mc, m_max
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator from matplotlib.ticker import MultipleLocator
from matplotlib.contour import ContourSet from matplotlib.contour import ContourSet
import xml.etree.ElementTree as ET
import json
logger = getDefaultLogger('igfash') logger = getDefaultLogger('igfash')
@ -470,6 +468,16 @@ verbose: {verbose}")
else: else:
iml_grid_prep = iml_grid_raw iml_grid_prep = iml_grid_raw
# TODO Remove. Saving coordinates to
# north, south = lat.max(), lat.min()
# east, west = lon.max(), lon.min()
# bbox_json = {"south": float(south), "west": float(west),
# "north": float(north), "east": float(east)}
# with open("overlay_bounds.json", "w", encoding="utf8") as fh:
# json.dump(bbox_json, fh, indent=2)
#
# logger.info(f"Saved bbox to overlay_bounds.json → {bbox_json}")
for j in range(0, len(products)): for j in range(0, len(products)):
vmin = min(x for x in iml_grid_prep[j] if x is not np.nan) vmin = min(x for x in iml_grid_prep[j] if x is not np.nan)
vmax = max(x for x in iml_grid_prep[j] if x is not np.nan) vmax = max(x for x in iml_grid_prep[j] if x is not np.nan)
@ -497,19 +505,48 @@ verbose: {verbose}")
# Save the figure # Save the figure
fig.canvas.draw() fig.canvas.draw()
overlay_filename = f"overlay_{j}.svg" svg_path = f"overlay_{j}.svg"
plt.savefig(overlay_filename, bbox_inches="tight", pad_inches=0, transparent=True) plt.savefig(svg_path, bbox_inches="tight", pad_inches=0, transparent=True)
plt.close(fig) plt.close(fig)
# Embed geographic bounding box into the SVG
map_bounds = dict(zip(("south", "west", "north", "east"), import xml.etree.ElementTree as ET # <-- TODO place this with other imports
map(float, (lat.min(), lon.min(), lat.max(), lon.max())))) import json
tree = ET.parse(overlay_filename)
tree.getroot().set("data-map-bounds", json.dumps(map_bounds)) # -----------------------------------------
tree.write(overlay_filename, encoding="utf-8", xml_declaration=True) # Inject bounding box (BBOX) metadata into the SVG
logger.info(f"Saved geographic bounds to SVG metadata (data-map-bounds): {overlay_filename}{map_bounds}") # -----------------------------------------
north, south = lat.max(), lat.min()
east, west = lon.max(), lon.min()
bbox_dict = {
"south": float(south),
"west": float(west),
"north": float(north),
"east": float(east)
}
tree = ET.parse(svg_path)
root = tree.getroot()
# Remove any existing <metadata> tags
for old_meta in root.findall("{http://www.w3.org/2000/svg}metadata"):
root.remove(old_meta)
# Add new <metadata> element with the bounding box JSON
meta_elem = ET.SubElement(root, "metadata")
meta_elem.text = json.dumps(bbox_dict)
# (Optional) Also store the bounding box as a data attribute for quick access
root.set("data-bbox", json.dumps(bbox_dict))
tree.write(svg_path, encoding="utf-8", xml_declaration=True)
logger.info(f"Embedded bbox into {svg_path}{bbox_dict}")
# -----------------------------------------
# END Inject bounding box (BBOX) metadata into the SVG
# -----------------------------------------
# Make the color bar # Make the color bar
cmap_name = 'viridis' cmap_name = 'viridis'
width = 50 width = 50
height = 500 height = 500