Ejemplo n.º 1
0
    def adjacency_test(country_geo1: Polygon, country_geo2: Polygon) -> bool:
        """Returns True if the two countries are adjacent. Takes adavantage of
        the properties of Polygons (shape library objects), which "know" if they
        intersect.

        """
        return not country_geo1.intersection(country_geo2).is_empty
Ejemplo n.º 2
0
def polygonoverlap(poly1, poly2):
    a = (poly1[0, 0], poly1[0, 1])
    b = (poly1[1, 0], poly1[1, 1])
    c = (poly1[2, 0], poly1[2, 1])
    d = (poly1[3, 0], poly1[3, 1])

    e = (poly2[0, 0], poly2[0, 1])
    f = (poly2[1, 0], poly2[1, 1])
    g = (poly2[2, 0], poly2[2, 1])
    h = (poly2[3, 0], poly2[3, 1])

    polygon1 = Polygon([a, b, c, d])
    polygon2 = Polygon([e, f, g, h])
    overlap = polygon1.intersection(polygon2)
    overlaparea = overlap.area
    points = np.asarray(overlap.exterior)
    return points
Ejemplo n.º 3
0
def PR_compare(objid, sampleNworkers=40):
    os.chdir("..")
    # worker_lst,tiles,indicatorMat= createObjIndicatorMatrix(objid,PRINT=True,sampleNworkers=sampleNworkers,tqdm_on=False,tile_only=False)
    worker_lst = pkl.load(
        open("{0}/worker{1}.pkl".format(DATA_DIR, objid), 'r'))
    tiles = pkl.load(open("{0}/tiles{1}.pkl".format(DATA_DIR, objid), 'r'))
    objIndicatorMat = pkl.load(
        open("{0}/indMat{1}.pkl".format(DATA_DIR, objid), 'r'))
    os.chdir(DATA_DIR)

    worker_precision_lst, worker_recall_lst = compute_worker_lst_PR_obj(
        objid, worker_lst)
    best_worker = np.argmax(worker_recall_lst)
    print "Best worker's PR against BBG: ", max(worker_precision_lst), max(
        worker_recall_lst)

    approved_tiles = np.where(indicatorMat[best_worker] == 1)[0]
    for tidx in approved_tiles:
        plot_coords(tiles[tidx], color="lime")

    bb_objects = bb_info[bb_info["object_id"] == objid]
    bb_objects = bb_objects[bb_objects.worker_id != 3]
    best_worker_id = worker_lst[best_worker]
    print best_worker_id
    worker_bb_info = bb_objects[bb_objects["worker_id"] == best_worker_id]
    worker_BB_polygon = Polygon(
        zip(*process_raw_locs([
            worker_bb_info["x_locs"].values[0],
            worker_bb_info["y_locs"].values[0]
        ])))  #.buffer(0)

    plot_coords(worker_BB_polygon, linestyle='--', color='#0000ff')

    joined_bb = join_tiles(approved_tiles, tiles)
    intersect_area = worker_BB_polygon.intersection(joined_bb).area
    precision = intersect_area / joined_bb.area
    recall = intersect_area / worker_BB_polygon.area
    print precision, recall
    return precision, recall