Пример #1
0
        /// <summary>
        /// Rotate the coordinate map by the given number of degrees
        /// </summary>
        /// <param name="degrees"></param>
        public void Rotate(Double degrees)
        {
            /**
             * create a new point some ways off from our reference point
             */
            PointD newPoint = _pixelReferencePoint.Clone() as PointD;

            newPoint.X += 100;

            /**
             * save the lat and long of the new point
             */
            GeoPoint geoPoint = GetGeoPoint(newPoint);

            /**
             * rotate the new point about our reference point
             */
            newPoint.Rotate(_pixelReferencePoint, degrees);

            GeoPointList geoPoints = new GeoPointList()
            {
                _geoReferencePoint, geoPoint
            };
            PointDList pixPoints = new PointDList()
            {
                _pixelReferencePoint, newPoint
            };

            /**
             * Reinitialize ourself with the new rotation
             */
            Initialize(pixPoints, geoPoints);
        }
Пример #2
0
        public PointDList Clone()
        {
            PointDList list = new PointDList();

            this.ForEach(p => list.Add(p.Clone() as PointD));
            return(list);
        }
Пример #3
0
        void CreateFromLines(LineList lines)
        {
            _points = new PointDList();

            foreach (Line line in lines)
            {
                _points.Add(line.P1 as PointD);
            }
        }
Пример #4
0
        public PointDList ToPointDList()
        {
            PointDList list = new PointDList();

            foreach (GeoPoint point in GeoPoints)
            {
                list.Add(point.ToPointD());
            }
            return(list);
        }
Пример #5
0
        public GeoPointList GetGeoPointList(PointDList pixPointList)
        {
            GeoPointList retVal = new GeoPointList();

            foreach (PointD pt in pixPointList)
            {
                retVal.Add(GetGeoPoint(pt));
            }
            return(retVal);
        }
Пример #6
0
        public static Unescaped ToUnescapedSQLString(PointDList pnts)
        {
            Unescaped retVal = Unescaped.String("NULL");

            if (pnts != null & pnts.Count > 0)
            {
                retVal = Unescaped.String(pnts.ToSQLString());
            }
            return(retVal);
        }
Пример #7
0
        public PointDList ToPointDList()
        {
            PointDList list = new PointDList();

            foreach (GeoPoint point in this)
            {
                list.Add(new PointD(point));
            }
            return(list);
        }
Пример #8
0
        public static RectangleD Inflate(RectangleD original, Double xAmount, Double yAmount)
        {
            PointDList points = new PointDList();

            foreach (PointD point in original.PointList)
            {
                points.Add(new PointD(point.X * xAmount, point.Y * yAmount));
            }
            RectangleD newRect = new RectangleD(points[0], points[1], points[2], points[3]);

            return(newRect);
        }
Пример #9
0
        void Initialize(PointDList pixPointList, GeoPointList geoPointList)
        {
            // Get and store the difference in pixel orientation to north (Rotation from north)
            double geoBearing = EarthGeo.GetBearing(geoPointList[0], geoPointList[1]);
            double pixBearing = GetPixelBearing(pixPointList[0], pixPointList[1]);

            this.BearingDelta = geoBearing - pixBearing;


            // Get and store the pixel to meter ratio (Scale to meters)
            double geoDistance = EarthGeo.GetDistance(geoPointList[0], geoPointList[1]);
            double pixDistance = new Line(pixPointList[0], pixPointList[1]).Length;

            _pixelsPerMeter = pixDistance / geoDistance;

            // Store a pixel cross reference point, from which all other conversions can happen
            this.PixPoint = new PointD(pixPointList[0].X, pixPointList[0].Y);
            this.GeoPoint = new GeoPoint(geoPointList[0].Y, geoPointList[0].X);
        }
Пример #10
0
        public virtual bool Contains(PointD point)
        {
            PointD p1, p2;

            bool inside = false;

            PointDList poly = _points;

            PointD oldPoint = poly[Points.Count - 1];

            for (int i = 0; i < poly.Count; i++)
            {
                PointD newPoint = poly[i];

                if (newPoint.X > oldPoint.X)
                {
                    p1 = oldPoint;

                    p2 = newPoint;
                }

                else
                {
                    p1 = newPoint;

                    p2 = oldPoint;
                }

                if ((newPoint.X < point.X) == (point.X <= oldPoint.X) &&
                    (point.Y - (long)p1.Y) * (p2.X - p1.X)
                    < (p2.Y - (long)p1.Y) * (point.X - p1.X))
                {
                    inside = !inside;
                }

                oldPoint = newPoint;
            }

            return(inside);
        }
Пример #11
0
 public LineList(PointDList points)
     : this(points.ToLineList())
 {
 }
Пример #12
0
 public RectangleD()
 {
     _points = new PointDList {
         PointD.Empty, PointD.Empty, PointD.Empty, PointD.Empty
     };
 }
Пример #13
0
 public GridD()
 {
     _points = new PointDList {
         PointD.Empty, PointD.Empty, PointD.Empty, PointD.Empty
     };
 }
Пример #14
0
 public GeoLineList(PointDList list)
     : this(new GeoPointList(list))
 {
 }
Пример #15
0
 public CoordinateMap(PointDList pixPointList, GeoPointList geoPointList)
 {
     Initialize(pixPointList, geoPointList);
 }
Пример #16
0
 public GeoPolygon(PointDList points)
     : this(new GeoPointList(points))
 {
 }
Пример #17
0
 public GeoRectangle(PointDList points)
     : this(new GeoPointList(points))
 {
 }
Пример #18
0
 public GeoPath(PointDList list)
     : base(list)
 {
 }
Пример #19
0
 public Polygon(PointDList points)
 {
     _points = points;
 }
Пример #20
0
        public PointDList ToPointDList()
        {
            PointDList points = new PointDList(_points);

            return(points);
        }