示例#1
0
        static void Main(string[] args)
        {
            SetUpWorkingFolder();

            int idx = int.Parse(args[0]);

            MinLat = 43; // MinLatStart[idx];
            MaxLat = 48; // Math.Min(89, MinLat + 59);

            _elevations = new decimal[1 + MaxLon - MinLon, 1 + MaxLat - MinLat];

            for (int lat = MaxLat; lat >= MinLat; lat--)
            {
                int evtIdx = _waitEvents.Count;

                ManualResetEvent evt = new ManualResetEvent(false);
                _waitEvents.Add(evt);

                ThreadStartArgs tsa = new ThreadStartArgs();
                tsa.waitEvent = evt;
                tsa.lat       = lat;

                ThreadPool.QueueUserWorkItem(ThreadedRead, tsa);
            }

            if (_waitEvents != null)
            {
                ManualResetEvent.WaitAll(_waitEvents.ToArray());
            }

            StringBuilder sb = new StringBuilder();

            for (int lat = MaxLat; lat >= MinLat; lat--)
            {
                string line = "";
                for (int lon = MinLon; lon <= MaxLon; lon++)
                {
                    int i = (lon - MinLon);
                    int j = (MaxLat - lat);

                    line += string.Format("{0:0000},", _elevations[i, j]);
                }
                sb.AppendLine(line.TrimEnd(','));
            }

            string fileName = string.Format("scElevationMap_{0}", idx);

            File.WriteAllText(Path.Combine(WorkFolder, fileName), sb.ToString());

            Console.WriteLine("Done - press any key to exit.");
            Console.Read();
        }
示例#2
0
        private static void ThreadedRead(object state)
        {
            ThreadStartArgs tsa = state as ThreadStartArgs;

            if (tsa != null)
            {
                using (WebClient wc = new WebClient())
                {
                    for (int lon = MinLon; lon <= MaxLon; lon++)
                    {
                        ReadData(wc, tsa.lat, lon);
                    }
                }
                tsa.waitEvent.Set();
            }
        }