Geolocating Sydney’s weirdest property

Using Open Street Map and R to geolocate an image

R
OSM
Author

Dean Marchiori

Published

September 17, 2023

A defiant Aussie family has refused to sell their farm-land property despite the entire neighborhood being converted into a new housing estate.

Is this real? Where is it? Could I geolocate it using just OSINT1 techniques?… Yeah of course.

I have a loose theory that no matter who or where you are, there is probably sufficient data for a sufficiently motivated person to find you.

The Challenge

I saw this pop up on Twitter2 and other tabloid sites a while ago and thought it would be fun to try and geolocate it from the Twitter post alone.

The main clue we get is:

About 40 minutes from Sydney’s central core, the property offers panoramic views of the Blue Mountains.

(Actually the tweet and some articles do mention the suburb, but let’s ignore that so we don’t spoil the fun)

The Method

  1. If the property is 40 minutes from Sydney and has views of the Blue Mountains, its likely to be somewhere West of the city.

  1. We can use the {osrm} package in R to construct drive time isochrones. This leverages the Open Source Routing Machine, based on Open Street Map data to calculate polygons that represent a given drive time from a set of coordinates. If we set this as 35-45 min drive time from the center of Sydney, we should get a ‘ring’ around Sydney containing the property location.
  1. By looking at the final frame we can see some distinguishing features in the image:
  1. There is a roundabout nearby
  2. There is a ‘Secondary Road’ (not a primary or trunk road, but more significant than roads found in villages etc)
  3. There are several ‘dead-end’ roads. Defined as cul-de-sacs that are not turning-circle roundabouts, but have no other exit point.

We can now construct a query to the OpenStreetMap Overpass API which stores features about the metadata of the street network. Let’s look for roundabouts on secondary roads within 500m of a no-exit road.

[out:json];

(  
way[junction=roundabout][highway=secondary]
   ({{bbox}});
  ) -> .roundabout;

(
node[noexit=yes]
 ({{bbox}});
) -> .culdesac;

(
 way.roundabout(around.culdesac:500);
);

out body;
>;
out skel qt;
  1. The above query was run over all of Sydney, and exported as a geojson file, which I then intersected with our drive-time ring above.

  1. This creates a shortlist of 101 candidate roundabouts. We now need to manually inspect each one to match it to the tweet. As these are unsorted, the average search time to find our roundabout of interest will be \(n/2\) which means I have have to manually check 50 images on average. To streamline this, I wrote a function to loop through all the candidate roundabouts, and automatically export a satellite image at roughly the level of zoom that would help me identify the right frame.

Found it!

And found it. Don’t think I need to share the exact address, not that it’s a secret or anything.

Footnotes

  1. Open Source Intelligence↩︎

  2. https://x.com/historyinmemes/status/1671673688683413504?s=20↩︎