Exemple #1
0
        static void Main()
        {
            var console = new ConsoleOutput();
            console.Start();

            var tzShapeReader = new TimeZoneShapeFileReader(@".\Data\tz_world.shp");

            TimeZoneDataBuilder.CreateGeohashData(console, tzShapeReader, @"..\..\..\GeoTimeZone\");

            console.Stop();
        }
Exemple #2
0
        static void Main()
        {
            var console = new ConsoleOutput();

            console.Start();

            var tzShapeReader = new TimeZoneShapeFileReader(@".\Data\tz_world.shp");

            TimeZoneDataBuilder.CreateGeohashData(console, tzShapeReader, @"..\..\..\GeoTimeZone\");

            console.Stop();
        }
        public static void CreateGeohashData(ConsoleOutput console, TimeZoneShapeFileReader inputShapefile, string outputPath)
        {
            var features = inputShapefile.ReadShapeFile().AsParallel()
                .Select(x =>
                {
                    x.Geometry = x.Geometry.Simplify();
                    return x;
                })
                .ToList();

            PreLoadTimeZones(features);

            console.WriteMessage("Polygons loaded and simplified");

            var geohashes = features.AsParallel()
                .Select(x => new
                {
                    TimeZone = x,
                    Geohashes = GeohashTree.GetGeohashes(x.Geometry)
                })
                .ToList();

            console.WriteMessage("Geohashes generated for polygons");

            foreach (var hash in geohashes)
                foreach (var g in hash.Geohashes)
                    AddResult(g, hash.TimeZone);

            console.WriteMessage("Geohash tree built");

            WorldBoundsTreeNode.PrepareForOutput();

            console.WriteMessage("Geohash tree preparing for output");

            WriteGeohashDataFile(outputPath);
            console.WriteMessage("Data file written");

            WriteLookup(outputPath);
            console.WriteMessage("Lookup file written");
        }