I look after a project digitizing and providing access to vintage photos in our city. Something we've always struggled with is determining from where a photo was taken. We have data on building locations dimensions and are looking at creating a tool to determine this automatically based on tagged buildings in an image. I'm confident we will be able to find a line in 3D space on which the camera must have been. However, I don't know if it's possible to determine a point on that line.
Is this even possible?
Update: I should have mentioned this, but the end goal is to have this be an almost entirely automated process. If it takes building corner or edge level tagging or comparing things in Google Earth then we will not have the human resources to do this.
Update To be clear, I'm not asking for a programming solution. I needed to know if it was possible, even manually, before I tried to develop a programming solution. It sounds like it is.
(PS- in case it helps anyone, the method I think will work to find that line of possible camera positions is to use the centrelines of three known buildings in the photo, load their coordinates from my database, and find (either by solving equations or just iteratively) which bearing causes the ratio of the middle's horizontal span to that of the span of the leftmost's and rightmost's to match that same ratio in the photo, once that is known, the same thing can be done with the vertical span in the photo to find an azimuth.)
(PPS- The very first image I tried this on proved me wrong. Three buildings on a straight street. They are basically all in a line, spaced out by perhaps a kilometer, total). Perspective caused separation ratios in the image that can't be duplicated by rotating the 3D model about the vertical axis. It still might (probably is) possible to solve this, but it won't be as simple as I had hoped.)