ISEPOS-2373 Add coordinates to SVG overlay files #10

Merged
mieszkomakuch merged 10 commits from ISEPOS-2373-add-coordinates-for-svg-overlay into master 2025-06-05 14:26:36 +02:00
Showing only changes of commit 9c58664770 - Show all commits

View File

@ -70,6 +70,8 @@ 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')
@ -495,37 +497,17 @@ verbose: {verbose}")
# Save the figure # Save the figure
fig.canvas.draw() fig.canvas.draw()
svg_path = f"overlay_{j}.svg" overlay_filename = f"overlay_{j}.svg"
plt.savefig(svg_path, bbox_inches="tight", pad_inches=0, transparent=True) plt.savefig(overlay_filename, bbox_inches="tight", pad_inches=0, transparent=True)
plt.close(fig) plt.close(fig)
# Embed geographic bounding box into the SVG
import xml.etree.ElementTree as ET # <-- TODO place this with other imports map_bounds = dict(zip(("south", "west", "north", "east"),
import json map(float, (lat.min(), lon.min(), lat.max(), lon.max()))))
tree = ET.parse(overlay_filename)
# ----------------------------------------- tree.getroot().set("data-map-bounds", json.dumps(map_bounds))
# Inject bounding box (BBOX) metadata into the SVG tree.write(overlay_filename, encoding="utf-8", xml_declaration=True)
# ----------------------------------------- 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()
# (Optional) Also store the bounding box as a data attribute for quick access
root.set("data-map-bounds", 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'