Nine Kilometres Off: Geolocating an Airstrike Photo in Mogok Township

A news photo captioned 'western Mogok' sent me searching the wrong town for an hour. The phrase is administrative, not geographic — and the fix came from a Google Maps review.

Content note: this challenge concerns the aftermath of an airstrike on a civilian street. The source photograph shows destroyed buildings and a crater. No casualties are visible in the image discussed here.

The task

eng.mizzima.com/2025/08/05/25097

Given a news article URL, determine where its lead photograph was taken, and indicate the location on a map.

That’s the entire brief. No coordinates hinted, no landmark named, and — because this is Myanmar — no Street View coverage anywhere in the country.

The answer, up front: 22.90376 N, 96.42224 E — the Mandalay–Mogok Road in Kyatpyin, a settlement 9 km west-southwest of Mogok town that local usage calls “western Mogok”. That phrase cost me an hour, and why it did is the useful part of this writeup.

Step 1 — The article is not the subject

The linked piece turned out to be a statement from a parliamentarians’ human-rights body, republished by Mizzima. The text is a political appeal. The photograph at the top is illustrative, attached by the editor, and credited simply to local sources.

That distinction matters. When a photo is decorative rather than reportorial, the caption is the only thing tying it to a place, and captions on syndicated statements are exactly where mismatches creep in. So the caption became the first thing to verify rather than the thing to trust.

It read: an airstrike in western Mogok on 2 August, at least 13 civilians killed including monks.

Step 2 — Pin the event before pinning the place

Mogok is a ruby-mining town in Mandalay Region, under TNLA control since July 2024, and it was struck from the air repeatedly through August 2025. Search results collapse those events into each other constantly, so the first real task was separating them:

  • 2 August, morning, western side — two bombs, 13 civilians killed, 14 injured
  • 9 August, evening — a monastery in a village east of town, 5 killed
  • 14 August, night, eastern side — 10 or more killed

Burmese-language local outlets carried the detail that English coverage did not. A witness account placed the impact on a textile shop next to a liquor shop named ရွှေမောင်း, at around 08:25–08:30 during heavy rain. Damage was given as roughly ten houses, three cars and three motorbikes. Among the dead: a monk on his alms round, and a father and son on the same motorbike. A passing car was hit.

That last cluster of details is what confirmed the photo belonged to 2 August rather than to the monastery strikes. My image shows a street with a crater in the roadway and shopfronts on either side — not a monastery compound. The white, structureless sky matches a monsoon morning, and matches the reported rain.

Source-grading note: two discrepancies I never resolved, and neither affects the geolocation. Ordnance was given as 250 lb by two outlets and 500 lb by a third. Timing was given as roughly 08:25–08:30 by the local witness account and as about 08:15 by the AFP wire piece. Log these as open rather than silently picking whichever version reads better — a writeup that quietly harmonises its sources is hiding the thing a reader most needs to see.

Step 3 — The trap

Here’s where I lost about an hour.

“မိုးကုတ်မြို့အနောက်ပိုင်း” translates cleanly as “the western part of Mogok town”. So I built a search corridor along the western arterial road of Mogok town, pulled the road network and every mapped building out of OpenStreetMap, and started filtering for adjacent pairs of shophouse-sized structures fronting the main road.

I got 2,988 mapped buildings, 262 of them fronting the primary road at a plausible size, and 278 adjacent pairs. Which is another way of saying the filter described half the street and discriminated nothing.

The problem wasn’t the method. The problem was that I had translated the phrase correctly and understood it wrongly.

Kyatpyin (ကျပ်ပြင်) is a separate settlement about 9 km west-southwest of Mogok town. It’s the second major ruby-mining centre in the area, and in 1999 it was placed under Mogok’s municipal administration. Locals and local press therefore refer to it as western Mogok. It’s an administrative statement, not a geographic one.

The confirmation came from an unglamorous place: a Google Maps review of the market there, in which a user describes it as the biggest market in “mogok (west)”. A one-line review by a random shopper resolved a translation ambiguity that an hour of gazetteer work had not.

Lesson: when a place reference in a source is a compound of a town name plus a directional word, check whether it names a district or a dependent settlement. In countries where municipal boundaries absorb outlying villages, those two readings can be ten kilometres apart.

Step 4 — What the photo gives you

Before hunting tiles, inventory the frame:

  • Two adjacent two-storey buildings, roofs blown off, rafters exposed, walls standing
  • Left: timber-framed upper storey painted dark red over a masonry ground floor
  • Right: cream plastered masonry, decorative pilasters, balcony, wall-mounted satellite dish
  • A continuous ornamental iron fence spanning both frontages — unusual, and the single most distinctive feature
  • Roll-down shutters at ground level on the right building: commercial, not residential
  • Crater and scorching in the roadway, debris across the carriageway
  • Overhead power lines crossing diagonally; a leaning pole with hanging cables
  • Overcast white sky, no shadows

That last point is the expensive one. No shadows means no sun-azimuth reconstruction, which means the camera bearing has to come from somewhere else. Hold that thought.

The walls standing is the useful part. Footprints, setback, fence line and neighbouring structures are all still readable, which means pre-strike satellite imagery is sufficient. I don’t need a post-event capture; I need to match a constellation, not a scar. That removes the usual conflict-GEOINT bottleneck entirely.

Step 5 — The satellite match, and the mistake in it

A verification organisation had already published a geolocation to village level — Kyat Pyin Ywar Ma — with a note that exact coordinates were available on request. They withhold them deliberately, which is standard practice in conflict documentation so that inhabited buildings don’t become indexed targets. So the village came free; the point didn’t.

Their published graphic included a satellite crop with four reference buildings boxed across two video frames — two on each side of a street, meaning the frames looked at opposite frontages.

I opened Google Earth over Kyatpyin, found the built-up strip along the Mandalay–Mogok Road, and started comparing.

And got nowhere, for a while, because I assumed the published crop was north-up and refused to rotate my overlay. It wasn’t north-up. Once I rotated it, the block fell out immediately.

Two secondary notes from that phase:

  • Historical Imagery coverage over this area is patchy by tile. One strip carried a March 2025 capture; pan slightly and it drops to April 2024. Since I was matching intact buildings rather than damage, the difference was irrelevant — but it cost time before I realised that.
  • The published crop came from the same Google Earth base layer I was looking at. That turns the task from “find something similar” into “find this exact tile”, which is a much easier problem and worth recognising early.

Step 6 — The assumption I did not know I was making

The rotation was only half of why I struggled.

I had walked the road in one direction and seen nothing. What eventually broke it open was the thought: what if the car in the photo is facing the other way?

Somewhere early on I had inferred the camera bearing from a vehicle’s apparent direction of travel, without ever writing that inference down or marking it as a guess. With no shadows to correct me and no useful ridgeline in the haze, nothing in the image ever contradicted it. So I searched the right street, past the right buildings, expecting them on the wrong side.

A vehicle in a still frame doesn’t tell you its direction of travel. It may be parked, turning, reversing, or you may be reading its rear as its front. Derive a camera azimuth from that and you mirror your entire search space without noticing.

The failure mode here isn’t being wrong. It’s that the assumption never felt like an assumption. It felt like an observation.

The answer

22.90376 N, 96.42224 E — Mandalay–Mogok Road (National Highway 31), Kyat Pyin Ywar Ma (ကျပ်ပြင်ရွာမ), Kyatpyin, Mogok Township, Mandalay Region.

Submitted first attempt.

Corroboration against the witness account:

  • The point sits on the through-road, consistent with reports of a busy public area in the morning, a monk on alms round, and a passing car being struck. A back lane would not produce that casualty pattern.
  • Google Places lists a clothing retailer about 180 m south of the point and another roughly 500 m north — the impact was reported on a textile shop, and the point falls inside a strip with that trade.
  • The named liquor shop doesn’t appear in Google Places at all. Small businesses in Myanmar frequently aren’t listed. That’s a gap, not a contradiction, and I’ve logged it as unconfirmed.

On publishing the coordinates: I went back and forth. The organisation that geolocated this withholds them for good reasons. I have included them because the point is a commercial frontage on a highway rather than a private dwelling, the buildings in question were destroyed, and the event is documented at village level in international reporting already. Reasonable people could land the other way, and if you are writing something similar about an inhabited structure, default to withholding.

Takeaways

Administrative geography lies to you in a specific, repeatable way. A phrase can be a perfectly accurate translation and still send you ten kilometres wrong, because municipal boundaries swallow outlying settlements and local speech follows the boundary rather than the map. Whenever a source says “the [direction] part of [town]”, test both readings before committing a search corridor.

Building-footprint filtering doesn’t discriminate in vernacular commercial architecture. Nearly three thousand mapped buildings produced 278 candidate pairs, because a street of shophouses is by definition a row of similar adjacent structures at similar setbacks. Geometry filters work on outliers. Don’t reach for them where the target is typologically ordinary.

Absent shadows, audit your camera bearing explicitly. Overcast sky removes your cheapest orientation check. Write down what your assumed bearing rests on, and if the answer is “a vehicle appears to be driving that way”, mark it as a guess and periodically test the mirror image.

Withheld data is still a lead. A village-level geolocation from a verification organisation gave me the settlement without giving me the point. That was enough to make the remaining work tractable, and doing the last step myself is the part that actually constitutes verification rather than citation.

Local-language reporting carries the details that geolocate. English wire coverage gave a town and a casualty count. Burmese-language outlets gave a time to the minute, a weather condition, a shop type, an adjacent business by name, and an inventory of damaged vehicles. Every one of those became a testable predicate at the corroboration stage.

Sources

  • Mizzima, 5 Aug 2025 — the challenge article; lead photo caption placing the strike in western Mogok on 2 August
  • Mizzima, 3 Aug 2025 — AFP wire copy; TNLA spokeswoman on the strike hitting a busy public area, 08:15 timing, 14 wounded. Free alternatives carrying the same wire: Malay Mail (headline names the monk and the father and son), The Business Standard
  • The Kaladan Post, 2 Aug 2025 — Burmese-language witness account: timing, heavy rain, impact on a textile shop adjacent to the named liquor shop, damage inventory
  • Shwe Phee Myay, 15 Aug 2025 — Ta’ang outlet; recaps the 2, 9 and 14 August strikes in one piece, which is what let me separate them
  • Myanmar Wikipedia, Mogok Township — 1999 incorporation of the Kyatpyin and Kathe village tracts under Mogok municipal administration
  • Myanmar Witness on X, 5 Aug 2025 — village-level geolocation to Kyat Pyin Ywar Ma; exact coordinates withheld by the organisation
  • OpenStreetMap via the Overpass API — road classification and building footprints
  • Google Maps / Places — Kyat Pyin market and its “mogok (west)” review; nearby clothing retailers
  • Google Earth — satellite match against the published crop

Challenge from Diver26 CTF. Public sources only.