ui/src/main/java/ucar/nc2/ui/gis/shapefile/EsriShapefile.java
public List<EsriFeature> getFeatures(Rectangle2D bBox) {
    if (bBox == null)
      return features;

    List<EsriFeature> list = new ArrayList<>();
    for (EsriFeature gf : features) {
      if (gf.getBounds2D().intersects(bBox))
        list.add(gf);
    }
    return list;
  }
public List<EsriFeature> getFeatures(Rectangle2D bBox) {
    if (bBox == null)
      return features;

    List<EsriFeature> list = new ArrayList<>();
    for (EsriFeature gf : features) {
      if (gf.getBounds2D().intersects(bBox))
        list.add(gf);
    }
    return list;
  }
Get a List of all the features in the shapefile that intersect
the specified bounding box.  This requires testing every
feature in the List created at construction, so it's faster to
just give a bounding box o the constructor if you will only do
this once.

@param bBox specifying the bounding box with which all
the returned features bounding boxes have a non-empty
intersection.
@return a new list of features in the shapefile whose bounding
boxes intersect the specified bounding box.