public void CountAndUnionByState()
        {
            IList results = session.CreateCriteria(typeof(County))
                            .AddOrder(Order.Asc("State"))
                            .SetProjection(Projections.ProjectionList()
                                           .Add(Projections.GroupProperty("State"))
                                           .Add(Projections.RowCount())
                                           .Add(SpatialProjections.Union("Boundaries"))
                                           )
                            .List();

            Assert.AreEqual(2, results.Count);

            object[] resultAA = (object[])results[0];
            object[] resultBB = (object[])results[1];

            int       countAA      = (int)resultAA[1];
            int       countBB      = (int)resultBB[1];
            IGeometry aggregatedAA = (IGeometry)resultAA[2];
            IGeometry aggregatedBB = (IGeometry)resultBB[2];

            IGeometry expectedAA = Wkt.Read("POLYGON((1 0, 1 1, 3 1, 3 0, 1 0))");
            IGeometry expectedBB = Wkt.Read("POLYGON((1 1, 1 2, 3 2, 3 1, 1 1))");

            Assert.AreEqual(2, countAA);
            Assert.AreEqual(2, countBB);
            Assert.IsTrue(expectedAA.Equals(aggregatedAA));
            Assert.IsTrue(expectedBB.Equals(aggregatedBB));
        }
 public void WhenRelateWithoutPatternThenThrows()
 {
     Assert.Throws <ArgumentNullException>(() => _session.CreateCriteria(typeof(NtsTestCase))
                                           .Add(Restrictions.Eq("Operation", "Relate"))
                                           .SetProjection(Projections.ProjectionList()
                                                          .Add(Projections.Property("Description"))
                                                          .Add(Projections.Property("RelatePattern"))
                                                          .Add(SpatialProjections.Relate("GeometryA", "GeometryB"))
                                                          )
                                           .List());
 }
Beispiel #3
0
        public void CountAndUnionByStateLambda()
        {
            var results = _session.QueryOver <County>()
                          .Select(
                Projections.ProjectionList()
                .Add(Projections.Group <County>(o => o.State))
                .Add(Projections.RowCount())
                .Add(SpatialProjections.Union <County>(o => o.Boundaries)))
                          .OrderBy(o => o.State).Asc
                          .List <object[]>();

            CountAndUnionByState((IList)results);
        }
Beispiel #4
0
        public void CountAndUnionByState()
        {
            IList results = _session.CreateCriteria(typeof(County))
                            .AddOrder(Order.Asc("State"))
                            .SetProjection(Projections.ProjectionList()
                                           .Add(Projections.GroupProperty("State"))
                                           .Add(Projections.RowCount())
                                           .Add(SpatialProjections.Union("Boundaries"))
                                           )
                            .List();

            CountAndUnionByState(results);
        }
Beispiel #5
0
        public void IntersectionAll()
        {
            IList results = _session.CreateCriteria(typeof(County))
                            .SetProjection(SpatialProjections.Intersection("Boundaries"))
                            .List();

            Assert.AreEqual(1, results.Count);

            IGeometry aggregated = (IGeometry)results[0];
            IGeometry expected   = new Point(2, 1);

            Assert.IsTrue(expected.Equals(aggregated));
        }
Beispiel #6
0
        public void CollectAll()
        {
            IList results = _session.CreateCriteria(typeof(County))
                            .SetProjection(SpatialProjections.Collect("Boundaries"))
                            .List();

            Assert.AreEqual(1, results.Count);

            var aggregated = (IGeometry)results[0];

            Assert.AreEqual(4, aggregated.NumGeometries);
            //Assert.AreEqual("GEOMETRYCOLLECTION", aggregated.GeometryType);
        }
Beispiel #7
0
        public void EnvelopeAll()
        {
            IList results = _session.CreateCriteria(typeof(County))
                            .SetProjection(SpatialProjections.Envelope("Boundaries"))
                            .List();

            Assert.AreEqual(1, results.Count);

            var aggregated = (IGeometry)results[0];
            var expected   = new Envelope(1, 3, 0, 2);

            Assert.IsTrue(expected.Equals(aggregated.EnvelopeInternal));
        }
Beispiel #8
0
        public void OrderByDistanceQueryOver()
        {
            Geometry point = new Point(0.0, 0.0)
            {
                SRID = 4326
            };

            Simple simple = null;

            var result = _session.QueryOver(() => simple)
                         .OrderBy(SpatialProjections.Distance <Simple>(s => s.Geometry, point)).Asc
                         .List();

            Assert.That(result[0].Description, Is.EqualTo("point 2"));
            Assert.That(result[1].Description, Is.EqualTo("point 4"));
            Assert.That(result[2].Description, Is.EqualTo("point 3"));
            Assert.That(result[3].Description, Is.EqualTo("point 1"));
        }
Beispiel #9
0
        public void CountAndUnion()
        {
            IList results = _session.CreateCriteria(typeof(County))
                            .SetProjection(Projections.ProjectionList()
                                           .Add(Projections.RowCount())
                                           .Add(SpatialProjections.Union("Boundaries"))
                                           )
                            .List();

            Assert.AreEqual(1, results.Count);

            object[] result = (object[])results[0];

            IGeometry expected   = Wkt.Read("POLYGON((1 0, 1 1, 1 2, 2 2, 3 2, 3 1, 3 0, 2 0, 1 0))");
            IGeometry aggregated = (IGeometry)result[1];

            Assert.AreEqual(4, result[0]);
            Assert.IsTrue(expected.Equals(aggregated));
        }
        public string GetMandantAxisEnvelope()
        {
            var session = transactionScopeProvider.CurrentTransactionScope.Session;
            var crit    = session.CreateCriteria(typeof(AchsenSegment));

            crit.Add(Restrictions.Eq(ExpressionHelper.GetPropertyName <AchsenSegment, ErfassungsPeriod>(e => e.ErfassungsPeriod), this.CurrentErfassungsPeriod));
            crit.SetProjection(SpatialProjections.Envelope(ExpressionHelper.GetPropertyName <AchsenSegment, IGeometry>(e => e.Shape)));
            IGeometry geom = crit.UniqueResult() as IGeometry;
            Envelope  envelope;

            if (geom != null)
            {
                envelope = geom.EnvelopeInternal;
            }
            else
            {
                envelope = new Envelope();
            }

            return(string.Format(CultureInfo.InvariantCulture.NumberFormat, "{0}, {1}, {2}, {3}", envelope.MinX, envelope.MinY, envelope.MaxX, envelope.MaxY));
        }
        public virtual void StringRelate()
        {
            IList results = session.CreateCriteria(typeof(NtsTestCase))
                            .Add(Restrictions.Eq("Operation", "Relate"))
                            .SetProjection(Projections.ProjectionList()
                                           .Add(Projections.Property("Description"))
                                           .Add(Projections.Property("RelatePattern"))
                                           .Add(SpatialProjections.Relate("GeometryA", "GeometryB"))
                                           )
                            .List();

            Assert.Greater(results.Count, 0);

            foreach (object[] result in results)
            {
                string description = (string)result[0];
                string expected    = (string)result[1];
                string operation   = (string)result[2];

                Assert.AreEqual(expected, operation);
            }
        }