Exemple #1
0
        /// <summary>
        /// Method to create an <see cref="SbnTree"/> from a collection of (id, geometry) tuples
        /// </summary>
        /// <param name="boxedFeatures">The (id, geometry) tuples</param>
        /// <param name="zRange">The z-ordinate extent</param>
        /// <param name="mRange">The m-ordinate extent</param>
        /// <returns>The newly created tree</returns>
        public static SbnTree Create(ICollection <Tuple <uint, IGeometry> > boxedFeatures, Interval?zRange = null, Interval?mRange = null)
        {
            Interval x, y, z, m;

            GetIntervals(boxedFeatures, out x, out y, out z, out m);
            if (zRange.HasValue)
            {
                z = z.ExpandedByInterval(zRange.Value);
            }
            if (mRange.HasValue)
            {
                m = m.ExpandedByInterval(mRange.Value);
            }

            var tree = new SbnTree(new SbnHeader(boxedFeatures.Count, x, y, z, m));

            foreach (var boxedFeature in boxedFeatures)
            {
                tree.Insert(tree.ToSbnFeature(boxedFeature.Item1, boxedFeature.Item2));
            }

            tree.CompactSeamFeatures();
            return(tree);
        }
Exemple #2
0
 /// <summary>
 /// Creates an instance of this class
 /// </summary>
 /// <param name="tree">The tree this node belongs to</param>
 /// <param name="nid">The node's id</param>
 public SbnNode(SbnTree tree, int nid)
 {
     _tree = tree;
     Nid   = nid;
     Full  = nid == 1 || nid >= _tree.FirstLeafNodeId;
 }