
Geolocating an island with geometry and CUDA programming
An OSINT exercise solved without Google Lens: 882 MB of coastline data, a chain of geometric filters and 80 million landmass triplets checked on a GPU led to the Oan resort in Micronesia.
A developer writing on the blog yassa9 published a write-up on 16 August 2026 describing how they solved an open-source intelligence (OSINT) exercise — Exercise #004 by Sofia Santos, known as Gralhix. The task asked for the name of the resort in a photo, the island's coordinates and the direction the camera faced. The author solved it with mathematics and programming instead of Google Lens.
Metadata and a geometric fingerprint
Exiftool confirmed the image was a 736×515 WebP file with no GPS data and no camera model, so the author extracted the geometry of the three landmasses visible in the photo: P0, the resort islet itself; P1, the island on the right; and P2, the front-left island with a mountain peak. A small click-based tool (01_triangle_gui.py) recorded the pixel coordinates and computed the triangle's side ratios and angles. Because clicking centres by eye is imprecise, the search allowed a ±20% tolerance band around those values.
A chain of filters
The search space was OpenStreetMap's global coastline vector set land-polygons-split-4326, an 882 MB dataset. A first filter kept only the tropical latitude band between −30° and 30°, leaving 141,131 land polygons. A local density filter then dropped any islet with more than ten neighbours within 5 km, reducing the set to 51,576. Points without at least two neighbours within 20 km were discarded, leaving 23,500 clusters, and generating every triplet inside those clusters produced 80,690,777 candidate triangles.
Matching on the GPU
Each triplet was assigned to one CUDA thread. A thread sorted its three points by land area to identify P0, used the sign of a 2D cross product to assign P1 and P2, and then checked the angle at P0, the distance ratio and the size windows. Running on an NVIDIA GeForce RTX 3050 (sm_86) with 5,169 MB of video memory, the kernel completed in 204.1 ms; 158,784 triplets passed, collapsing to 8,915 unique ones after de-duplication.
Further stages tightened the candidate list: an "open rectangle" test for unobstructed water left 948 candidates, a coral-cay compactness score (Polsby-Popper) left 213, an oval-shape check left 137, and a vegetation check using the NDVI index from Sentinel-2 imagery via Element84's public Earth Search API left 66. A final elevation check used Copernicus DEM GLO-30 tiles, requiring P0 to sit below 50 m and the highest terrain along the camera's ±50° viewing arc, 2 to 20 km out, to fall between 100 m and 500 m — leaving 26 candidates.
The answer
The eighth entry in the final table, attributed to the Federated States of Micronesia, matched the photo. The resort is Oan; the island's coordinates are 7°21′48.4″ N, 151°45′20.7″ E (7.363444, 151.755750); and the camera faced north-west, at roughly 324.97°. All code and the final report are published on GitHub.
SiTech — AI-powered web development
We build fast, modern websites and bring AI into real business workflows. Have a project or a question? We'd love to help.