示例#1
0
        /// <summary>
        /// Returns SQL Server spatial expression
        /// </summary>
        /// <param name="spatialExpression">Spatial expression</param>
        /// <returns>SQL Server expression</returns>
        protected override string GetSpatialExpression(ISqlConditionSpatialExpression spatialExpression)
        {
            switch (spatialExpression)
            {
            case ISqlConditionOverlaps overlaps:
                return($"{GetQuotedIdentifier(overlaps.Column)}.STOverlaps(geometry::STGeomFromText('{geometryToSqlServer.GeometryToSqlServerString(overlaps.Geometry)}',0))=1");

            case ISqlConditionIntersects intersects:
                return($"{GetQuotedIdentifier(intersects.Column)}.STIntersects(geometry::STGeomFromText('{geometryToSqlServer.GeometryToSqlServerString(intersects.Geometry)}',0))=1");

            default:
                throw new NotImplementedException($"{GetType().Name} cannot convert the spatial expression of type {spatialExpression.GetType().Name} to SQL string expression");
            }
        }
        /// <summary>
        /// Returns Oracle SQL spatial expression
        /// </summary>
        /// <param name="spatialExpression">Spatial expression</param>
        /// <returns>Oracle SQL expression</returns>
        protected override string GetSpatialExpression(ISqlConditionSpatialExpression spatialExpression)
        {
            switch (spatialExpression)
            {
            case ISqlConditionOverlaps overlaps:
                return($"SDO_OVERLAPS({GetQuotedIdentifier(overlaps.Column)}, {geometryToOracle.GeometryToString(overlaps.Geometry)}) = 'TRUE'");

            case ISqlConditionIntersects intersects:
                return($"SDO_ANYINTERACT({GetQuotedIdentifier(intersects.Column)}, {geometryToOracle.GeometryToString(intersects.Geometry)}) = 'TRUE'");

            default:
                throw new NotImplementedException($"{GetType().Name} cannot convert the spatial expression of type {spatialExpression.GetType().Name} to SQL string expression");
            }
        }
 /// <summary>
 /// Creates a RDBMS specific spatial expression.
 /// </summary>
 /// <param name="spatialExpression">Soatuak exoressuib</param>
 /// <returns>RDBMS specific SQL expression</returns>
 protected abstract string GetSpatialExpression(ISqlConditionSpatialExpression spatialExpression);