Octree octree = queryObjectProvider.getBimServer().getGeometryAccellerator().getOctree(roids, exludeStrings, tiles.getGeometryIdsToReuse(), tiles.getMaxDepth(), tiles.getMinimumThreshold(), tiles.getMaximumThreshold()); tiles.setTilingInterface(octree.getTilingImplementation());
@Override public void queryOids(List<Long> oids, List<Long> oidsFiltered, long croid, EClass eClass, Tiles tiles) { if (tiles.getTileIds().size() > 1) { throw new NotImplementedException("Only one tile id supported in this method"); queries.add(QueryFactory.equal(ECLASS, eClass)); if (tiles.getTileIds().contains(0) && tiles.getMaxDepth() == 0) { Integer tileId = tiles.getTileIds().iterator().next(); if (level < tiles.getMaxDepth()) { queries.add(QueryFactory.equal(TILE_ID, tileId)); } else if (level > tiles.getMaxDepth()) { LOGGER.info("Not cool"); } else { if (tiles.getMaximumThreshold() != -1 && tiles.getMinimumThreshold() != -1) { queries.add(QueryFactory.between(DENSITY, tiles.getMinimumThreshold(), false, tiles.getMaximumThreshold(), true)); } else { if (tiles.getMaximumThreshold() != -1) { queries.add(QueryFactory.lessThanOrEqualTo(DENSITY, tiles.getMaximumThreshold())); if (tiles.getMinimumThreshold() != -1) { queries.add(QueryFactory.greaterThan(DENSITY, tiles.getMinimumThreshold())); QueryFactory.applyThresholds(QueryFactory.threshold(EngineThresholds.INDEX_ORDERING_SELECTIVITY, 1.0)))); for (GeometryObject geometryObject : retrieve) { if (tiles.getMinimumReuseThreshold() != -1 && tiles.getMinimumReuseThreshold() <= geometryObject.getSaveableTriangles()) {
Tiles tiles = new Tiles(); ObjectNode tilesNode = (ObjectNode) objectNode.get("tiles"); ArrayNode tileIdsNode = (ArrayNode) tilesNode.get("ids"); for (JsonNode jsonNode : tileIdsNode) { tiles.add(jsonNode.asInt()); tiles.setMinimumThreshold((float) tilesNode.get("densityUpperThreshold").asDouble()); tiles.setMaximumThreshold((float) tilesNode.get("densityLowerThreshold").asDouble()); tiles.setMinimumReuseThreshold(tilesNode.get("reuseLowerThreshold").asInt()); tiles.addGeometryIdToReuse(node.asLong()); tiles.setMaxDepth(tilesNode.get("maxDepth").asInt());
List<Long> oidsFiltered = new ArrayList<>(); tiles.getTilingInterface().queryOids(oids, oidsFiltered, reusable.getCroid(), null, tiles);