Project a photo onto a surface (This question is coming from geospatial background and not a 3D modeling background, so I may have some terms mixed up)

I am using the BlenderGIS add-in ( https://github.com/domlysz/BlenderGIS ) to easily add geospatial data to Blender. Primarily I am using it to combine elevation and aerial photos to create scenes similar to what you see in Google Earth.  The aerial imagery is "draped" onto the surface. Basically a pixel of the 2D imagery is shown on the 3D point of the 3D surface, from a straight down perspective. This results in photorealistic view of the terrain at "airplane window" scales. The technique works great except for areas with extreme topography such as sheer cliffs. With cliffs, the result is unnatural streaks.

To counter this I would like to figure out how to "drape" a surface photo onto the side of the surface, and then blend it with with the top-down aerial photo. I'm fine with breaking up a photo into reasonable parts to get it done. I just need to know how to designate the area that each photo part should be "draped" to the surface.

Illustration:

This is the result of draping the aerial photo onto the elevation surface, note the streaking. 


This is the a surface photo from nearby the above scene. How can I drape this photo on the Blender surface so that the sheer cliff is shown more realistically without the streaks?
I would approach it like this:

Find out what camera sensor size and lens where used to create the picture.

Create a camera in blender that matches those characteristics.

Add an image as background, and set it to Front with an opacity of 50% (so that the image is always present over the model)

Then activate Lock Camera to view, move the camera until you find the spot where the photo was taken from using the background image as a guide. 

Once you find the location and rotation where the photo was taken from, use the UV project modifier on the landscape object and set the camera as projector for the texture.

Note that this is not an easy task in any way.