/// <summary> /// Constructor /// </summary> /// <param name="xvals">array of x coordinate values for docid</param> /// <param name="yvals">array of y coordinate values for docid</param> /// <param name="zvals">array of z coordinate values for docid</param> /// <param name="lat">target latitude</param> /// <param name="lon">target longitude</param> /// <param name="radius">target radius</param> /// <param name="maxdoc">max doc in the docid set</param> /// <param name="miles">variable to specify if the geo distance calculations are in miles. /// False indicates distance calculation is in kilometers</param> internal GeoDocIdSet(BigFloatArray xvals, BigFloatArray yvals, BigFloatArray zvals, float lat, float lon, float radius, int maxdoc, bool miles) { _xvals = xvals; _yvals = yvals; _zvals = zvals; _miles = miles; if (_miles) _radius = GeoMatchUtil.GetMilesRadiusCosine(radius); else _radius = GeoMatchUtil.GetKMRadiusCosine(radius); float[] coords = GeoMatchUtil.GeoMatchCoordsFromDegrees(lat, lon); _targetX = coords[0]; _targetY = coords[1]; _targetZ = coords[2]; if (_miles) _delta = (float)(radius / GeoMatchUtil.EARTH_RADIUS_MILES); else _delta = (float)(radius / GeoMatchUtil.EARTH_RADIUS_KM); _maxDoc = maxdoc; }
/// <summary> /// Constructor /// </summary> /// <param name="name">name of the Geo Facet</param> /// <param name="dataCache">The data cache for the Geo Facet</param> /// <param name="docBase">the base doc id</param> /// <param name="fspec">the facet spec for this facet</param> /// <param name="predefinedRanges">List of ranges, where each range looks like <lat, lon: rad></param> /// <param name="miles">variable to specify if the geo distance calculations are in miles. False indicates distance calculation is in kilometers</param> public GeoFacetCountCollector(string name, GeoFacetHandler.GeoFacetData dataCache, int docBase, FacetSpec fspec, IEnumerable<string> predefinedRanges, bool miles) { _name = name; _dataCache = dataCache; _xvals = dataCache.xValArray; _yvals = dataCache.yValArray; _zvals = dataCache.zValArray; _spec = fspec; _predefinedRanges = new TermStringList(); var predefinedTemp = new List<string>(predefinedRanges); predefinedTemp.Sort(); _predefinedRanges.AddAll(predefinedTemp); _docBase = docBase; _countlength = predefinedTemp.Count; _count = new LazyBigIntArray(_countlength); _ranges = new GeoRange[predefinedTemp.Count]; int index = 0; foreach (string range in predefinedTemp) { _ranges[index++] = Parse(range); } _miles = miles; }
internal GeoDocIdSetIterator(BigFloatArray xvals, BigFloatArray yvals, BigFloatArray zvals, float targetX, float targetY, float targetZ, float delta, float radiusCosine, int maxdoc) { _xvals = xvals; _yvals = yvals; _zvals = zvals; _targetX = targetX; _targetY = targetY; _targetZ = targetZ; _delta = delta; _radius = radiusCosine; _maxDoc = maxdoc; _doc = -1; }