Ejemplo n.º 1
0
 public GraphCore(FlowData data, ReferenceData refData, IHaversine haversine)
 {
     Haversine = haversine;
     fd        = data;
     rd        = refData;
     HydrateGraph();
 }
Ejemplo n.º 2
0
        public GraphHandler(IHaversine haversine)
        {
            DataParser x = new DataParser();

            Data = x.Flow();

            ReferenceParser refParser = new ReferenceParser();

            RefData = refParser.Flow();
            string directoryPath = @"C:\netProjects\AirlineGraph\shortestPaths";
            var    data          = System.IO.Directory.GetFiles(directoryPath);

            MetaParser metaParser = new MetaParser();

            Meta = metaParser.Flow();

            GraphCore = new GraphCore(Data, RefData, haversine);
        }
Ejemplo n.º 3
0
        public FlowData Flow()
        {
            FlowData    tracking       = new FlowData();
            Reader      fileReader     = new Reader();
            ReaderStore csvReaderStore = new ReaderStore();

            var r = fileReader.Read(csvReaderStore.CSV_Reader_FullHead, hardFileName);

            for (var i = 0; i < r.FileValues[r.Headers[0]].Count; i++)
            {
                var airline  = r.FileValues[r.Headers[0]][i];
                var outbound = r.FileValues[r.Headers[1]][i];
                var inbound  = r.FileValues[r.Headers[2]][i];

                if (!tracking.Outbound.ContainsKey(outbound))
                {
                    tracking.Outbound.Add(outbound, 1);
                }
                else
                {
                    tracking.Outbound[outbound]++;
                }

                if (!tracking.Inbound.ContainsKey(inbound))
                {
                    tracking.Inbound.Add(inbound, 1);
                }
                else
                {
                    tracking.Inbound[inbound]++;
                }

                if (!tracking.Edges.ContainsKey($"{outbound}|{inbound}"))
                {
                    tracking.Edges.Add($"{outbound}|{inbound}", 1);
                }
                else
                {
                    tracking.Edges[$"{outbound}|{inbound}"]++;
                }
            }

            foreach (var entry in tracking.Inbound)
            {
                if (!tracking.AllNodes.ContainsKey(entry.Key))
                {
                    tracking.AllNodes.Add(entry.Key, entry.Value);
                }
            }

            foreach (var entry in tracking.Outbound)
            {
                if (!tracking.AllNodes.ContainsKey(entry.Key))
                {
                    tracking.AllNodes.Add(entry.Key, entry.Value);
                }
                else
                {
                    tracking.AllNodes[entry.Key] += entry.Value;
                }
            }

            var src = tracking.Outbound.OrderByDescending(x => x.Value);

            tracking.MaxOut = src.First().Key;
            return(tracking);
        }