public static GeoPoint randomPointIn( Random r, final double minLon, final double minLat, final double maxLon, final double maxLat) { double[] pt = new double[2]; randomPointIn(r, minLon, minLat, maxLon, maxLat, pt); return new GeoPoint(pt[1], pt[0]); }
@Override protected GeoDistanceRangeQueryBuilder doCreateTestQueryBuilder() { GeoDistanceRangeQueryBuilder builder; GeoPoint randomPoint = RandomGeoGenerator.randomPointIn(random(), -180.0, -89.9, 180.0, 89.9); if (randomBoolean()) { builder = new GeoDistanceRangeQueryBuilder(GEO_POINT_FIELD_NAME, randomPoint.geohash()); } else { if (randomBoolean()) { builder = new GeoDistanceRangeQueryBuilder(GEO_POINT_FIELD_NAME, randomPoint); } else { builder = new GeoDistanceRangeQueryBuilder( GEO_POINT_FIELD_NAME, randomPoint.lat(), randomPoint.lon()); } } GeoPoint point = builder.point(); final double maxRadius = GeoUtils.maxRadialDistanceMeters(point.lat(), point.lon()); final int fromValueMeters = randomInt((int) (maxRadius * 0.5)); final int toValueMeters = randomIntBetween(fromValueMeters + 1, (int) maxRadius); DistanceUnit fromToUnits = randomFrom(DistanceUnit.values()); final String fromToUnitsStr = fromToUnits.toString(); final double fromValue = DistanceUnit.convert(fromValueMeters, DistanceUnit.DEFAULT, fromToUnits); final double toValue = DistanceUnit.convert(toValueMeters, DistanceUnit.DEFAULT, fromToUnits); if (randomBoolean()) { int branch = randomInt(2); fromToUnits = DistanceUnit.DEFAULT; switch (branch) { case 0: builder.from(fromValueMeters); break; case 1: builder.to(toValueMeters); break; case 2: builder.from(fromValueMeters); builder.to(toValueMeters); break; } } else { int branch = randomInt(2); switch (branch) { case 0: builder.from(fromValue + fromToUnitsStr); break; case 1: builder.to(toValue + fromToUnitsStr); break; case 2: builder.from(fromValue + fromToUnitsStr); builder.to(toValue + fromToUnitsStr); break; } } if (randomBoolean()) { builder.includeLower(randomBoolean()); } if (randomBoolean()) { builder.includeUpper(randomBoolean()); } if (randomBoolean()) { builder.geoDistance(randomFrom(GeoDistance.values())); } builder.unit(fromToUnits); if (randomBoolean()) { builder.setValidationMethod(randomFrom(GeoValidationMethod.values())); } if (randomBoolean()) { builder.ignoreUnmapped(randomBoolean()); } return builder; }
public static void randomPoint(Random r, double[] pt) { final double[] min = {-180, -90}; final double[] max = {180, 90}; randomPointIn(r, min[0], min[1], max[0], max[1], pt); }