在多边形的数据帧中循环会给出“ValueError:LinearRing必须至少有3个坐标元组”

2024-04-25 00:26:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个芝加哥社区的数据框和它们各自的多边形

    Neighborhood    Polygons    Polygons_tup
0   Grand Boulevard [[[-87.60670812560363, 41.81681377137387], [-8...   [(-87.60670812560363, 41.81681377137387), (-87...
1   Printers Row    [[[-87.62760697485339, 41.87437097785366], [-8...   [(-87.62760697485339, 41.87437097785366), (-87...
2   United Center   [[[-87.66706868914592, 41.88885187769542], [-8...   [(-87.66706868914592, 41.88885187769542), (-87...
3   Sheffield & DePaul  [[[-87.65833494805524, 41.921661442291786], [-...   [(-87.65833494805524, 41.921661442291786), (-8...
4   Humboldt Park   [[[-87.74059567509258, 41.88782316893226], [-8...   [(-87.74059567509258, 41.88782316893226), (-87...

我要做的是,对于任何给定的纬度,经度点,我想在所有的多边形中循环,看看这个点是否在这些邻域中。你知道吗

我尝试使用for循环遍历数据帧

def neighbor_finder(long,lat):
    for index,row in df_new.iterrows():
        poly = row['Polygons_tup']
        polygon = Polygon(poly)
        point = Point(lat, long)
        if polygon.contains(point):
            neighborhood = row['Neighborhood']
            print(neighborhood)

我本以为邻居的名字会被打印出来,但当我跑的时候

long = -87.723960
lat = 41.825320
neighbor_finder(long, lat)

相反,我收到了一个错误

A LinearRing must have at least 3 coordinate tuples

我的for循环有问题吗?你知道吗


Tags: 数据forfinder多边形longrowpointlat