@Override
            public ParquetFeature next() {
              if (!hasNext()) {
                throw new NoSuchElementException();
              }
              i++;

              var item = recordReader.read();

              if (item == null) {
                return null;
              }

              if (extraFields != null) {
                item.putAll(extraFields);
              }

              var feature = new ParquetFeature(
                source,
                layer,
                idGenerator != null ? idGenerator.applyAsLong(item) :
                  Hashing.fnv1a64(blockHash, ByteBuffer.allocate(8).putLong(i).array()),
                geometryReader,
                item,
                path,
                schema
              );

              if (postFilterBounds != null) {
                try {
                  if (!feature.latLonGeometry().getEnvelopeInternal().intersects(postFilterBounds)) {
                    return null;
                  }
                } catch (GeometryException e) {
                  LOGGER.warn("Error reading geometry to post-filter bounds", e);
                  return null;
                }
              }

              return feature;
            }
Reads {@link SourceFeature SourceFeatures} from a single
<a href="https://github.com/opengeospatial/geoparquet/blob/main/format-specs/geoparquet.md">geoparquet</a> file.
planetiler-core/src/main/java/com/onthegomap/planetiler/reader/parquet/ParquetInputFile.java