void TileWorker::addBucketGeometries(Bucket& bucket, const GeometryTileLayer& layer, const FilterExpression &filter) { for (std::size_t i = 0; i < layer.featureCount(); i++) { auto feature = layer.getFeature(i); if (state == TileData::State::obsolete) return; GeometryTileFeatureExtractor extractor(*feature); if (!evaluate(filter, extractor)) continue; bucket->addGeometry(feature->getGeometries()); } }
void TileParser::addBucketGeometries(Bucket& bucket, const VectorTileLayer& layer, const FilterExpression &filter) { FilteredVectorTileLayer filtered_layer(layer, filter); for (pbf feature : filtered_layer) { if (obsolete()) return; while (feature.next(4)) { // geometry pbf geometry_pbf = feature.message(); if (geometry_pbf) { bucket->addGeometry(geometry_pbf); } else if (debug::tileParseWarnings) { fprintf(stderr, "[WARNING] geometry is empty\n"); } } } }