ProjNet Transformation and Point with more than 2 double...

Apr 23, 2010 at 2:45 PM

        /// <summary>
        /// Create a new point by a douuble[] array
        /// </summary>
        /// <param name="point"></param>
        public Point(double[] point)
        {
            if (point.Length §!= 2)
                throw new Exception("Only 2 dimensions are supported for points");

            _X = point[0];
            _Y = point[1];
        }

This is the "point" constructor with a double array point....   ok it is perfect...

 BUT..   here...    

  	/// <summary>
        /// Transforms a <see cref="SharpMap.Geometries.BoundingBox"/>.
        /// </summary>
        /// <param name="box">BoundingBox to transform</param>
        /// <param name="transform">Math Transform</param>
        /// <returns>Transformed object</returns>
        public static BoundingBox TransformBox(BoundingBox box, IMathTransform transform)
        {
            if (box == null)
                return null;
            Point[] corners = new Point[4];
            corners[0] = new Point(transform.Transform(box.Min.ToDoubleArray())); //LL
            corners[1] = new Point(transform.Transform(box.Max.ToDoubleArray())); //UR
            corners[2] = new Point(transform.Transform(new Point(box.Min.X, box.Max.Y).ToDoubleArray())); //UL
            corners[3] = new Point(transform.Transform(new Point(box.Max.X, box.Min.Y).ToDoubleArray())); //LR

            BoundingBox result = corners[0].GetBoundingBox();
            for (int i = 1; i < 4; i++)
                result = result.Join(corners[i].GetBoundingBox());
            return result;
        }

When you use a Coordinate Projection...   some times it returns back more than 2 points...   this is a bug. of projnet????

 

        /// <summary>
        /// Transforms a point
        /// </summary>
        /// <param name="point"></param>
        /// <returns></returns>
        public override double[] Transform(double[] point)
        {
            foreach (ICoordinateTransformation ct in _CoordinateTransformationList)
                point = ct.MathTransform.Transform(point);
            return point;
        }

 

Ciao

Alberto