예제 #1
0
        /// <summary>
        /// Method to remove a feature from a bin
        /// </summary>
        /// <param name="searchFeature"></param>
        /// <returns></returns>
        internal bool Remove(SbnFeature searchFeature)
        {
            if (!Intersects(searchFeature.MinX, searchFeature.MinY, searchFeature.MaxX, searchFeature.MaxY))
            {
                return(false);
            }

            if (FeatureCount > 0)
            {
                var searchBin = FirstBin;
                for (var i = 0; i < FeatureCount; i++)
                {
                    var j = i % 100;
                    if (i > 100 && j == 0)
                    {
                        searchBin = searchBin.Next;
                    }
                    if (searchBin[j].Fid == searchFeature.Fid)
                    {
                        searchBin.RemoveAt(j);
                        return(true);
                    }
                }
            }

            if (Nid < _tree.FirstLeafNodeId)
            {
                return(Child1.Remove(searchFeature) ||
                       Child2.Remove(searchFeature));
            }

            return(false);
        }