private Boolean inGeometryFilter(FeatureDataRow feature) { if (_viewDefinition == null || _viewDefinition.SpatialPredicate == null) { return(true); } SpatialBinaryExpression spatialQueryExpression = _viewDefinition.SpatialPredicate; SpatialOperation op = spatialQueryExpression.Op; GeometryExpression geometryExpression = spatialQueryExpression.SpatialExpression as GeometryExpression; ExtentsExpression extentsExpression = spatialQueryExpression.SpatialExpression as ExtentsExpression; if (!SpatialExpression.IsNullOrEmpty(geometryExpression)) { return(SpatialBinaryExpression.IsMatch(op, spatialQueryExpression.IsSpatialExpressionLeft, geometryExpression.Geometry, feature.Geometry)); } if (!SpatialExpression.IsNullOrEmpty(extentsExpression)) { return(SpatialBinaryExpression.IsMatch(op, spatialQueryExpression.IsSpatialExpressionLeft, extentsExpression.Extents, feature.Extents)); } return(true); }
static IList FilterPolygonFeature(ISessionFactory sessionFactory) { using (ISession session = sessionFactory.OpenSession()) { return(session.CreateCriteria(typeof(PolygonFeature)) .Add(SpatialExpression.Filter("Geometry", new Envelope(0, 0, 10, 10), -1)) .List()); } }
public virtual IEnumerable <TItem> Query(SpatialExpression spatialExpression) { GeometryExpression geometryExpression = spatialExpression as GeometryExpression; ExtentsExpression extentsExpression = spatialExpression as ExtentsExpression; IGeometry geometry = geometryExpression != null ? geometryExpression.Geometry : null; IExtents extents = extentsExpression != null ? extentsExpression.Extents : geometry.Extents; return(geometry == null ? Query(extents) : Query(geometry)); }
public override Boolean Equals(SpatialExpression other) { GeometryExpression geometryExpression = other as GeometryExpression; return geometryExpression != null && Equals(_geometry, geometryExpression._geometry); }
public override Boolean Equals(SpatialExpression other) { ExtentsExpression extentsExpression = other as ExtentsExpression; return extentsExpression != null && Equals(_extents, extentsExpression._extents); }
public IEnumerable <UInt32> ExecuteOidQuery(SpatialBinaryExpression query) { if (query == null) { throw new ArgumentNullException("query"); } SpatialExpression spatialExpression = query.SpatialExpression; if (SpatialExpression.IsNullOrEmpty(spatialExpression)) { yield break; } if (query.Expression == null) { throw new ArgumentException("The SpatialQueryExpression must have " + "a non-null Expression."); } ExtentsExpression extentsExpression = spatialExpression as ExtentsExpression; GeometryExpression geometryExpression = spatialExpression as GeometryExpression; IExtents filterExtents = extentsExpression != null ? extentsExpression.Extents : null; IGeometry filterGeometry = geometryExpression != null ? geometryExpression.Geometry : null; Assert.IsTrue(filterExtents != null || filterGeometry != null); Boolean isLeft = query.IsSpatialExpressionLeft; SpatialOperation op = query.Op; LayerExpression layerExpression = query.Expression as LayerExpression; if (layerExpression != null) { for (UInt32 i = 0; i < _geometries.Count; i++) { if (isGeometryAtIndexAMatch((Int32)i, op, isLeft, filterGeometry)) { yield return(i); } } yield break; } OidCollectionExpression oidsCollection = query.Expression as OidCollectionExpression; if (oidsCollection != null) { if (oidsCollection.Right == null) { throw new ArgumentException("The OidCollectionExpression in the query " + "has a null collection"); } IEnumerable oids = oidsCollection.Right.Collection; if (oids == null) { yield break; } foreach (Object oid in oids) { if (isGeometryAtIndexAMatch((Int32)oid, op, isLeft, filterGeometry)) { yield return((UInt32)oid); } } yield break; } }