/** * Constructs a circle from a given center point and a radius in kilometer * @param latitude * @param longitude * @param radiusInKM * @return */ public static Geoshape circle(final double latitude, final double longitude, final double radiusInKM) { Preconditions.checkArgument(isValidCoordinate(latitude, longitude), "Invalid coordinate provided"); Preconditions.checkArgument(radiusInKM > 0, "Invalid radius provided [%s]", radiusInKM); return new Geoshape(getShapeFactory().circle(longitude, latitude, DistanceUtils.dist2Degrees(radiusInKM, DistanceUtils.EARTH_MEAN_RADIUS_KM))); }
/** Construct a circle. The units of "distance" should be the same as x & y. */ @Deprecated public Circle makeCircle(double x, double y, double distance) { return shapeFactory.circle(x, y, distance); }
/** Construct a circle. The units of "distance" should be the same as x & y. */ @Deprecated public Circle makeCircle(Point point, double distance) { return shapeFactory.circle(point, distance); }
protected Circle readCircle(JSONParser parser) throws IOException, ParseException { assert (parser.lastEvent() == JSONParser.ARRAY_START); OnePointsBuilder onePointsBuilder = new OnePointsBuilder(shapeFactory); readCoordXYZ(parser, onePointsBuilder); Point point = onePointsBuilder.getPoint(); return shapeFactory.circle(point, readDistance("radius", "radius_units", parser)); }
return factory.circle(readPoint(arr, factory), radius);
throw new IllegalArgumentException("the input should have a radius argument"); lastShape = shpFactory.circle(shpFactory.normX(reader.readLat()), shpFactory.normY(reader.readLng()), shpFactory.normDist(arg.doubleValue())); break;
@Override public Rectangle calcBoxByDistFromPt(Point from, double distDEG, SpatialContext ctx, Rectangle reuse) { Circle circle = ctx.getShapeFactory().circle(from, distDEG); return circle.getBoundingBox(); }
@Override public Shape getBuffered(double distance, SpatialContext spatialContext) { return spatialContext.getShapeFactory().circle(getX(), getY(), distance); }
@Override protected Iterable<? extends DocumentDistance> geoQuery(final IRI geoProperty, Point p, final IRI units, double distance, String distanceVar, Var contextVar) throws MalformedQueryException, IOException { double degs = GeoUnits.toDegrees(distance, units); final String geoField = SearchFields.getPropertyField(geoProperty); SpatialStrategy strategy = getSpatialStrategyMapper().apply(geoField); final Shape boundingCircle = strategy.getSpatialContext().getShapeFactory().circle(p, degs); Query q = strategy.makeQuery(new SpatialArgs(SpatialOperation.Intersects, boundingCircle)); if (contextVar != null) { q = addContextTerm(q, (Resource)contextVar.getValue()); } TopDocs docs = search( new FunctionScoreQuery(q, strategy.makeRecipDistanceValueSource(boundingCircle))); final boolean requireContext = (contextVar != null && !contextVar.hasValue()); return Iterables.transform(Arrays.asList(docs.scoreDocs), new Function<ScoreDoc, DocumentDistance>() { @Override public DocumentDistance apply(ScoreDoc doc) { return new LuceneDocumentDistance(doc, geoField, units, boundingCircle.getCenter(), requireContext, LuceneIndex.this); } }); }