def METHOD_NAME(filename):
    """
    The cmp data is a 2D grid, but the pixel sizes are
    not constant (according to the lon and lat arrays.
    Will store as a Table and remove invalid data.
    """
    src = open(filename, "rb")
    nx = numpy.fromfile(src, dtype="int32", count=1)[0]
    ny = numpy.fromfile(src, dtype="int32", count=1)[0]
    lon = numpy.fromfile(src, dtype="float32", count=nx)
    lat = numpy.fromfile(src, dtype="float32", count=ny)
    aot = numpy.fromfile(src, dtype="float32", count=nx * ny)
    obs_lon = []
    obs_lat = []
    for j in range(ny):
        for i in range(nx):
            obs_lon.append(lon[i])
            obs_lat.append(lat[j])
    df = pandas.DataFrame({"lon": obs_lon, "lat": obs_lat, "aerosol": aot})
    # throw away bad data
    wh = (df["aerosol"] > 0.0) & (df["aerosol"] <= 1.0)
    df = df[wh]
    df.reset_index(inplace=True, drop=True)
    # get the minimum bounding box
    ul = (df["lon"].min(), df["lat"].max())
    ur = (df["lon"].max(), df["lat"].max())
    lr = (df["lon"].max(), df["lat"].min())
    ll = (df["lon"].min(), df["lat"].min())
    extents = Polygon([ul, ur, lr, ll])
    return df, extents