// Initialize MultiLine and sets srid.
 public void SetSrid(int srid)
 {
     _lines = new LRSMultiLine(srid);
     _srid  = srid;
 }
        public void LRSMultiLineToSqlTest()
        {
            // empty LRS Point check
            var point1   = new LRSPoint("LINESTRING EMPTY".GetGeom());
            var hashCode = point1.GetHashCode();

            Assert.IsTrue(hashCode > 0);
            Assert.AreEqual(point1.ToString(), "POINT (0 0 )");

            // LRS Point Equality check
            point1 = new LRSPoint("POINT(1 1 0 1)".GetGeom());
            var point2 = new LRSPoint("POINT(1 1 0 1)".GetGeom());

            Assert.IsTrue(point1 == point2);

            // range check
            Assert.IsTrue(point1.IsXYWithinTolerance(point2, 0.5));

            point2 = new LRSPoint("POINT(2 2 0 2)".GetGeom());
            var point3    = new LRSPoint("POINT(3 3 0 3)".GetGeom());
            var point4    = new LRSPoint("POINT(4 4 0 4)".GetGeom());
            var lrsPoints = new List <LRSPoint> {
                point1, point2, point3
            };

            // next and previous point
            Assert.AreEqual(LRSPoint.GetNextPoint(ref lrsPoints, point2), point3);
            Assert.AreEqual(LRSPoint.GetNextPoint(ref lrsPoints, point4), null);
            Assert.AreEqual(LRSPoint.GetPreviousPoint(ref lrsPoints, point2), point1);
            Assert.AreEqual(LRSPoint.GetPreviousPoint(ref lrsPoints, point4), null);

            // Multiline
            var lrs = new LRSMultiLine(4326);
            SqlGeometryBuilder geomBuilder = null;

            lrs.ToSqlGeometry(ref geomBuilder);
            lrs.BuildSqlGeometry(ref geomBuilder);

            geomBuilder = new SqlGeometryBuilder();
            lrs.ToSqlGeometry(ref geomBuilder);
            lrs.BuildSqlGeometry(ref geomBuilder);

            var lrsLine = new LRSLine(4326);

            lrsLine.AddPoint(new LRSPoint(1, 1, 0, 1, 4326));
            lrs.AddLine(lrsLine);

            geomBuilder = new SqlGeometryBuilder();
            lrs.ToSqlGeometry(ref geomBuilder);

            var lrsLine1 = new LRSLine(4326);
            var wkt      = lrs.ToString();

            Assert.AreEqual("MULTILINESTRING EMPTY", wkt);
            Assert.AreEqual(lrs.GetPointAtM(10), null);

            var pt = new LRSPoint(1, 1, 0, 1, 4326);

            lrsLine1.AddPoint(pt);
            Assert.AreEqual(lrsLine1.ToString(), "POINT (1 1 1)");

            pt = new LRSPoint(2, 2, 0, 2, 4326);
            lrsLine1.AddPoint(pt);

            lrs = new LRSMultiLine(4326);
            lrs.AddLine(lrsLine1);

            wkt = lrs.ToString();
            Assert.AreEqual("LINESTRING (1 1 1, 2 2 2)", wkt);

            var lrsLine2 = new LRSLine(4326);

            pt = new LRSPoint(3, 3, 0, 3, 4326);
            Assert.AreEqual(pt.ToString(), "POINT (3 3 3)");
            lrsLine2.AddPoint(pt);
            pt = new LRSPoint(4, 4, 0, 4, 4326);
            lrsLine2.AddPoint(pt);

            lrs = new LRSMultiLine(4326);
            lrs.AddLine(lrsLine1);
            lrs.AddLine(lrsLine2);
            geomBuilder = null;
            lrs.BuildSqlGeometry(ref geomBuilder);

            Assert.AreEqual(lrs.GetPointAtM(10), null);
            Assert.AreEqual(lrs.GetPointAtM(2), new LRSPoint(2, 2, 0, 2, 4326));
            wkt = lrs.ToString();
            lrs.RemoveFirst();
            Assert.AreEqual(lrs.Count, 1);
            lrs.RemoveLast();
            Assert.AreEqual(lrs.Count, 0);
            lrs.RemoveFirst();
            lrs.RemoveLast();
            Assert.AreEqual("MULTILINESTRING ((1 1 1, 2 2 2), (3 3 3, 4 4 4))", wkt);
        }
 // Save the SRID for later
 public void SetSrid(int srid)
 {
     _segment1 = new LRSMultiLine(srid);
     _segment2 = new LRSMultiLine(srid);
     _srid     = srid;
 }
示例#4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MultiLineMergeGeometrySink"/> class.
 /// </summary>
 public BuildLRSMultiLineSink()
 {
     MultiLine = new LRSMultiLine();
 }