def findPolygon(in_data, in_point):
    """
    Find the polygon that a point resides in

    @param in_data: Input data containing polygons as read in by parseBasemapShape
    @param in_point: Shapely point

    @return: Index of shape in in_data that contains in_point
    """
    result_num = None
    for index, data in enumerate(in_data):
        if data['polygon'].contains(in_point):
            if result_num == None:
                result_num = index
            else:
                raise RuntimeError('Multiple polygons contains point')
    if result_num == None:
        return -1
    return result_num
