this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Fix GeoTessera overlay alignment by reprojecting tiles from UTM to WGS84

The GeoTessera embedding tiles have pixel grids in UTM projection, but the
notebook was overlaying them as if they were on a regular lat/lng grid. This
caused ~3-6% east-west distortion at mid-latitudes (e.g. ~440m at 52N).

- Add pure-OCaml UTM projection module (utm.ml) with WGS84 ellipsoid
forward/inverse transforms
- Add reproject_tile function that resamples each tile from its native UTM
grid onto a regular WGS84 grid using nearest-neighbor interpolation
- Mosaic now reprojects all tiles before assembly, matching the Python
reference implementation (ucam-eo/tessera-interactive-map) which uses
rasterio.warp.reproject for the same purpose
- Return computed WGS84 bounds from fetch_mosaic_sync instead of requiring
callers to hardcode snap ± 0.05
- Fix jtw relativize_or_fallback for dune exec paths (dynamic_cmis.json
generation was silently skipped for locally-built packages)
- Consolidate deploy-site.sh as thin wrapper around build-site.sh

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

+7 -12
+7 -12
bin/jtw.ml
··· 360 360 List.iter 361 361 (fun (dir, dcs) -> 362 362 let findlib_dir = Ocamlfind.findlib_dir () |> Fpath.v in 363 - let d = Fpath.relativize ~root:findlib_dir dir in 364 - match d with 365 - | None -> 366 - Format.eprintf "Failed to relativize %a wrt %a\n%!" Fpath.pp dir 367 - Fpath.pp findlib_dir 368 - | Some dir -> 369 - Format.eprintf "Generating %a\n%!" Fpath.pp dir; 370 - let dir = Fpath.(output_dir / "lib" // dir) in 371 - let _ = Bos.OS.Dir.create dir in 372 - let oc = open_out Fpath.(dir / "dynamic_cmis.json" |> to_string) in 373 - Printf.fprintf oc "%s" dcs; 374 - close_out oc) 363 + let d = relativize_or_fallback ~findlib_dir dir in 364 + Format.eprintf "Generating %a\n%!" Fpath.pp d; 365 + let dir = Fpath.(output_dir / "lib" // d) in 366 + let _ = Bos.OS.Dir.create dir in 367 + let oc = open_out Fpath.(dir / "dynamic_cmis.json" |> to_string) in 368 + Printf.fprintf oc "%s" dcs; 369 + close_out oc) 375 370 init_cmis; 376 371 Format.eprintf "Number of cmis: %d\n%!" (List.length init_cmis); 377 372