//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; }
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); }
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); }
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); }