/// <summary> /// Returns a point at the center of the section /// </summary> /// <returns></returns> public PointClass Center() { PointClass point = new PointClass(); LineClass right = new LineClass(); LineClass bottom = new LineClass(); LineClass second = new LineClass(); LineClass first = new LineClass(); PointClass temp = new PointClass(); if (IsValid()) { bottom.CreateFromPoints(Corners[2], Corners[3]); right.CreateFromPoints(Corners[0], Corners[3]); first.CreateSlopePoint(right.M, bottom.CPoint(Corners[3].X - bottom.Adjustment(MeasureFunctions.HalfMile))); bottom.CPoint(Corners[3].X - bottom.Adjustment(MeasureFunctions.HalfMile)); right.CPoint(Corners[3].X + (Math.Sign(right.M) * right.Adjustment(MeasureFunctions.HalfMile))); second.CreateSlopePoint(bottom.M, right.CPoint(Corners[3].X + (Math.Sign(right.M) * right.Adjustment(GeographicCalcService.MeasureFunctions.HalfMile)))); temp = MeasureFunctions.LineIntercection(first, second); point = temp; } else { temp.X = -1; temp.Y = -1; point = temp; } return(point); }
/// <summary> /// Return the point within the section based off of footage information /// </summary> /// <param name="Foot"></param> /// <returns></returns> public PointClass LocateFootage(FootageClass Foot) { PointClass LocateFootageOut = new PointClass(); LineClass right = new LineClass(); LineClass bottom = new LineClass(); LineClass left = new LineClass(); LineClass top = new LineClass(); LineClass second = new LineClass(); LineClass first = new LineClass(); PointClass temp = new PointClass(); if (IsValid()) { // *** SE Corner Based of south and east borders if (Foot.CombindDir() == "NW") { bottom.CreateFromPoints(Corners[2], Corners[3]); right.CreateFromPoints(Corners[0], Corners[3]); first.CreateSlopePoint(right.M, bottom.CPoint((Corners[3].X - bottom.Adjustment(Foot.EastWestValueMeters)))); second.CreateSlopePoint(bottom.M, right.CPoint((Corners[3].X + (Math.Sign(right.M) * right.Adjustment(Foot.NorthSouthValueMeters))))); // *** SW corner based of south and west borders } else if ((Foot.CombindDir() == "NE")) { bottom.CreateFromPoints(Corners[2], Corners[3]); left.CreateFromPoints(Corners[1], Corners[2]); first.CreateSlopePoint(left.M, bottom.CPoint((Corners[2].X + bottom.Adjustment(Foot.EastWestValueMeters)))); second.CreateSlopePoint(bottom.M, left.CPoint(Corners[2].X + (Math.Sign(left.M) * left.Adjustment(Foot.NorthSouthValueMeters)))); // *** NW corner based off west and north borders } else if ((Foot.CombindDir() == "SE")) { top.CreateFromPoints(Corners[0], Corners[1]); left.CreateFromPoints(Corners[1], Corners[2]); first.CreateSlopePoint(left.M, top.CPoint((Corners[1].X + top.Adjustment(Foot.EastWestValueMeters)))); second.CreateSlopePoint(top.M, left.CPoint((Corners[1].X - (Math.Sign(left.M) * left.Adjustment(Foot.NorthSouthValueMeters))))); // *** NE corner based off east and north border } else if ((Foot.CombindDir() == "SW")) { top.CreateFromPoints(Corners[0], Corners[1]); right.CreateFromPoints(Corners[0], Corners[3]); first.CreateSlopePoint(right.M, top.CPoint((Corners[0].X - bottom.Adjustment(Foot.EastWestValueMeters)))); second.CreateSlopePoint(top.M, right.CPoint((Corners[0].X - (Math.Sign(right.M) * right.Adjustment(Foot.NorthSouthValueMeters))))); } temp = MeasureFunctions.LineIntercection(first, second); LocateFootageOut = temp; } else { temp.X = -1; temp.Y = -1; LocateFootageOut = temp; } return(LocateFootageOut); }
/// <summary> /// Returns the point within the section based off of subsection information /// </summary> /// <param name="subsec"></param> /// <returns></returns> public PointClass LocateSubSection(SubSectionClass subsec) { PointClass LocateSubSectionOut = new PointClass(); LineClass right = new LineClass(); LineClass bottom = new LineClass(); LineClass second = new LineClass(); LineClass first = new LineClass(); PointClass temp = new PointClass(); if (IsValid()) { bottom.CreateFromPoints(Corners[2], Corners[3]); right.CreateFromPoints(Corners[0], Corners[3]); first.CreateSlopePoint(right.M, bottom.CPoint((Corners[3].X - bottom.Adjustment(subsec.ROffset().X)))); second.CreateSlopePoint(bottom.M, right.CPoint((Corners[3].X + (Math.Sign(right.M) * right.Adjustment(subsec.ROffset().Y))))); temp = MeasureFunctions.LineIntercection(first, second); LocateSubSectionOut = temp; } else { temp.X = -1; temp.Y = -1; LocateSubSectionOut = temp; } return(LocateSubSectionOut); }