public Dictionary<string, PictureInformation> doworkGPSOFFSET(string logFile, string dirWithImages, float offset)
{
// Lets start over
Dictionary<string, PictureInformation> picturesInformationTemp = new Dictionary<string, PictureInformation>();
//logFile = @"C:\Users\hog\Pictures\farm 1-10-2011\100SSCAM\2011-10-01 11-48 1.log";
TXT_outputlog.AppendText("Reading log for GPS-ATT Messages\n");
// Read Vehicle Locations from log. GPS Messages. Will have to do it anyway
if (vehicleLocations == null || vehicleLocations.Count <= 0)
vehicleLocations = readGPSMsgInLog(logFile);
if (vehicleLocations == null)
{
TXT_outputlog.AppendText("Log file problem. Aborting....\n");
return null;
}
//dirWithImages = @"C:\Users\hog\Pictures\farm 1-10-2011\100SSCAM";
TXT_outputlog.AppendText("Read images\n");
List<string> filelist = new List<string>();
string[] exts = PHOTO_FILES_FILTER.Split(';');
foreach (var ext in exts)
{
filelist.AddRange(Directory.GetFiles(dirWithImages, ext));
}
string[] files = filelist.ToArray();
TXT_outputlog.AppendText("Images read : " + files.Length + "\n");
// Check that we have at least one picture
if (files.Length <= 0)
{
TXT_outputlog.AppendText("Not enought files found. Aborting..... \n");
return null;
}
Array.Sort(files, Comparer.DefaultInvariant);
// Each file corresponds to one CAM message
// We assume that picture names are in ascending order in time
for (int i = 0; i < files.Length; i++)
{
string filename = files[i];
PictureInformation p = new PictureInformation();
// Fill shot time in Picture
p.ShotTimeReportedByCamera = getPhotoTime(filename);
// Lookfor corresponding Location in vehicleLocationList
DateTime correctedTime = p.ShotTimeReportedByCamera.AddSeconds(-offset);
VehicleLocation shotLocation = LookForLocation(correctedTime, vehicleLocations);
if (shotLocation == null)
{
TXT_outputlog.AppendText("Photo " + Path.GetFileNameWithoutExtension(filename) + " NOT PROCESSED. No GPS match in the log file. Please take care\n");
}
else
{
p.Lat = shotLocation.Lat;
p.Lon = shotLocation.Lon;
p.AltAMSL = shotLocation.AltAMSL;
p.RelAlt = shotLocation.RelAlt;
p.Pitch = shotLocation.Pitch;
p.Roll = shotLocation.Roll;
p.Yaw = shotLocation.Yaw;
p.Time = shotLocation.Time;
p.Path = filename;
picturesInformationTemp.Add(filename, p);
TXT_outputlog.AppendText("Photo " + Path.GetFileNameWithoutExtension(filename) + " PROCESSED with GPS position found " + (shotLocation.Time - correctedTime).Milliseconds + " ms away\n");
}
}
return picturesInformationTemp;
}