Пример #1
0
        /// <summary>
        /// Calculate and returns spatial formule
        /// </summary>
        /// <param name="fieldName">Field name</param>
        /// <param name="functionType">Function used in spatial filter</param>
        /// <param name="centerPoint">Center point to spatial filter</param>
        /// <param name="distance">Distance from center point</param>
        /// <returns>Spatial formule</returns>
        internal static string GetSpatialFormule(string fieldName, SpatialFunctionType functionType, GeoCoordinate centerPoint, decimal distance)
        {
            var functionTypeStr = functionType.ToString().ToLower();
            var latitude        = centerPoint.Latitude.ToString("G", CultureInfo.InvariantCulture);
            var longitude       = centerPoint.Longitude.ToString("G", CultureInfo.InvariantCulture);
            var distanceStr     = distance.ToString("G", CultureInfo.InvariantCulture);

            return($"{{!{functionTypeStr} sfield={fieldName} pt={latitude},{longitude} d={distanceStr}}}");
        }
        /// <summary>
        /// Create a spatial filter parameter
        /// </summary>
        /// <param name="documentSearch">Document search engine</param>
        /// <param name="conditional">Conditional to add parameter</param>
        /// <param name="fieldExpression">Expression used to find field name</param>
        /// <param name="functionType">Function used in spatial filter</param>
        /// <param name="centerPoint">Center point to spatial filter</param>
        /// <param name="distance">Distance from center point</param>
        /// <returns>Document search engine</returns>
        public static DocumentSearch <TDocument> SpatialFilterIf <TDocument>(this DocumentSearch <TDocument> documentSearch, Func <bool> conditional, Expression <Func <TDocument, object> > fieldExpression, GeoCoordinate centerPoint, decimal distance, SpatialFunctionType functionType = SpatialFunctionType.Bbox)
            where TDocument : Document
        {
            Checker.IsNull(conditional);

            if (conditional.Invoke())
            {
                documentSearch.SpatialFilter(fieldExpression, centerPoint, distance, functionType);
            }

            return(documentSearch);
        }
        /// <summary>
        /// Create a spatial filter parameter
        /// </summary>
        /// <param name="documentSearch">Document search engine</param>
        /// <param name="fieldExpression">Expression used to find field name</param>
        /// <param name="functionType">Function used in spatial filter</param>
        /// <param name="centerPoint">Center point to spatial filter</param>
        /// <param name="distance">Distance from center point</param>
        /// <returns>Document search engine</returns>
        public static DocumentSearch <TDocument> SpatialFilter <TDocument>(this DocumentSearch <TDocument> documentSearch, Expression <Func <TDocument, object> > fieldExpression, GeoCoordinate centerPoint, decimal distance, SpatialFunctionType functionType = SpatialFunctionType.Bbox)
            where TDocument : Document
        {
            var parameter = documentSearch.ServiceProvider.GetService <ISpatialFilterParameter <TDocument> >();

            parameter.FieldExpression(fieldExpression);
            parameter.FunctionType(functionType);
            parameter.CenterPoint(centerPoint);
            parameter.Distance(distance);

            documentSearch.Add(parameter);

            return(documentSearch);
        }
Пример #4
0
        /// <summary>
        /// Configure function used in spatial filter
        /// </summary>
        /// <param name="parameter">Parameter to configure</param>
        /// <param name="functionType">Function used in spatial filter</param>
        public static IFacetSpatialParameter <TDocument> FunctionType <TDocument>(this IFacetSpatialParameter <TDocument> parameter, SpatialFunctionType functionType)
            where TDocument : Document
        {
            parameter.FunctionType = functionType;

            return(parameter);
        }
Пример #5
0
        /// <summary>
        /// Configure function used in spatial filter
        /// </summary>
        /// <param name="parameter">Parameter to configure</param>
        /// <param name="value">Function used in spatial filter</param>
        public static ISpatialFilterParameter <TDocument> FunctionType <TDocument>(this ISpatialFilterParameter <TDocument> parameter, SpatialFunctionType value)
            where TDocument : Document
        {
            parameter.FunctionType = value;

            return(parameter);
        }