private double CalculateDistance(int doc, IState state) { var document = _currentIndexReader.Document(doc, state); if (document == null) { return(double.NaN); } var field = document.GetField(Constants.Documents.Indexing.Fields.SpatialShapeFieldName); if (field == null) { return(double.NaN); } var shapeAsText = field.StringValue(state); Shape shape; try { shape = _spatialField.ReadShape(shapeAsText); } catch (InvalidOperationException) { return(double.NaN); } var pt = shape as Point; if (pt == null) { pt = shape.GetCenter(); } return(_spatialField.GetContext().GetDistCalc().Distance(pt, _originPt)); }
public SpatialDistanceFieldComparator(SpatialField spatialField, Point origin, int numHits, double roundFactor) { _spatialField = spatialField; _values = new DistanceValue[numHits]; _originPt = origin; _isGeo = _spatialField.GetContext().IsGeo(); _roundFactor = roundFactor; }