Skip to content

feat: EXIF auto-detection, azimuth constraint filter, and loupe magnifier#2

Open
nickFalcone wants to merge 11 commits into
bytemallet:mainfrom
nickFalcone:feat/exif-azimuth-loupe
Open

feat: EXIF auto-detection, azimuth constraint filter, and loupe magnifier#2
nickFalcone wants to merge 11 commits into
bytemallet:mainfrom
nickFalcone:feat/exif-azimuth-loupe

Conversation

@nickFalcone
Copy link
Copy Markdown

Summary

  • EXIF extraction: Automatically reads timestamp and compass bearing from photo
    metadata on upload. Prefers GPS timestamp (UTC), falls back to camera timestamp +
    UTC offset, with a manual offset picker for photos without timezone data.

  • Azimuth constraint: Combines the EXIF compass bearing with the shadow pixel
    direction to compute the sun's azimuth. Applied as a toggleable post-analysis filter
    in the Analysis Panel — no re-computation required. Narrows the shadow band from a
    global ring to a candidate region (±10° tolerance). Disabled automatically for
    magnetic bearings. Works in both single and dual-photo intersection modes.

  • Loupe magnifier: CSS-only 3× magnifier follows the cursor during point marking,
    with cyan crosshairs for sub-pixel precision. Hides once all 3 points are placed.

Test plan

  • Upload a photo with GPS EXIF — date/time fields should pre-fill, green GPS badge shown
  • Upload a photo with UTC offset EXIF — date/time pre-filled, blue badge shown
  • Upload a photo with compass bearing — azimuth section appears, toggle enabled after marking all
    3 points
  • Upload a photo with magnetic bearing (compassRef = M) — toggle shown but disabled with
    explanation
  • Upload a photo with no compass bearing — toggle shown but disabled with "No compass bearing"
    note
  • Hover over image while marking points — loupe magnifier appears; disappears after 3rd point
  • Run analysis with azimuth constraint on — 🧭 badge appears on map
  • Toggle azimuth off — map reverts to full band without re-analyzing
  • Replace image — azimuth constraint clears and toggle resets
1 3 2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant