private List <ExtractedFishingTrack> CombineExtractedTracks(List <ExtractedFishingTrack> efts) { var list = new List <ExtractedFishingTrack>(); if (efts != null) { foreach (var item in efts) { list.Add(item); if (TrackExtractedFromSourceCreated != null) { ExtractTrackEventArgs e = new ExtractTrackEventArgs { Context = "Extracted track", ExtractedFishingTrack = item, Counter = ++_counter }; TrackExtractedFromSourceCreated(this, e); } } return(list); } return(null); }
private async Task <List <ExtractedFishingTrack> > ExtractTracksFromSources( bool save = false, bool makeShapefile = false, bool excludeExtracted = false, bool refreashReadTrack = false, bool logTracksOutsidePh = false ) { _counter = 0; var list = new List <ExtractedFishingTrack>(); var allCTXFiles = await Entities.CTXFileViewModel.GetAllAsync(false, excludeExtracted, refreashReadTrack); foreach (CTXFile cf in allCTXFiles) { var list1 = CombineExtractedTracks(CreateFromSource(ctx: cf, save: save)); if (list1 != null && list1.Count > 0) { list.AddRange(list1); } if (logTracksOutsidePh) { LogTracksOutsidePH(cf); } //list.AddRange(CombineExtractedTracks(CreateFromSource(ctx: cf, save: save))); } foreach (DeviceGPX gpx in Entities.DeviceGPXViewModel.GetAllDeviceWaypointGPX()) { if (gpx.GPXType == "track") { bool proceed = true; if (excludeExtracted && gpx.TrackIsExtracted) { proceed = false; } if (proceed) { var list2 = CombineExtractedTracks(CreateFromSource(gpx: gpx, save: save)); if (list2 != null && list2.Count > 0) { list.AddRange(list2); } } } } if (save) { int saveCount = 0; foreach (var item in list) { if (!item.FromDatabase) { item.ID = NextRecordNumber; if (AddRecordToRepo(item)) { saveCount++; if (TrackExtractedFromSourceCreated != null) { ExtractTrackEventArgs e = new ExtractTrackEventArgs { Context = "Saved track", Counter = saveCount }; TrackExtractedFromSourceCreated(this, e); } } } } } if (makeShapefile) { ExtractedFishingTracksSF = new Shapefile(); if (ExtractedFishingTracksSF.CreateNewWithShapeID("", ShpfileType.SHP_POLYLINE)) { ExtractedFishingTracksSF.GeoProjection = globalMapping.GeoProjection; ExtractedFishingTracksSF.Key = "extracted_tracks"; ExtractedFishingTracksSF.EditAddField("ID", FieldType.INTEGER_FIELD, 1, 1); ExtractedFishingTracksSF.EditAddField("DeviceName", FieldType.STRING_FIELD, 1, 1); ExtractedFishingTracksSF.EditAddField("DateAdded", FieldType.DATE_FIELD, 1, 1); ExtractedFishingTracksSF.EditAddField("SourceType", FieldType.STRING_FIELD, 1, 1); ExtractedFishingTracksSF.EditAddField("SourceID", FieldType.INTEGER_FIELD, 1, 1); ExtractedFishingTracksSF.EditAddField("Gear", FieldType.STRING_FIELD, 1, 1); ExtractedFishingTracksSF.EditAddField("LandingSite", FieldType.STRING_FIELD, 1, 1); ExtractedFishingTracksSF.EditAddField("Start", FieldType.DATE_FIELD, 1, 1); ExtractedFishingTracksSF.EditAddField("End", FieldType.DATE_FIELD, 1, 1); ExtractedFishingTracksSF.EditAddField("LenOriginal", FieldType.DOUBLE_FIELD, 10, 12); ExtractedFishingTracksSF.EditAddField("LenSimplified", FieldType.DOUBLE_FIELD, 10, 12); ExtractedFishingTracksSF.EditAddField("TrckPtsOriginal", FieldType.INTEGER_FIELD, 1, 1); ExtractedFishingTracksSF.EditAddField("TrckPtsSimplified", FieldType.INTEGER_FIELD, 1, 1); ExtractedFishingTracksSF.EditAddField("AvgSpeed", FieldType.DOUBLE_FIELD, 10, 12); ExtractedFishingTracksSF.EditAddField("Combined", FieldType.BOOLEAN_FIELD, 1, 1); foreach (var item in list) { var idx = ExtractedFishingTracksSF.EditAddShape(item.SegmentSimplified); if (idx >= 0) { ExtractedFishingTracksSF.EditCellValue(ExtractedFishingTracksSF.FieldIndexByName["ID"], idx, item.ID); ExtractedFishingTracksSF.EditCellValue(ExtractedFishingTracksSF.FieldIndexByName["DateAdded"], idx, item.DateAdded); if (item.TrackSourceType == ExtractedTrackSourceType.TrackSourceTypeCTX) { ExtractedFishingTracksSF.EditCellValue(ExtractedFishingTracksSF.FieldIndexByName["SourceType"], idx, "CTX"); } else { ExtractedFishingTracksSF.EditCellValue(ExtractedFishingTracksSF.FieldIndexByName["SourceType"], idx, "GPX"); } ExtractedFishingTracksSF.EditCellValue(ExtractedFishingTracksSF.FieldIndexByName["SourceID"], idx, item.TrackSourceID); ExtractedFishingTracksSF.EditCellValue(ExtractedFishingTracksSF.FieldIndexByName["Gear"], idx, item.Gear); ExtractedFishingTracksSF.EditCellValue(ExtractedFishingTracksSF.FieldIndexByName["LandingSite"], idx, item.LandingSite); ExtractedFishingTracksSF.EditCellValue(ExtractedFishingTracksSF.FieldIndexByName["Start"], idx, item.Start); ExtractedFishingTracksSF.EditCellValue(ExtractedFishingTracksSF.FieldIndexByName["End"], idx, item.End); ExtractedFishingTracksSF.EditCellValue(ExtractedFishingTracksSF.FieldIndexByName["LenOriginal"], idx, item.LengthOriginal); ExtractedFishingTracksSF.EditCellValue(ExtractedFishingTracksSF.FieldIndexByName["LenSimplified"], idx, item.LengthSimplified); ExtractedFishingTracksSF.EditCellValue(ExtractedFishingTracksSF.FieldIndexByName["TrckPtsOriginal"], idx, item.TrackPointCountOriginal); ExtractedFishingTracksSF.EditCellValue(ExtractedFishingTracksSF.FieldIndexByName["TrckPtsSimplified"], idx, item.TrackPointCountSimplified); ExtractedFishingTracksSF.EditCellValue(ExtractedFishingTracksSF.FieldIndexByName["AvgSpeed"], idx, item.AverageSpeed); ExtractedFishingTracksSF.EditCellValue(ExtractedFishingTracksSF.FieldIndexByName["Combined"], idx, item.CombinedTrack); } } } } AllExtractedFishingTracks = list; return(list); }