def METHOD_NAME(point_data, num_points):
    import numpy as np
    features = []
    for i in range(num_points):
        x = float(point_data['lon'][i])
        y = float(point_data['lat'][i])
        properties = {}
        for k, v in point_data.items():
            if k in {'lon', 'lat'}:
                continue
            value = v[i]
            if np.issubdtype(value.dtype, np.floating):
                value = float(value)
            elif np.issubdtype(value.dtype, np.datetime64):
                value = str(value)
            else:
                value = int(value)
            properties[k] = value
        features.append({
            "type": "Feature",
            "id": i,
            "geometry": {
                "type": "Point",
                "coordinates": (x, y),
            },
            "properties": properties,
        })
    return {
        "type": "FeatureCollection",
        "features": features
    }