@Override
  public void accept(FeatureCollector.Feature feature) {
    var geometry = feature.getGeometry();
    double simpleLineLength =
      geometry instanceof Lineal && geometry.getNumGeometries() == 1 ? geometry.getLength() : -1;
    if (geometry.isEmpty()) {
      LOGGER.warn("Empty geometry {}", feature);
      return;
    }
    // geometries are filtered by min size after processing before they are emitted, but do cheap pre-filtering here
    // to avoid processing features that won't emit anything
    for (int zoom = feature.getMaxZoom(); zoom >= feature.getMinZoom(); zoom--) {
      double scale = 1 << zoom;
      double minSize = feature.getMinPixelSizeAtZoom(zoom);
      if (feature.hasLinearRanges()) {
        double length = simpleLineLength * scale * 256;
        for (var range : feature.getLinearRangesAtZoom(zoom)) {
          if (minSize > 0 && length * (range.end() - range.start()) > minSize) {
            accept(zoom, range.geom(), range.attrs(), feature);
          }
        }
      } else {
        if (minSize > 0) {
          if (geometry instanceof Puntal) {
            if (feature.getSourceFeaturePixelSizeAtZoom(zoom) < minSize) {
              // don't emit points if the line or polygon feature it came from was too small
              continue;
            }
          } else if (simpleLineLength >= 0 && simpleLineLength * scale * 256 < minSize) {
            // skip processing lines that are too short
            continue;
          }
        }
        accept(zoom, geometry, feature.getAttrsAtZoom(zoom), feature);
      }
    }
  }
Constructs a new feature render that will send rendered features to {@code consumer}.
planetiler-core/src/main/java/com/onthegomap/planetiler/render/FeatureRenderer.java