# Citywide photographic wall layer

The municipal photo layer is streamed separately from gameplay. Current municipal coverage is nineteen matched wall sections across eight buildings: Yad LaBanim, HaBanim 4, and three shared-address buildings on Moshe Dayan (14–16, 18–20, 22–24), not citywide photography. The original Commons landmark surfaces remain a separate layer. No additional buildings are claimed as photographed without a reviewed match.

The game queries a 200-metre spatial grid around the player, loads matched walls within 450 metres, shares a texture across wall patches, limits residency to 12 photograph textures and limits concurrent downloads to three. It disposes GPU materials, geometry and textures when the player leaves. Walking, driving, bus journeys and teleporting use the same position-based system. Missing photographs leave the reconstructed geometry playable.

The Photo coverage menu lists photographed places and supports navigation, quick travel and toggling the municipal layer. Cyan map lines show the matched wall segments, not whole-building or citywide coverage.

## Expanding coverage

1. Locate the building in the municipal viewer using its mapped coordinates. Confirm the roof, neighbouring streets and footprint across several views.
2. Keep the original photograph with its provider, URL, capture date and rights information. Public viewing does not itself establish an open-data licence. Pinkas photography is distinct from Ofek and Commons photographs.
3. Create a batch matching `public/data/photo-overlay.json`. Coordinates use the game's east/south metre projection and origin. Record wall endpoints, bottom/top height, outward offset, and photo corners in bottom-left, bottom-right, top-right, top-left order (normalized image coordinates, y down).
4. Match separate planes for setbacks and terraces. Do not stretch a full stepped building across one flat wall. Record uncertainty and retained tree/shadow occlusions. Only reviewed matches use `review: manually-matched`.
5. Run `node scripts/import-photo-walls.mjs batch.json` to validate without writing, then add `--write` to merge the reviewed batch. Run `node scripts/verify-photo-catalogue.mjs`, build and inspect the actual game before deployment.

The importer checks source metadata, image availability, convex photo corners, building IDs, coordinate origin, duplicate IDs and whether the proposed wall is near its building. These checks cannot establish that a photograph depicts the right wall; visual review remains necessary.

## What would enable automatic citywide projection

Calibrated camera poses, lens intrinsics and a georeferenced depth model/mesh would allow visibility-aware projection and blending at scale. The public viewer accessed so far has not supplied a verified reusable package containing those inputs. Applying oblique aerial photographs blindly would paint roofs, trees and neighbouring buildings onto walls. The current catalogue allows reviewed batches to expand without changes to renderer code.

HaBanim 4 adds six north-facing floor planes with estimated setbacks and heights. Building identity was checked against its mapped coordinates in the municipal overhead and four-direction viewer. This is a photographic approximation: railings, recesses and shadows remain in the textures; side and rear walls are reconstructed.

## Moshe Dayan 20 area

The municipal viewer labels 18 and 20 on a shared roof. OSM way 391087062 lists only 18; both address records are shown in the game with their separate provenance. Neighboring footprints 391087175 and 391087084 match municipal labels 14–16 and 22–24. The source photo is `fwd_01706_files/14/2_2.jpg`, captured 18 May 2021. Roof profiles and ridge heights are estimates. Roof tiles are procedural, and ground-floor foliage/awnings remain in the wall photographs. The east photographs show the rear gardens, not the entrance fronts. The correction adds west-facing entrance walls along Bilu using original back_01717 tiles 3_1, 4_1, 3_2 and 4_2 at level 14. These tiles are assembled at runtime to avoid seams across a wall. Quick travel now approaches from the west. The previously added generic garden hedge/canopy geometry was removed; north/south side walls and roof setbacks still need closer reconstruction.

The approach is OSM service way 359713819, a roughly 62 m dead-end lane off Bilu (shared node 3643763185). Its existing estimated width is 4 m. The in-game access label is descriptive, not an official OSM street name. The municipal photos show a paved shared lane; the generic two-metre sidewalks on each side are suppressed here. The main Moshe Dayan road is east of the gardens, not the entrance approach.

## Neighborhood expansion and coverage

`npm run photos:plan` regenerates a distance-sorted survey queue for the 180 m Moshe Dayan/Bilu and HaBanim/Yad LaBanim neighborhoods. Production builds regenerate this automatically. Each candidate retains its original footprint identity and a municipal viewer location using the game's WGS84 inverse projection. Candidates remain unmatched until actual wall photographs are visually reviewed and imported.

The Photo coverage menu shows neighborhood totals and the nearest twelve unmatched buildings, with visits and source references. Edge coverage unions overlapping photo segments, so multiple floor photographs do not multiply progress. It measures horizontal exterior footprint edges only: it does not assert full wall height, surveyed dimensions, current appearance or complete reconstruction. Municipal and Commons coverage remain separate.

Batch imports now merge building metadata rather than dropping previously modeled volumes, and carry checked texture atlases and service-lane evidence alongside wall matches. Atlas tiles need distinct grid positions, existing local originals and source URLs. A new neighborhood needs data records, not custom renderer code.

## Bilu opposite-row batch

Three additional eastern, lane-facing walls use the same original fwd_01706 photo: OSM 391086952 (south), 391087059 (middle), 391087013 (north). Their identity is matched by footprint and position across the access lane from Moshe Dayan 14–24. House numbers are unverified and are not assigned. Their other walls remain reconstructed; simplified roof heights are estimated. This adds actual coverage without an additional image download.
