public void AxisAlignedBoundingBox()
        {
            var p  = DotSpatialGeometry.FromWkb("LINESTRING(-1 1, -5 2, -3 4)", 32633);
            var bb = p.Envelope;

            Assert.AreEqual("Env[-5 : -1, 1 : 4", bb.ToString());
        }
Exemplo n.º 2
0
        public override void Execute(NinServiceContext context)
        {
            Values = SqlServer.GetAreaLayerValues(AreaType, Number);

            var layer = Config.Settings.Map.FindLayer(MapLayerName);
            var store = new Cache <VectorQuadTile>(new DiskTileStore(layer));
            var tiler = new VectorTiler(store, layer);

            var        areas       = SqlServer.GetAreas(AreaType, 0, Number);
            ZoomFactor zf          = layer.GetZoomFactors(AreaType);
            string     allAffected = "";

            foreach (var area in areas)
            {
                for (int zoom = zf.Minimum; zoom <= zf.Maximum; zoom++)
                {
                    var      distanceTolerance = layer.SimplificationToleranceAtZoom0 * Math.Pow(0.25, zoom);
                    var      fullRes           = DotSpatialGeometry.From(area.Geometry);
                    Geometry simpler           = VectorTiler.Simplify(fullRes, distanceTolerance);
                    if (simpler.IsEmpty)
                    {
                        continue;
                    }
                    var område = Map.Tiles.Geometri.Område.Fra(area);
                    Log.v("TILE", $"Area type {område.Type} #{område.Number}: {fullRes.Coordinates.Count} => {simpler.Coordinates.Count} (zoom {zoom})");
                    var affected = tiler.Update(område, simpler, zoom);
                    if (allAffected.Length > 0)
                    {
                        allAffected += ",";
                    }
                    allAffected += affected;
                }
            }
            Affected = allAffected;
        }
Exemplo n.º 3
0
        public VectorQuadTile Load(string key)
        {
            var qt = new VectorQuadTile(TileCoordinates.FromRelativePath(key), layer);

            var fullPath = GetFullPath(key);

            if (!File.Exists(fullPath))
            {
                return(qt);
            }

            string json = File.ReadAllText(fullPath);
            var    featureCollection = JsonConvert.DeserializeObject <FeatureCollection>(json, GetJsonSerializerSettings());

            foreach (Feature feature in featureCollection.Features)
            {
                var geometry = DotSpatialGeometry.FromGeoJson(feature.Geometry);
                var areaType = (AreaType)Enum.Parse(typeof(AreaType), feature.Properties["type"].ToString());
                var areaId   = int.Parse(feature.Id, CultureInfo.InvariantCulture);
                var område   = new Område(areaId, areaType)
                {
                    Category = ReadProp(feature, "category"),
                    Name     = ReadProp(feature, "name"),
                    Number   = int.Parse(feature.Properties["number"].ToString(), CultureInfo.InvariantCulture),
                    Value    = ReadProp(feature, "value"),
                    kind     = ReadProp(feature, "kind")
                };

                qt.Områder.Add(new OmrådeMedGeometry(område, geometry));
            }
            return(qt);
            //var serializer = new DataContractJsonSerializer(typeof(VectorQuadTile), CreateDataContractJsonSerializerSettings());
            //using (Stream s = File.OpenRead(fullPath))
            //    return (VectorQuadTile)serializer.ReadObject(s);
        }
Exemplo n.º 4
0
        public void ConvertPointTest()
        {
            var point = SqlGeometry.STGeomFromText(new SqlChars("POINT(150.555 -10.666)"), 25832);
            var geom  = DotSpatialGeometry.GetGeometry(point);

            Assert.True(geom.GeometryType == "Point");
            Assert.False(geom.IsEmpty);
        }
Exemplo n.º 5
0
        public void ConvertEmptyGeometryCollectionTest()
        {
            var geometrycollection = SqlGeometry.STGeomFromText(new SqlChars("GEOMETRYCOLLECTION EMPTY"), 25832);
            var geom = DotSpatialGeometry.GetGeometry(geometrycollection);

            Assert.True(geom.GeometryType == "GeometryCollection");
            Assert.True(geom.IsEmpty);
        }
Exemplo n.º 6
0
        private string Tile(string geom)
        {
            Område o         = new Område(-1, AreaType.Fylke);
            var    rectangle = DotSpatialGeometry.FromWkb(geom, 32633);

            tiler.Update(o, rectangle, 0);
            return(store.ToString());
        }
Exemplo n.º 7
0
        private string GetTileRange(string geom, int zoomLevel)
        {
            var       rectangle = DotSpatialGeometry.FromWkb(geom, 32633);
            TileRange r         = tiler.GetTileRange(zoomLevel, (Envelope)rectangle.Envelope);

            return(r.ToString());
            //return JsonConvert.SerializeObject(tids).Replace("\"", "'");
        }
Exemplo n.º 8
0
        public void ConvertEmptyMultiLineStringTest()
        {
            var multilinestring = SqlGeometry.STGeomFromText(new SqlChars("MULTILINESTRING EMPTY"), 25832);
            var geom            = DotSpatialGeometry.GetGeometry(multilinestring);

            Assert.True(geom.GeometryType == "MultiLineString");
            Assert.True(geom.IsEmpty);
        }
Exemplo n.º 9
0
        public void ConvertEmptyPolygonTest()
        {
            var polygon = SqlGeometry.STGeomFromText(new SqlChars("POLYGON EMPTY"), 25832);
            var geom    = DotSpatialGeometry.GetGeometry(polygon);

            Assert.True(geom.GeometryType == "Polygon");
            Assert.True(geom.IsEmpty);
        }
Exemplo n.º 10
0
        public void ConvertLineStringTest()
        {
            var linestring = SqlGeometry.STGeomFromText(new SqlChars("LINESTRING(30 10, 31 11, 32 12)"), 25832);
            var geom       = DotSpatialGeometry.GetGeometry(linestring);

            Assert.True(geom.GeometryType == "LineString");
            Assert.False(geom.IsEmpty);
        }
Exemplo n.º 11
0
        public void ConvertEmptyMultiPointTest()
        {
            var multipoint = SqlGeometry.STGeomFromText(new SqlChars("MULTIPOINT EMPTY"), 25832);
            var geom       = DotSpatialGeometry.GetGeometry(multipoint);

            Assert.True(geom.GeometryType == "MultiPoint");
            Assert.True(geom.IsEmpty);
        }
Exemplo n.º 12
0
        public void ConvertGeometryCollectionTest()
        {
            var geometrycollection =
                SqlGeometry.STGeomFromText(new SqlChars("GEOMETRYCOLLECTION(POINT(4 6), LINESTRING(4 6, 7 10))"), 25832);
            var geom = DotSpatialGeometry.GetGeometry(geometrycollection);

            Assert.True(geom.GeometryType == "GeometryCollection");
            Assert.False(geom.IsEmpty);
        }
Exemplo n.º 13
0
        public void ConvertMultiPointTest()
        {
            var multipoint = SqlGeometry.STGeomFromText(new SqlChars("MULTIPOINT((10 40), (40 30), (20 20), (30 10))"),
                                                        25832);
            var geom = DotSpatialGeometry.GetGeometry(multipoint);

            Assert.True(geom.GeometryType == "MultiPoint");
            Assert.False(geom.IsEmpty);
        }
Exemplo n.º 14
0
        public void ConvertMultiLineStringTest()
        {
            var multilinestring =
                SqlGeometry.STGeomFromText(
                    new SqlChars("MULTILINESTRING((10 10, 20 20, 10 40), (40 40, 30 30, 40 20, 30 10))"), 25832);
            var geom = DotSpatialGeometry.GetGeometry(multilinestring);

            Assert.True(geom.GeometryType == "MultiLineString");
            Assert.False(geom.IsEmpty);
        }
Exemplo n.º 15
0
        public void ConvertPolygonTest()
        {
            var polygon =
                SqlGeometry.STGeomFromText(
                    new SqlChars("POLYGON((20 35, 10 30, 10 10, 30 5, 45 20, 20 35),(30 20, 20 15, 20 25, 30 20))"),
                    25832);
            var geom = DotSpatialGeometry.GetGeometry(polygon);

            Assert.True(geom.GeometryType == "Polygon");
            Assert.False(geom.IsEmpty);
        }
Exemplo n.º 16
0
        public void ConvertMultiPolygonTest()
        {
            var multipolygon =
                SqlGeometry.STGeomFromText(
                    new SqlChars(
                        "MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)),((20 35, 10 30, 10 10, 30 5, 45 20, 20 35),(30 20, 20 15, 20 25, 30 20)))"),
                    25832);
            var geom = DotSpatialGeometry.GetGeometry(multipolygon);

            Assert.True(geom.GeometryType == "MultiPolygon");
            Assert.False(geom.IsEmpty);
        }
Exemplo n.º 17
0
        private static void TileNorway()
        {
            var layer = new TiledVectorLayer("test2", WebMercator.BoundingBox1, 39135.75848201024 * 4);
            var store = new DiskTileStore(layer);

            store.Wipe();
            var tiler    = new VectorTiler(store, layer);
            var filename = FileLocator.FindFileInTree(@"data\norway.geojson");
            FeatureCollection        norway       = JsonConvert.DeserializeObject <FeatureCollection>(File.ReadAllText(filename));
            List <OmrådeMedGeometry> partOfNorway = new List <OmrådeMedGeometry>();

            foreach (var feature in norway.Features)
            {
                partOfNorway.Add(new OmrådeMedGeometry(new Område(3581, AreaType.Land), DotSpatialGeometry.From(feature)));
            }
            foreach (var omg in partOfNorway)
            {
                omg.Område.Number = -5;
            }
            for (int zoom = 0; zoom < 6; zoom++)
            {
                foreach (OmrådeMedGeometry polygon in partOfNorway)
                {
                    tiler.Update(polygon.Område, polygon.Geometry, zoom);
                }
            }
        }
Exemplo n.º 18
0
        public void TileNorway()
        {
            var filename = FileLocator.FindFileInTree(@"data\norway.geojson");
            FeatureCollection        norway       = JsonConvert.DeserializeObject <FeatureCollection>(File.ReadAllText(filename));
            List <OmrådeMedGeometry> partOfNorway = new List <OmrådeMedGeometry>();

            foreach (var feature in norway.Features)
            {
                partOfNorway.Add(new OmrådeMedGeometry(new Område(3581, AreaType.Land), DotSpatialGeometry.From(feature)));
            }
            foreach (var omg in partOfNorway)
            {
                omg.Område.Number = -5;
            }
            for (int zoom = 0; zoom < 6; zoom++)
            {
                foreach (OmrådeMedGeometry polygon in partOfNorway)
                {
                    tiler.Update(polygon.Område, polygon.Geometry, zoom);
                }
            }
        }