Beispiel #1
0
 /// <summary>
 /// Standard workflow...
 /// </summary>
 /// <param name="OverpassQuery">An Overpass query.</param>
 /// <param name="FilenamePrefix">A file name prefix.</param>
 public static void RunAll(this OverpassQuery OverpassQuery,
                           String FilenamePrefix)
 {
     OverpassQuery.
     ToFile(FilenamePrefix + ".json").
     ToGeoJSONFile(FilenamePrefix + ".geojson").
     ContinueWith(task => Console.WriteLine(FilenamePrefix + ".* files are ready!")).
     Wait();
 }
Beispiel #2
0
    private OSMTile(int x, int y, int zoomLevel)
    {
        this.zoomLevel = zoomLevel;

        this.x = x;
        this.y = y;

        this.longitude = OSMTileProvider.Tile2Longitude(x, zoomLevel);
        this.latitude  = OSMTileProvider.Tile2Latitude(y, zoomLevel);

        this.image     = OSMTileProvider.DownloadTileTexture(x, y, zoomLevel);
        this.mapBounds = OSMTileProvider.Tile2MapBounds(x, y, zoomLevel);

        query             = new OverpassQuery();
        query.BoundingBox = OSMTileProvider.Tile2OSMBoundingBox(x, y, zoomLevel);
    }
Beispiel #3
0
        public int GetOsmDataCount(BoundingBox bbox, IOsmDataSettings filter)
        {
            try
            {
                using (TimeSpanBlock timeSpanBlock = new TimeSpanBlock("GetOsmDataAsGeoJson", _logger, LogLevel.Debug))
                {
                    OverpassQuery query = new OverpassQuery(bbox, _logger);
                    if (filter != null)
                    {
                        if (filter.WaysFilter != null)
                        {
                            foreach (var tagFilter in filter.WaysFilter)
                            {
                                query.WithWays(tagFilter);
                            }
                        }
                        if (filter.RelationsFilter != null)
                        {
                            foreach (var tagFilter in filter.RelationsFilter)
                            {
                                query.WithRelations(tagFilter);
                            }
                        }
                        if (filter.NodesFilter != null)
                        {
                            foreach (var tagFilter in filter.NodesFilter)
                            {
                                query.WithNodes(tagFilter);
                            }
                        }
                    }

                    var task = query.AsCount()
                               .RunQueryAsync()
                               .ToCountAsync();

                    OverpassCountResult count = task.GetAwaiter().GetResult();

                    return(count.Tags.Nodes * 2);
                }
            }
            catch (Exception ex)
            {
                _logger.LogError($"{nameof(GetOsmDataAsGeoJson)} error: {ex.Message}");
                throw;
            }
        }
Beispiel #4
0
        public IEnumerable <IFeature> GetOsmDataAsGeoJson(BoundingBox bbox, IOsmDataSettings filter)
        {
            try
            {
                using (TimeSpanBlock timeSpanBlock = new TimeSpanBlock(nameof(GetOsmDataAsGeoJson), _logger, LogLevel.Debug))
                {
                    OverpassQuery query = new OverpassQuery(bbox, _logger);
                    if (filter != null)
                    {
                        if (filter.WaysFilter != null)
                        {
                            foreach (var tagFilter in filter.WaysFilter)
                            {
                                query.WithWays(tagFilter);
                            }
                        }
                        if (filter.RelationsFilter != null)
                        {
                            foreach (var tagFilter in filter.RelationsFilter)
                            {
                                query.WithRelations(tagFilter);
                            }
                        }
                        if (filter.NodesFilter != null)
                        {
                            foreach (var tagFilter in filter.NodesFilter)
                            {
                                query.WithNodes(tagFilter);
                            }
                        }
                    }

                    var task = query.ToGeoJSONAsync();

                    FeatureCollection ways = task.GetAwaiter().GetResult();

                    _logger.LogInformation($"{ways?.Count} features downloaded");

                    return(ways);
                }
            }
            catch (Exception ex)
            {
                _logger.LogError($"{nameof(GetOsmDataAsGeoJson)} error: {ex.Message}");
                throw;
            }
        }
Beispiel #5
0
 public void StartQuery()
 {
     if (this.msg != null)
     {
         this.msg.Start(Job.StartOSMQuery);
     }
     Query = new OverpassQuery();
     this.Query.BoundingBox = new OSMBoundingBox
                              (
         TileManager.OriginLongitude - TileManager.TileWidth / 2d + TileManager.TileWidth * TileIndex[0],
         TileManager.OriginLatitude - TileManager.TileWidth / 2d + TileManager.TileWidth * TileIndex[1],
         TileManager.OriginLongitude + TileManager.TileWidth / 2d + TileManager.TileWidth * TileIndex[0],
         TileManager.OriginLatitude + TileManager.TileWidth / 2d + TileManager.TileWidth * TileIndex[1]
                              );
     this.Query.QueryDone += QueryDone;
     this.Query.DownloadOSMString();
 }
Beispiel #6
0
        public static void GetDepartements()
        {
            int msDelay = 2000;

            Directory.CreateDirectory("output");

            #region French "départements"
            Dictionary <string, string> v_frenchDepartements = new Dictionary <string, string>();
            v_frenchDepartements.Add("01", "Ain");
            v_frenchDepartements.Add("02", "Aisne");
            v_frenchDepartements.Add("03", "Allier");
            v_frenchDepartements.Add("04", "Alpes de Haute-Provence");
            v_frenchDepartements.Add("05", "Hautes-Alpes");
            v_frenchDepartements.Add("06", "Alpes-Maritimes");
            v_frenchDepartements.Add("07", "Ardèche");
            v_frenchDepartements.Add("08", "Ardennes");
            v_frenchDepartements.Add("09", "Ariège");
            v_frenchDepartements.Add("10", "Aube");
            v_frenchDepartements.Add("11", "Aude");
            v_frenchDepartements.Add("12", "Aveyron");
            v_frenchDepartements.Add("13", "Bouches du Rhône");
            v_frenchDepartements.Add("14", "Calvados");
            v_frenchDepartements.Add("15", "Cantal");
            v_frenchDepartements.Add("16", "Charente");
            v_frenchDepartements.Add("17", "Charente Maritime");
            v_frenchDepartements.Add("18", "Cher");
            v_frenchDepartements.Add("19", "Corrèze");
            v_frenchDepartements.Add("21", "Côte d'Or");
            v_frenchDepartements.Add("22", "Côtes d'Armor");
            v_frenchDepartements.Add("23", "Creuse");
            v_frenchDepartements.Add("24", "Dordogne");
            v_frenchDepartements.Add("25", "Doubs");
            v_frenchDepartements.Add("26", "Drôme");
            v_frenchDepartements.Add("27", "Eure");
            v_frenchDepartements.Add("28", "Eure-et-Loir");
            v_frenchDepartements.Add("29", "Finistère");
            v_frenchDepartements.Add("30", "Gard");
            v_frenchDepartements.Add("31", "Haute-Garonne");
            v_frenchDepartements.Add("32", "Gers");
            v_frenchDepartements.Add("33", "Gironde");
            v_frenchDepartements.Add("34", "Hérault");
            v_frenchDepartements.Add("35", "Ille-et-Vilaine");
            v_frenchDepartements.Add("36", "Indre");
            v_frenchDepartements.Add("37", "Indre-et-Loire");
            v_frenchDepartements.Add("38", "Isère");
            v_frenchDepartements.Add("39", "Jura");
            v_frenchDepartements.Add("40", "Landes");
            v_frenchDepartements.Add("41", "Loir-et-Cher");
            v_frenchDepartements.Add("42", "Loire");
            v_frenchDepartements.Add("43", "Haute-Loire");
            v_frenchDepartements.Add("44", "Loire-Atlantique");
            v_frenchDepartements.Add("45", "Loiret");
            v_frenchDepartements.Add("46", "Lot");
            v_frenchDepartements.Add("47", "Lot-et-Garonne");
            v_frenchDepartements.Add("48", "Lozère");
            v_frenchDepartements.Add("49", "Maine-et-Loire");
            v_frenchDepartements.Add("50", "Manche");
            v_frenchDepartements.Add("51", "Marne");
            v_frenchDepartements.Add("52", "Haute-Marne");
            v_frenchDepartements.Add("53", "Mayenne");
            v_frenchDepartements.Add("54", "Meurthe-et-Moselle");
            v_frenchDepartements.Add("55", "Meuse");
            v_frenchDepartements.Add("56", "Morbihan");
            v_frenchDepartements.Add("57", "Moselle");
            v_frenchDepartements.Add("58", "Nièvre");
            v_frenchDepartements.Add("59", "Nord");
            v_frenchDepartements.Add("60", "Oise");
            v_frenchDepartements.Add("61", "Orne");
            v_frenchDepartements.Add("62", "Pas-de-Calais");
            v_frenchDepartements.Add("63", "Puy-de-Dôme");
            v_frenchDepartements.Add("64", "Pyrénées-Atlantiques");
            v_frenchDepartements.Add("65", "Hautes-Pyrénées");
            v_frenchDepartements.Add("66", "Pyrénées-Orientales");
            v_frenchDepartements.Add("67", "Bas-Rhin");
            v_frenchDepartements.Add("68", "Haut-Rhin");
            v_frenchDepartements.Add("69", "Rhône");
            v_frenchDepartements.Add("70", "Haute-Saône");
            v_frenchDepartements.Add("71", "Saône-et-Loire");
            v_frenchDepartements.Add("72", "Sarthe");
            v_frenchDepartements.Add("73", "Savoie");
            v_frenchDepartements.Add("74", "Haute-Savoie");
            v_frenchDepartements.Add("75", "Paris");
            v_frenchDepartements.Add("76", "Seine-Maritime");
            v_frenchDepartements.Add("77", "Seine-et-Marne");
            v_frenchDepartements.Add("78", "Yvelines");
            v_frenchDepartements.Add("79", "Deux-Sèvres");
            v_frenchDepartements.Add("80", "Somme");
            v_frenchDepartements.Add("81", "Tarn");
            v_frenchDepartements.Add("82", "Tarn-et-Garonne");
            v_frenchDepartements.Add("83", "Var");
            v_frenchDepartements.Add("84", "Vaucluse");
            v_frenchDepartements.Add("85", "Vendée");
            v_frenchDepartements.Add("86", "Vienne");
            v_frenchDepartements.Add("87", "Haute-Vienne");
            v_frenchDepartements.Add("88", "Vosges");
            v_frenchDepartements.Add("89", "Yonne");
            v_frenchDepartements.Add("90", "Territoire-de-Belfort");
            v_frenchDepartements.Add("91", "Essonne");
            v_frenchDepartements.Add("92", "Hauts-de-Seine");
            v_frenchDepartements.Add("93", "Seine-St-Denis");
            v_frenchDepartements.Add("94", "Val-de-Marne");
            v_frenchDepartements.Add("95", "Val-d'Oise");
            v_frenchDepartements.Add("2A", "Corse du Sud");
            v_frenchDepartements.Add("2B", "Haute-Corse");
            #endregion


            foreach (var dep in v_frenchDepartements)
            {
                var areaId = new OverpassQuery(dep.Value).AreaId;

                string dirname = string.Concat("output/", dep.Key);

                Directory.CreateDirectory(dirname);

                new OverpassQuery(areaId)
                .SelectFilter(".relations")
                .WithNodesHavingRelation("admin_centre")
                .ToGeoJSONFile(dirname + "/admin_centre.geojson")
                .RunNow();

                Delay(msDelay);


                //new OverpassQuery(areaId)
                //	 .WithNodes("natural", "peak")
                //		.ToGeoJSONFile(dirname + "/peak.geojson")
                //		.RunNow();

                //Delay(msDelay);

                //new OverpassQuery(areaId)
                //	 .WithNodes("natural", "saddle")
                //		.ToGeoJSONFile(dirname + "/saddle.geojson")
                //		.RunNow();

                //Delay(msDelay);

                //new OverpassQuery(areaId)
                // .WithWays("waterway", "river")
                //	.WithWays("natural", "water")
                //	.ToGeoJSONFile(dirname + "/rivers.geojson")
                //	.RunNow();

                //Delay(msDelay);

                //new OverpassQuery(areaId)
                //	.WithRelations("landuse", "reservoir")
                //	.WithRelations("natural", "water")
                //	.ToGeoJSONFile(dirname + "/lakes.geojson")
                //	.RunNow();

                //Delay(msDelay);

                Console.WriteLine($"{dep.Key} {dep.Value} done");
            }


            BoundingBox bboxLauzannier = new BoundingBox(44.34815879690078, 6.780796051025391, 44.45878010882453, 6.961898803710937);
            // new OverpassQuery(bboxLauzannier).WithNodes("natural", "peak")
            //	.RunAll("output/natural.peak");

            //new OverpassQuery(bboxLauzannier).WithNodes("natural", "saddle")
            //   .RunAll("output/natural.saddle");

            //new OverpassQuery(bboxLauzannier).WithWays("waterway", "river")
            //   .RunAll("output/waterway.river");

            //new OverpassQuery(bboxLauzannier).WithWays("natural", "water")
            //   .RunAll("output/natural.water");

            //new OverpassQuery(bboxLauzannier).WithRelations("landuse", "reservoir")
            //   .RunAll("output/landuse.reservoir");

            new OverpassQuery(bboxLauzannier)
            .WithNodes("natural", "peak")
            .WithNodes("natural", "saddle")
            .WithWays("waterway", "river")
            .WithWays("natural", "water")
            .WithRelations("landuse", "reservoir")
            .WithRelations("natural", "water")
            .ToGeoJSONFile("output/fullBbox.geojson")
            .RunNow();



            // -----------------------------------------------------------------

            Console.WriteLine("ready...");
            Console.ReadLine();
        }