First, find the distinct list of locations present in the individuals...no need to consider which individual is present at that location, simply whether a location has at least one individual.
Second, find the other locations -- those locations without any individual -- and export them to a separate list.
Third, perform the above join of locations to individuals...so that every individual has a location with X, Y coordinates.
Finally, append the vacant locations -- those without any individuals -- to the list from step three.
The result is a list of Every individual, their location, X,Y coordinates, and those locations without any individuals. (Truly all records from both Dbs.)
In a spatially-enabled Db, the query-code would look nominally like:
SELECT nvl(P.name,'VACANT') as name, L.location, L.location.X, L.location.Y
FROM People P
FULL OUTER JOIN Location L
WHERE P.location = L.location;