public void ChangeInDefinitionUpdatesGeometry() { //v-shaped cs 100 wide var crossSectionDefinitionYZ = new CrossSectionDefinitionYZ(""); crossSectionDefinitionYZ.YZDataTable.AddCrossSectionYZRow(0, 100, 0); crossSectionDefinitionYZ.YZDataTable.AddCrossSectionYZRow(50, 0, 0); crossSectionDefinitionYZ.YZDataTable.AddCrossSectionYZRow(100, 100, 0); crossSectionDefinitionYZ.Thalweg = 50; //horizontal line var network = HydroNetworkHelper.GetSnakeHydroNetwork(new Point(0, 0), new Point(100, 0)); var branch = network.Channels.First(); ICrossSection crossSection = HydroNetworkHelper.AddCrossSectionDefinitionToBranch(branch, crossSectionDefinitionYZ, 50); var expectedGeometry = new LineString(new[] { new Coordinate(50, 50), new Coordinate(50, -50) }); //use equals exact because rounding errors occur Assert.IsTrue(expectedGeometry.EqualsExact(crossSection.Geometry, 0.0001)); //action : change the profile crossSectionDefinitionYZ.YZDataTable[0].Yq = -20; expectedGeometry = new LineString(new[] { new Coordinate(50, 70), new Coordinate(50, -50) }); Assert.IsTrue(expectedGeometry.EqualsExact(crossSection.Geometry, 0.0001)); //action: change the thalweg crossSectionDefinitionYZ.Thalweg = 40; expectedGeometry = new LineString(new[] { new Coordinate(50, 60), new Coordinate(50, -60) }); Assert.IsTrue(expectedGeometry.EqualsExact(crossSection.Geometry, 0.0001)); }
public void Test5() { WKTReader reader = new WKTReader(new GeometryFactory(new PrecisionModel(1), 0)); IGeometry geometry = reader.Read("MULTIPOINT (0 0, 5 0, 10 0)"); LineString convexHull = (LineString)reader.Read("LINESTRING (0 0, 10 0)"); Assert.IsTrue(convexHull.EqualsExact(geometry.ConvexHull())); }
public void Test1() { WKTReader reader = new WKTReader(new GeometryFactory(new PrecisionModel(1), 0)); LineString lineString = (LineString)reader.Read("LINESTRING (30 220, 240 220, 240 220)"); LineString convexHull = (LineString)reader.Read("LINESTRING (30 220, 240 220)"); Assert.IsTrue(convexHull.EqualsExact(lineString.ConvexHull())); }
public void CreatePerpendicularGeometry() { var branchGeometry = new LineString(new[] { new Coordinate(0, 0), new Coordinate(100, 0) }); var minY = -40.0d; var maxY = 60.0d; var offsetAlongBranch = 25.0d; var perpendicularGeometry = CrossSectionHelper.CreatePerpendicularGeometry(branchGeometry, offsetAlongBranch, minY, maxY, 0.0); //compare the calculated geometry with a small tolerance. Rounding errors occur due to Sin/Cos LineString expected = new LineString(new[] { new Coordinate(25, 40), new Coordinate(25, -60) }); Assert.IsTrue(expected.EqualsExact(perpendicularGeometry, 0.00001)); }
/// <summary> /// /// </summary> public void Start() { var pointInLine = Factory.CreatePoint(new Coordinate(20, 10)); var pointOutLine = Factory.CreatePoint(new Coordinate(20, 31)); var aLine = Factory.CreateLineString(new Coordinate[] { new Coordinate(23, 32.2), new Coordinate(922, 11) }); var anotherLine = Factory.CreateLineString(new Coordinate[] { new Coordinate(0, 1), new Coordinate(30, 30) }); try { Write(line.Area); Write(line.Boundary); Write(line.BoundaryDimension); Write(line.Centroid); Write(line.Coordinate); Write(line.Coordinates); Write(line.CoordinateSequence); Write(line.Dimension); Write(line.EndPoint); Write(line.Envelope); Write(line.EnvelopeInternal); Write(line.InteriorPoint); Write(line.IsClosed); Write(line.IsEmpty); Write(line.IsRing); Write(line.IsSimple); Write(line.IsValid); Write(line.Length); Write(line.NumPoints); Write(line.StartPoint); if (line.UserData != null) { Write(line.UserData); } else { Write("UserData null"); } Write(line.Buffer(10)); Write(line.Buffer(10, new BufferParameters { EndCapStyle = EndCapStyle.Flat })); Write(line.Buffer(10, new BufferParameters { EndCapStyle = EndCapStyle.Square })); Write(line.Buffer(10, 20)); Write(line.Buffer(10, new BufferParameters(20) { EndCapStyle = EndCapStyle.Flat })); Write(line.Buffer(10, new BufferParameters(20) { EndCapStyle = EndCapStyle.Square })); Write(line.Contains(pointInLine)); Write(line.Contains(pointOutLine)); Write(line.Crosses(pointInLine)); Write(line.Crosses(pointOutLine)); Write(line.Difference(pointInLine)); Write(line.Difference(pointOutLine)); Write(line.Disjoint(pointInLine)); Write(line.Disjoint(pointOutLine)); Write(line.Distance(pointInLine)); Write(line.Distance(pointOutLine)); Write(line.EqualsTopologically(line.Copy() as LineString)); Write(line.EqualsExact(line.Copy() as LineString)); Write(line.ConvexHull()); Write(line.Intersection(pointInLine)); Write(line.Intersection(pointOutLine)); Write(line.Intersection(aLine)); Write(line.Intersects(pointInLine)); Write(line.Intersects(pointOutLine)); Write(line.Intersects(aLine)); Write(line.IsWithinDistance(pointOutLine, 2)); Write(line.IsWithinDistance(pointOutLine, 222)); Write(line.Overlaps(pointInLine)); Write(line.Overlaps(pointOutLine)); Write(line.Overlaps(aLine)); Write(line.Overlaps(anotherLine)); Write(line.Relate(pointInLine)); Write(line.Relate(pointOutLine)); Write(line.Relate(aLine)); Write(line.Relate(anotherLine)); Write(line.SymmetricDifference(pointInLine)); Write(line.SymmetricDifference(pointOutLine)); Write(line.SymmetricDifference(aLine)); Write(line.SymmetricDifference(anotherLine)); Write(line.ToString()); Write(line.AsText()); Write(line.Touches(pointInLine)); Write(line.Touches(pointOutLine)); Write(line.Touches(aLine)); Write(line.Touches(anotherLine)); Write(line.Union(pointInLine)); Write(line.Union(pointOutLine)); Write(line.Union(aLine)); Write(line.Union(anotherLine)); Write(line.Within(pointInLine)); Write(line.Within(pointOutLine)); Write(line.Within(aLine)); Write(line.Within(anotherLine)); string linestring = "LINESTRING (1.2 3.4, 5.6 7.8, 9.1 10.12)"; string anotherlinestringg = "LINESTRING (12345 3654321, 685 7777.945677, 782 111.1)"; var geom1 = Reader.Read(linestring); Write(geom1.AsText()); var geom2 = Reader.Read(anotherlinestringg); Write(geom2.AsText()); byte[] bytes = line.AsBinary(); var test1 = new WKBReader().Read(bytes); Write(test1.ToString()); bytes = new GDBWriter().Write(line); test1 = new GDBReader().Read(bytes); Write(test1.ToString()); } catch (Exception ex) { throw ex; } }