Add() публичный Метод

public Add ( IFeature feature ) : void
feature IFeature
Результат void
Пример #1
0
        public IEnumerable<IFeature> FetchTiles(BoundingBox boundingBox, double resolution)
        {
            var extent = new Extent(boundingBox.Min.X, boundingBox.Min.Y, boundingBox.Max.X, boundingBox.Max.Y);
            var levelId = BruTile.Utilities.GetNearestLevel(_source.Schema.Resolutions, resolution);
            var infos = _source.Schema.GetTileInfos(extent, levelId).ToList();

            ICollection<WaitHandle> waitHandles = new List<WaitHandle>();
                        
            foreach (TileInfo info in infos)    
            {
                if (_bitmaps.Find(info.Index) != null) continue;
                if (_queue.Contains(info.Index)) continue;
                var waitHandle = new AutoResetEvent(false);
                waitHandles.Add(waitHandle);
                _queue.Add(info.Index);
                ThreadPool.QueueUserWorkItem(GetTileOnThread, new object[] { _source, info, _bitmaps, waitHandle });
            }

            WaitHandle.WaitAll(waitHandles.ToArray());
            
            IFeatures features = new Features();
            foreach (TileInfo info in infos)
            {
                byte[] bitmap = _bitmaps.Find(info.Index);
                if (bitmap == null) continue;
                IRaster raster = new Raster(new MemoryStream(bitmap), new BoundingBox(info.Extent.MinX, info.Extent.MinY, info.Extent.MaxX, info.Extent.MaxY));
                IFeature feature = features.New();
                feature.Geometry = raster;
                features.Add(feature);
            }
            return features;
        }
Пример #2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="MemoryProvider"/>
        /// </summary>
        /// <param name="geometry">Geometry to be in this datasource</param>
        public MemoryProvider(Geometry geometry)
        {
            SRID     = -1;
            Features = new Features();
            IFeature feature = Features.New();

            feature.Geometry = geometry;
            Features.Add(feature);
        }
Пример #3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MemoryProvider"/>
 /// </summary>
 /// <param name="features">Features to be included in this datasource</param>
 public MemoryProvider(IEnumerable <IFeature> features)
 {
     CRS      = "";
     Features = new Features();
     foreach (var feature in features)
     {
         Features.Add(feature);
     }
 }
Пример #4
0
 private static Features CreateFeatures(IEnumerable<IGeometry> randomPoints)
 {
     var features = new Features();
     var counter = 0;
     foreach (var point in randomPoints)
     {
         features.Add(new Feature { Geometry = point, ["Label"] = counter++.ToString() });
     }
     return features;
 }
Пример #5
0
        /// <summary>
        /// Initializes a new instance of the <see cref="MemoryProvider"/>
        /// </summary>
        /// <param name="geometry">Geometry to be in this datasource</param>
        public MemoryProvider(Geometry geometry)
        {
            CRS      = "";
            Features = new Features();
            IFeature feature = Features.New();

            feature.Geometry = geometry;
            Features.Add(feature);
            SymbolSize = 64;
        }
Пример #6
0
        /// <summary>
        /// Initializes a new instance of the <see cref="MemoryProvider"/>
        /// </summary>
        /// <param name="features">Features to be included in this datasource</param>
        public MemoryProvider(IEnumerable <IFeature> features)
        {
            CRS = "";
            var localFeatures = new Features();

            foreach (var feature in features)
            {
                localFeatures.Add(feature);
            }
            _features = localFeatures;
        }
Пример #7
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MemoryProvider"/>
 /// </summary>
 /// <param name="geometries">Set of geometries that this datasource should contain</param>
 public MemoryProvider(IEnumerable <IGeometry> geometries)
 {
     CRS      = "";
     Features = new Features();
     foreach (IGeometry geometry in geometries)
     {
         IFeature feature = Features.New();
         feature.Geometry = geometry;
         Features.Add(feature);
     }
 }
Пример #8
0
            public void DeleteFeatureReferenceType()
            {
                // Arrange
                const string keyField = "thekeyfield";
                var features = new Features(keyField);

                var feature1 = new Feature();
                feature1[keyField] = "a";
                features.Add(feature1);

                var feature2 = new Feature();
                feature2[keyField] = "b";
                features.Add(feature2);

                // Act
                var first = features.First(f => f[keyField].Equals("a"));
                features.Delete(first[keyField]);

                // Assert
                Assert.IsFalse(features.Any(f => f[keyField].Equals("a")));
            }
Пример #9
0
 private static MemoryProvider CreateRandomPointsProvider(BoundingBox box)
 {
     var randomPoints = PointLayerSample.GenerateRandomPoints(box, 200);
     var features = new Features();
     var count = 0;
     foreach (var point in randomPoints)
     {
         var feature = new Feature { Geometry = point };
         feature["Label"] = count.ToString(CultureInfo.InvariantCulture);
         features.Add(feature);
         count++;
     }
     return new MemoryProvider(features);
 }
        public System.Collections.Generic.IEnumerable<IFeature> GetFeaturesInView(BoundingBox box, double resolution)
        {
            var features = new Features();

            IRaster raster = null;
            var view = new Viewport { Resolution = resolution, Center = box.GetCentroid(), Width = (box.Width / resolution), Height = (box.Height / resolution) };
            if (TryGetMap(view, ref raster))
            {
                IFeature feature = features.New();
                feature.Styles.Add(new VectorStyle()); // this is not my fault
                feature.Geometry = raster;
                features.Add(feature);
            }
            return features;
        }
Пример #11
0
 private static MemoryProvider CreateRandomPointsProvider(IEnumerable<IGeometry> randomPoints)
 {
     var features = new Features();
     var count = 0;
     foreach (var point in randomPoints)
     {
         var feature = new Feature
         {
             Geometry = point,
             [LabelColumn] = count.ToString(CultureInfo.InvariantCulture)
         };
         features.Add(feature);
         count++;
     }
     return new MemoryProvider(features);
 }
Пример #12
0
        public IEnumerable <IFeature> FetchTiles(BoundingBox boundingBox, double resolution)
        {
            var extent = new Extent(boundingBox.Min.X, boundingBox.Min.Y, boundingBox.Max.X, boundingBox.Max.Y);
            int level  = BruTile.Utilities.GetNearestLevel(source.Schema.Resolutions, resolution);
            var infos  = source.Schema.GetTilesInView(extent, level).ToList();

            ICollection <WaitHandle> waitHandles = new List <WaitHandle>();

            foreach (TileInfo info in infos)
            {
                if (bitmaps.Find(info.Index) != null)
                {
                    continue;
                }
                if (queue.Contains(info.Index))
                {
                    continue;
                }
                var waitHandle = new AutoResetEvent(false);
                waitHandles.Add(waitHandle);
                queue.Add(info.Index);
                ThreadPool.QueueUserWorkItem(GetTileOnThread, new object[] { source.Provider, info, bitmaps, waitHandle });
            }

            foreach (WaitHandle handle in waitHandles)
            {
                handle.WaitOne();
            }

            IFeatures features = new Features();

            foreach (TileInfo info in infos)
            {
                byte[] bitmap = bitmaps.Find(info.Index);
                if (bitmap == null)
                {
                    continue;
                }
                IRaster  raster  = new Raster(new MemoryStream(bitmap), new BoundingBox(info.Extent.MinX, info.Extent.MinY, info.Extent.MaxX, info.Extent.MaxY));
                IFeature feature = features.New();
                feature.Geometry = raster;
                features.Add(feature);
            }
            return(features);
        }
Пример #13
0
        public static IEnumerable<IFeature> DataSetToFeatures(FeatureDataSet dataSet)
        {
            var features = new Features();

            foreach (FeatureDataTable table in dataSet.Tables)
            {
                foreach (FeatureDataRow row in table)
                {
                    IFeature feature = features.New();
                    feature.Geometry = row.Geometry;
                    foreach (DataColumn column in table.Columns)
                        feature[column.ColumnName] = row[column.ColumnName];

                    features.Add(feature);
                }
            }
            return features;
        }
Пример #14
0
        public IEnumerable <IFeature> FetchTiles(BoundingBox boundingBox, double resolution)
        {
            var extent  = new Extent(boundingBox.Min.X, boundingBox.Min.Y, boundingBox.Max.X, boundingBox.Max.Y);
            var levelId = BruTile.Utilities.GetNearestLevel(_source.Schema.Resolutions, resolution);
            var infos   = _source.Schema.GetTileInfos(extent, levelId).ToList();

            ICollection <WaitHandle> waitHandles = new List <WaitHandle>();

            foreach (TileInfo info in infos)
            {
                if (_bitmaps.Find(info.Index) != null)
                {
                    continue;
                }
                if (_queue.Contains(info.Index))
                {
                    continue;
                }
                var waitHandle = new AutoResetEvent(false);
                waitHandles.Add(waitHandle);
                _queue.Add(info.Index);
                Task.Run(() => GetTileOnThread(new object[] { _source, info, _bitmaps, waitHandle }));
            }

            WaitHandle.WaitAll(waitHandles.ToArray());

            IFeatures features = new Features();

            foreach (TileInfo info in infos)
            {
                byte[] bitmap = _bitmaps.Find(info.Index);
                if (bitmap == null)
                {
                    continue;
                }
                IRaster  raster  = new Raster(new MemoryStream(bitmap), new BoundingBox(info.Extent.MinX, info.Extent.MinY, info.Extent.MaxX, info.Extent.MaxY));
                IFeature feature = features.New();
                feature.Geometry = raster;
                features.Add(feature);
            }
            return(features);
        }
Пример #15
0
        public static IEnumerable <IFeature> DataSetToFeatures(FeatureDataSet dataSet)
        {
            var features = new Features();

            foreach (FeatureDataTable table in dataSet.Tables)
            {
                foreach (FeatureDataRow row in table)
                {
                    IFeature feature = features.New();
                    feature.Geometry = row.Geometry;
                    foreach (DataColumn column in table.Columns)
                    {
                        feature[column.ColumnName] = row[column.ColumnName];
                    }

                    features.Add(feature);
                }
            }
            return(features);
        }
Пример #16
0
        private static ILayer CreateMutatingTriangleLayer(BoundingBox envelope)
        {
            var layer = new MemoryLayer();

            var polygon = new Polygon(new LinearRing(GenerateRandomPoints(envelope, 3)));
            var feature = new Feature() { Geometry = polygon };
            var features = new Features();
            features.Add(feature);

            layer.DataSource = new MemoryProvider(features);

            PeriodicTask.Run(() =>
            {
                polygon.ExteriorRing = new LinearRing(GenerateRandomPoints(envelope, 3));
                // Clear cache for change to show
                feature.RenderedGeometry.Clear();
                // Trigger DataChanged notification
                layer.ViewChanged(true, layer.Envelope, 1);
            },
            TimeSpan.FromMilliseconds(1000));

            return layer;
        }
Пример #17
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MemoryProvider"/>
 /// </summary>
 /// <param name="geometries">Set of geometries that this datasource should contain</param>
 public MemoryProvider(IEnumerable<IGeometry> geometries)
 {
     CRS = "";
     Features = new Features();
     foreach (IGeometry geometry in geometries)
     {
         IFeature feature = Features.New();
         feature.Geometry = geometry;
         Features.Add(feature);
     }
 }
Пример #18
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MemoryProvider"/>
 /// </summary>
 /// <param name="geometry">Geometry to be in this datasource</param>
 public MemoryProvider(Geometry geometry)
 {
     CRS = "";
     Features = new Features();
     IFeature feature = Features.New();
     feature.Geometry = geometry;
     Features.Add(feature);
     SymbolSize = 64;
 }
Пример #19
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MemoryProvider"/>
 /// </summary>
 /// <param name="features">Features to be included in this datasource</param>
 public MemoryProvider(IEnumerable<IFeature> features)
 {
     CRS = "";
     Features = new Features();
     foreach (var feature in features) Features.Add(feature);
 }
Пример #20
0
 private MemoryProvider CreateRandomPointsProvider()
 {
     var randomPoints = PointLayerSample.GenerateRandomPoints(MapControl.Map.Envelope, 100);
     var features = new Features();
     var count = 0;
     foreach (var point in randomPoints)
     {
         var feature = new Feature { Geometry = point };
         feature["Label"] = count.ToString(CultureInfo.InvariantCulture);
         features.Add(feature);
         count++;
     }
     return new MemoryProvider(features);
 }
Пример #21
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MemoryProvider"/>
 /// </summary>
 /// <param name="feature">Feature to be in this datasource</param>
 public MemoryProvider(IFeature feature)
 {
     SRID = -1;
     Features = new Features();
     Features.Add(feature);
 }
Пример #22
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MemoryProvider"/>
 /// </summary>
 /// <param name="geometry">Geometry to be in this datasource</param>
 public MemoryProvider(Geometry geometry)
 {
     SRID = -1;
     Features = new Features();
     IFeature feature = Features.New();
     feature.Geometry = geometry;
     Features.Add(feature);
 }
Пример #23
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MemoryProvider"/>
 /// </summary>
 /// <param name="feature">Feature to be in this datasource</param>
 public MemoryProvider(IFeature feature)
 {
     SRID     = -1;
     Features = new Features();
     Features.Add(feature);
 }
Пример #24
0
        public IEnumerable<IFeature> GetFeaturesInView(BoundingBox box, double resolution)
        {
            lock (_syncRoot)
            {
                Open();
                try
                {
                    //Use the spatial index to get a list of features whose boundingbox intersects bbox
                    var objectlist = GetObjectIDsInView(box);
                    var features = new Features();

                    foreach (var index in objectlist)
                    {
                        var feature = _dbaseFile != null ? _dbaseFile.GetFeature(index, features) : new Feature();
                        feature.Geometry = ReadGeometry(index);
                        if (feature.Geometry == null) continue;
                        if (!feature.Geometry.GetBoundingBox().Intersects(box)) continue;
                        if (FilterDelegate != null && !FilterDelegate(feature)) continue;
                        features.Add(feature);
                    }
                    return features;
                }
                finally
                {
                    Close();
                }
            }
        }
Пример #25
0
        public IEnumerable<IFeature> GetFeaturesInView(BoundingBox box, double resolution)
        {
            //Use the spatial index to get a list of features whose boundingbox intersects bbox
            Collection<uint> objectlist = GetObjectIDsInView(box);
            IFeatures features = new Features();

            foreach (uint index in objectlist)
            {
                IFeature feature = dbaseFile.GetFeature(index, features);
                feature.Geometry = ReadGeometry(index);
                if (feature.Geometry != null)
                    if (feature.Geometry.GetBoundingBox().Intersects(box))
                        if (FilterDelegate == null || FilterDelegate(feature))
                            features.Add(feature);
            }
            return features;
        }