TurfMeasurement { public static BoundingBox square(@NonNull BoundingBox boundingBox) { double horizontalDistance = distance(boundingBox.southwest(), Point.fromLngLat(boundingBox.east(), boundingBox.south()) ); double verticalDistance = distance( Point.fromLngLat(boundingBox.west(), boundingBox.south()), Point.fromLngLat(boundingBox.west(), boundingBox.north()) ); if (horizontalDistance >= verticalDistance) { double verticalMidpoint = (boundingBox.south() + boundingBox.north()) / 2; return BoundingBox.fromLngLats( boundingBox.west(), verticalMidpoint - ((boundingBox.east() - boundingBox.west()) / 2), boundingBox.east(), verticalMidpoint + ((boundingBox.east() - boundingBox.west()) / 2) ); } else { double horizontalMidpoint = (boundingBox.west() + boundingBox.east()) / 2; return BoundingBox.fromLngLats( horizontalMidpoint - ((boundingBox.north() - boundingBox.south()) / 2), boundingBox.south(), horizontalMidpoint + ((boundingBox.north() - boundingBox.south()) / 2), boundingBox.north() ); } } private  TurfMeasurement(); static double bearing(@NonNull Point point1, @NonNull Point point2); @NonNull static Point destination(@NonNull Point point, @FloatRange(from = 0) double distance,
                                  @FloatRange(from = -180, to = 180) double bearing,
                                  @NonNull @TurfConstants.TurfUnitCriteria String units); static double distance(@NonNull Point point1, @NonNull Point point2); static double distance(@NonNull Point point1, @NonNull Point point2,
                                @NonNull @TurfConstants.TurfUnitCriteria String units); static double length(@NonNull LineString lineString,
                              @NonNull @TurfConstants.TurfUnitCriteria String units); static double length(@NonNull MultiLineString multiLineString,
                              @NonNull @TurfConstants.TurfUnitCriteria String units); static double length(@NonNull Polygon polygon,
                              @NonNull @TurfConstants.TurfUnitCriteria String units); static double length(@NonNull MultiPolygon multiPolygon,
                              @NonNull @TurfConstants.TurfUnitCriteria String units); static double length(List<Point> coords, String units); static Point midpoint(@NonNull Point from, @NonNull Point to); static Point along(@NonNull LineString line, @FloatRange(from = 0) double distance,
                            @NonNull @TurfConstants.TurfUnitCriteria String units); static Point along(@NonNull List<Point> coords, @FloatRange(from = 0) double distance,
                            @NonNull @TurfConstants.TurfUnitCriteria String units); static double[] bbox(@NonNull Point point); static double[] bbox(@NonNull LineString lineString); static double[] bbox(@NonNull MultiPoint multiPoint); static double[] bbox(@NonNull Polygon polygon); static double[] bbox(@NonNull MultiLineString multiLineString); static double[] bbox(MultiPolygon multiPolygon); static double[] bbox(GeoJson geoJson); static double[] bbox(FeatureCollection featureCollection); static double[] bbox(Feature feature); static double[] bbox(Geometry geometry); static Feature bboxPolygon(@NonNull BoundingBox boundingBox); static Feature bboxPolygon(@NonNull BoundingBox boundingBox,
                                    @Nullable JsonObject properties,
                                    @Nullable String id); static Feature bboxPolygon(@NonNull double[] bbox); static Feature bboxPolygon(@NonNull double[] bbox,
                                    @Nullable JsonObject properties,
                                    @Nullable String id); static Polygon envelope(GeoJson geoJson); static BoundingBox square(@NonNull BoundingBox boundingBox); static double area(@NonNull Feature feature); static double area(@NonNull FeatureCollection featureCollection); static double area(@NonNull Geometry geometry); static Feature center(Feature feature,
                               @Nullable JsonObject properties,
                               @Nullable String id); static Feature center(Feature feature); static Feature center(FeatureCollection featureCollection,
                               @Nullable JsonObject properties,
                               @Nullable String id); static Feature center(FeatureCollection featureCollection); static double EARTH_RADIUS; }
@Test public void square(){ BoundingBox bbox1 = BoundingBox.fromCoordinates(0, 0, 5, 10); BoundingBox bbox2 = BoundingBox.fromCoordinates(0, 0, 10, 5); BoundingBox sq1 = TurfMeasurement.square(bbox1); BoundingBox sq2 = TurfMeasurement.square(bbox2); assertEquals(BoundingBox.fromCoordinates(-2.5, 0, 7.5, 10), sq1); assertEquals(BoundingBox.fromCoordinates(0, -2.5, 10, 7.5), sq2); }