List of usage examples for org.apache.lucene.spatial.prefix.tree QuadPrefixTree DEFAULT_MAX_LEVELS
int DEFAULT_MAX_LEVELS
To view the source code for org.apache.lucene.spatial.prefix.tree QuadPrefixTree DEFAULT_MAX_LEVELS.
Click Source Link
From source file:org.elasticsearch.index.search.geo.GeoUtilsTests.java
License:Apache License
@Test public void testPrefixTreeCellSizes() { assertThat(GeoUtils.EARTH_SEMI_MAJOR_AXIS, equalTo(DistanceUtils.EARTH_EQUATORIAL_RADIUS_KM * 1000)); assertThat(GeoUtils.quadTreeCellWidth(0), lessThanOrEqualTo(GeoUtils.EARTH_EQUATOR)); SpatialContext spatialContext = new SpatialContext(true); GeohashPrefixTree geohashPrefixTree = new GeohashPrefixTree(spatialContext, GeohashPrefixTree.getMaxLevelsPossible() / 2); Cell gNode = geohashPrefixTree.getWorldCell(); for (int i = 0; i < geohashPrefixTree.getMaxLevels(); i++) { double width = GeoUtils.geoHashCellWidth(i); double height = GeoUtils.geoHashCellHeight(i); double size = GeoUtils.geoHashCellSize(i); double degrees = 360.0 * width / GeoUtils.EARTH_EQUATOR; int level = GeoUtils.quadTreeLevelsForPrecision(size); assertThat(GeoUtils.quadTreeCellWidth(level), lessThanOrEqualTo(width)); assertThat(GeoUtils.quadTreeCellHeight(level), lessThanOrEqualTo(height)); assertThat(GeoUtils.geoHashLevelsForPrecision(size), equalTo(geohashPrefixTree.getLevelForDistance(degrees))); assertThat("width at level " + i, gNode.getShape().getBoundingBox().getWidth(), equalTo(360.d * width / GeoUtils.EARTH_EQUATOR)); assertThat("height at level " + i, gNode.getShape().getBoundingBox().getHeight(), equalTo(180.d * height / GeoUtils.EARTH_POLAR_DISTANCE)); gNode = gNode.getSubCells(null).iterator().next(); }/*from w w w .j a v a 2 s.c o m*/ QuadPrefixTree quadPrefixTree = new QuadPrefixTree(spatialContext); Cell qNode = quadPrefixTree.getWorldCell(); for (int i = 0; i < QuadPrefixTree.DEFAULT_MAX_LEVELS; i++) { double degrees = 360.0 / (1L << i); double width = GeoUtils.quadTreeCellWidth(i); double height = GeoUtils.quadTreeCellHeight(i); double size = GeoUtils.quadTreeCellSize(i); int level = GeoUtils.quadTreeLevelsForPrecision(size); assertThat(GeoUtils.quadTreeCellWidth(level), lessThanOrEqualTo(width)); assertThat(GeoUtils.quadTreeCellHeight(level), lessThanOrEqualTo(height)); assertThat(GeoUtils.quadTreeLevelsForPrecision(size), equalTo(quadPrefixTree.getLevelForDistance(degrees))); assertThat("width at level " + i, qNode.getShape().getBoundingBox().getWidth(), equalTo(360.d * width / GeoUtils.EARTH_EQUATOR)); assertThat("height at level " + i, qNode.getShape().getBoundingBox().getHeight(), equalTo(180.d * height / GeoUtils.EARTH_POLAR_DISTANCE)); qNode = qNode.getSubCells(null).iterator().next(); } }