/// <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);