Exemple #1
0
        //geo=>prj
        void IProjectionTransform.Transform(ShapePoint pt)
        {
            double prjX, prjY;

            _coordinateTranform.Geo2Prj(pt.X, pt.Y, out prjX, out prjY);
            pt.X = prjX;
            pt.Y = prjY;
        }
Exemple #2
0
        private void ProjectFeature(Feature fet)
        {
            double prjX = 0, prjY = 0;
            Shape  geometry = fet.Geometry;

            if (geometry is ShapePolygon)
            {
                ShapePolygon plygon     = geometry as ShapePolygon;
                int          errorCount = 0;
                foreach (ShapeRing ring in plygon.Rings)
                {
                    try
                    {
                        foreach (ShapePoint pt in ring.Points)
                        {
                            _coordTransform.Geo2Prj(pt.X, pt.Y, out prjX, out prjY);
                            pt.X = prjX;
                            pt.Y = prjY;
                        }
                    }
                    catch
                    {
                        errorCount++;
                        if (errorCount > 3)
                        {
                            break;
                        }
                    }
                }
            }
            fet.Projected = true;
        }
        private GraphicsPath ToGraphicsPath(CodeCell.AgileMap.Core.Feature feature, ICanvas canvas)
        {
            CodeCell.AgileMap.Core.ShapePolyline           ply = feature.Geometry as CodeCell.AgileMap.Core.ShapePolyline;
            GeoDo.RSS.Core.DrawEngine.ICoordinateTransform tran = canvas.CoordTransform;
            double       prjX, prjY;
            int          screenX, screenY;
            GraphicsPath path = new GraphicsPath();

            foreach (CodeCell.AgileMap.Core.ShapeLineString line in ply.Parts)
            {
                PointF[] pts = new PointF[line.Points.Length];
                for (int i = 0; i < pts.Length; i++)
                {
                    if (!feature.Projected)
                    {
                        tran.Geo2Prj(line.Points[i].X, line.Points[i].Y, out prjX, out prjY);
                    }
                    else
                    {
                        prjX = line.Points[i].X;
                        prjY = line.Points[i].Y;
                    }
                    tran.Prj2Screen(prjX, prjY, out screenX, out screenY);
                    pts[i].X = screenX;
                    pts[i].Y = screenY;
                }
                path.AddCurve(pts.ToArray());
                //path.AddLines();
                path.StartFigure();
            }
            return(path);
        }
Exemple #4
0
        private ShapePolygon ShapePolygonGeoToPrj(ShapePolygon shapePolygon)
        {
            if (shapePolygon == null || shapePolygon.IsProjected)
            {
                return(null);
            }
            GeoDo.RSS.Core.DrawEngine.ICoordinateTransform tran = _canvas.CoordTransform;
            double prjX;
            double prjY;
            int    ringLength = shapePolygon.Rings.Length;

            ShapeRing[] ring       = new ShapeRing[ringLength];
            int         potsLength = 0;

            for (int i = 0; i < ringLength; i++)
            {
                if (shapePolygon.Rings[i].Points == null)
                {
                    continue;
                }
                potsLength = shapePolygon.Rings[i].Points.Length;
                ShapePoint[] shpPoint = new ShapePoint[potsLength];
                for (int j = 0; j < shapePolygon.Rings[i].Points.Length; j++)
                {
                    tran.Geo2Prj(shapePolygon.Rings[i].Points[j].X, shapePolygon.Rings[i].Points[j].Y, out prjX, out prjY);
                    ShapePoint point = new ShapePoint(prjX, prjY);
                    shpPoint[j] = point;
                }
                ring[i] = new ShapeRing(shpPoint);
            }
            ShapePolygon prjSp = new ShapePolygon(ring);

            return(prjSp);
        }
Exemple #5
0
        private GraphicsPath ToGraphicsPath(Feature feature, ICanvas canvas)
        {
            if (feature == null)
            {
                return(null);
            }
            ShapePolygon ply = feature.Geometry as ShapePolygon;

            if (ply == null || ply.Rings == null || ply.Rings.Length == 0)
            {
                return(null);
            }
            GeoDo.RSS.Core.DrawEngine.ICoordinateTransform tran = canvas.CoordTransform;
            double       prjX, prjY;
            int          screenX, screenY;
            GraphicsPath path = new GraphicsPath();

            foreach (ShapeRing ring in ply.Rings)
            {
                PointF[] pts = new PointF[ring.Points.Length];
                if (pts == null || pts.Length == 0)
                {
                    continue;
                }
                for (int i = 0; i < pts.Length; i++)
                {
                    if (!feature.Projected)
                    {
                        tran.Geo2Prj(ring.Points[i].X, ring.Points[i].Y, out prjX, out prjY);
                    }
                    else
                    {
                        prjX = ring.Points[i].X;
                        prjY = ring.Points[i].Y;
                    }
                    tran.Prj2Screen(prjX, prjY, out screenX, out screenY);
                    pts[i].X = screenX;
                    pts[i].Y = screenY;
                }
                path.AddPolygon(pts.ToArray());
            }
            return(path);
        }