How this platform works
BayonShield Maps is built and operated entirely on our own infrastructure, in service of one idea: explore places before you arrive. No third-party map APIs, no imagery leaving our servers, and privacy handled before anything is published. It stands on the shoulders of exceptional open-source software — credited at the bottom of this page.
Running on Bayon Atlas v0.25.4
Bayon Atlas is the 360° mapping and virtual tour platform built by Bayon Shield Co., Ltd. This site is our own deployment of it, serving Cambodia — the same software is available to license for operators mapping anywhere else.
Nothing leaves our hands
Every panorama on this site was captured in the field by our team, processed on our own servers, and is served from our own servers. The base map is generated from open data and hosted as a single static archive, so loading a page here never calls Google, Mapbox, or any external mapping service.
That independence is not ideological. It means your imagery is not sitting in a platform that can change its terms, raise its prices, or decide your listing no longer fits its plans. What we shoot for you stays under our control and yours.
Privacy is handled before publication, not after
People walk through the places we photograph. Before anything is published, faces and vehicle number plates are obscured in a way that cannot be reversed — the blurred pixels replace the originals in the published image, rather than being layered over them.
Automated detection does the first pass. A person then reviews the result: drawing over anything the software missed, and clearing anything it flagged wrongly — the carved faces on temple reliefs, for instance, which detectors reliably mistake for people. Both directions matter. Software alone over-blurs cultural sites and under-blurs anyone looking away from the camera.
Original unedited captures never appear on the public site in any form. They stay in private, access-controlled storage, and every thumbnail, preview and full-resolution view a visitor can reach is generated from the anonymised version.
What we can build with it
Place pages
A business, temple, hotel or public space with its own page — 360° scenes, opening hours, contact details, and a map showing exactly where it sits.
Virtual walkthroughs
Connected scenes you move through the way you would walk the space. A development can hold several separate walkthroughs — the grounds, a studio, a two-bedroom — each with its own page and its own link to send someone, all under one entry on the map.
Route coverage
Streets and trails captured at intervals and geotagged from GPS, so a whole road or riverside can be explored end to end.
Shareable links
Every place and scene has a short link that unfurls with a proper preview image on messaging apps and social platforms.
Search and browse
Find places by name, category or province, or open a random scene if you would rather be surprised. Everything is linkable — a filtered view has its own address you can send to someone.
Watermarked imagery
Where an agency holds exclusive rights to show a property, its name can be carried across that property's panoramas — placed so it reads as flat text from inside the scene rather than bending with the projection.
Built to last
Imagery is backed up off-site and encrypted before it leaves the server, so the backup provider never holds anything readable. The published versions are reproducible from the originals, which means the archive can be rebuilt rather than merely restored.
Backups are tested rather than assumed. A drill restores the database into a throwaway copy and checks a sample of original panoramas byte-for-byte against the checksums recorded when they were first ingested — because a backup nobody has read back is a hypothesis, not a safety net.
The map itself is a dated snapshot of OpenStreetMap. A stale one renders perfectly and is simply wrong, so its age is tracked and refreshed deliberately rather than left to drift.
The same principle runs through the admin generally: the checks report what is outstanding, and they distinguish a measurement from an estimate rather than presenting both as fact. A number that cannot say which kind it is has no business next to a decision.
What we are working on
This is a live platform and it is still growing. Currently planned:
- Client accounts, so organisations can manage their own places directly — staged listings, blur approval, share links and metrics for their own places only. The failure mode is one client seeing another's unpublished imagery, so it will not be rushed.
- Junction and loop walkthroughs. Routes are built automatically from a GPS track, which covers a road or a trail end to end; forks and intersections still need linking by hand.
- View counts, so a business can see how often its place is actually being explored.
- Two-factor authentication on the admin, which is currently restricted at the network layer instead.
Recently finished: several walkthroughs per place, level horizons corrected from the camera's own sensors, light and dark modes, smoother panning on phones, and optional watermarking.
The software behind this site
This site runs on Bayon Atlas, a 360° mapping and virtual tour platform built by Bayon Shield Co., Ltd. Everything described on this page — the capture pipeline, the anonymisation, the self-hosted map, the walkthroughs — is the platform itself, not something assembled for one website.
Bayon Atlas is approaching beta and will be available to license for organisations wanting to run their own 360° coverage on their own infrastructure. Licensing and API access are still ahead of us, so there is nothing to sign up for yet — but if it sounds useful, we would like to hear from you.
The map
OpenStreetMap
The base map is built from OpenStreetMap, the collaborative world map made by millions of contributors. Data © OpenStreetMap contributors, under the Open Database License (ODbL).
Protomaps + PMTiles
Vector tiles packed into one self-hosted PMTiles archive — a format that lets browsers fetch just the bytes they need over HTTP range requests. No tile server to run, no per-request billing. An installation keeps whichever part of the world it needs, from one province to the whole planet, and the disk cost of each is shown before it is downloaded.
MapLibre GL JS
The open-source WebGL renderer drawing every map here — vector cartography with no proprietary SDK and no API key.
PostGIS
Scenes, places and GPS tracks live in PostgreSQL with the PostGIS extension. Bounding-box lookups, nearest-neighbour searches and route geometry are all handled in the database.
From camera card to panorama
Our 360° cameras write dual-fisheye frames — two circular images side by side, not yet a panorama. Those files normally have to go through the manufacturer's phone app or desktop software to become anything usable.
We skip that entirely. Cards go straight into the uploader and the
stitch happens on our servers using FFmpeg's v360
filter, projecting dual-fisheye to equirectangular in a single
pass. No phone round-trip, no vendor SDK, no cloud processing
service, and nothing to license. GPS coordinates, capture times
and orientation data are carried across with ExifTool, and the
result is stamped with the standard photo-sphere XMP metadata so
it is a valid panorama to anything that reads it.
The original camera file is kept untouched. Because the conversion is deterministic, a better stitching approach later can simply be re-run against the same originals.
A capture run is not one panorama, so a whole card's worth of files can be selected at once and each becomes its own scene, kept in capture order. If a file carries no GPS fix, the scene takes its Place's position so that it still appears on the map — recorded as approximate, never mistaken for a survey.
The point directly below the camera — where the tripod and the photographer's feet are — can carry a logo, chosen per place or per scene. It is applied to the published imagery, not to the originals, so it can be changed or removed later without touching the capture itself. It is branding and nothing more: anything that genuinely needs to be hidden is blurred, permanently, before publication.
The anonymisation pipeline
Detection and redaction are deliberately separate steps. A panorama is first projected into two dozen overlapping perspective views — running a detector directly on an equirectangular image works poorly, because faces near the top and bottom of the frame are severely distorted. YOLO-family models run across those views, and the resulting boxes are mapped back onto the sphere as polygons.
Those polygons are then an editable list rather than a finished result. An operator adds regions the detector missed and dismisses the ones it got wrong; dismissals are remembered, so re-running detection never resurrects a decision someone already made. Only once that list is settled is it burned into the pixels, with pixelation followed by a Gaussian pass under a feathered mask.
Because the published image is a deterministic function of the original plus that region list, it can always be regenerated — which is what makes it safe to change output resolutions or rebuild derivatives later without touching the source material.
The imagery stack
Photo Sphere Viewer
The 360° viewer and its virtual-tour navigation, built on Three.js. Panoramas are served at a resolution chosen to match common WebGL texture limits.
FFmpeg
Dual-fisheye to equirectangular stitching via the v360 filter, and dimension verification with ffprobe before anything downstream trusts the output.
ExifTool & libvips
ExifTool reads and writes camera metadata — GPS, capture time, orientation, photo-sphere XMP. libvips generates derivatives quickly and with a small memory footprint.
OpenCV · PyTorch · YOLO
Gnomonic projection, detection and seam-aware mask rasterisation for the privacy pipeline, running on CPU — no GPU required.
The platform
A Laravel application on Debian and nginx does the heavy lifting — ingestion, processing queues, publishing controls and the APIs feeding the maps — with PostgreSQL and PostGIS as the single source of truth and Valkey running background jobs. Original captures sit outside every web-server route and are reachable only through an authenticated allow-list, so there is no URL that serves an unedited file.
If you appear in one of our images
We photograph public and semi-public spaces, and despite the care described above, no automated system catches everything. If you find yourself, your vehicle, or something you would rather not see published in one of our panoramas, tell us and we will obscure it or remove the scene.
Email hello@bayonshield.com with the link to the scene — the share button on any panorama gives you one — and roughly where in the image to look. You do not need to explain why. The same applies to business owners who would prefer their premises not appear.
Attribution
Base map data © OpenStreetMap contributors (ODbL) · tiles via Protomaps · rendered with MapLibre. All 360° photography © 2026 Bayon Shield Co., Ltd. Platform: Bayon Atlas v0.25.4. Our thanks to every open-source maintainer whose work makes this possible.