コード例 #1
0
def get_h_line(
    pts0: MultiPoint,
    pts1: MultiPoint,
) -> LineString:
    if isinstance(pts1, Point):
        pts1 = MultiPoint([pts1])
    if isinstance(pts0, Point):
        pts0 = MultiPoint([pts0])

    eps = 1e-6
    hdist = pts0.hausdorff_distance(pts1)
    ls = []

    for p0 in pts0:
        d = p0.distance(pts1)
        if abs(d - hdist) < eps:
            #return LineString(nearest_points(p0,pts1))
            ls.append(LineString(nearest_points(p0, pts1)))
    for p1 in pts1:
        d = p1.distance(pts0)
        if abs(d - hdist) < eps:
            #return LineString(nearest_points(p0,pts1))
            ls.append(LineString(nearest_points(p1, pts0)))

    return MultiLineString(ls)