,可以通过以下步骤实现:
以下是一个示例代码:
from shapely.geometry import Point, Polygon
import pandas as pd
# 定义多边形的几何形状和名称
polygons = [
{
'name': 'Polygon A',
'coordinates': [(0, 0), (0, 10), (10, 10), (10, 0)]
},
{
'name': 'Polygon B',
'coordinates': [(10, 0), (10, 10), (20, 10), (20, 0)]
},
{
'name': 'Polygon C',
'coordinates': [(0, 10), (0, 20), (10, 20), (10, 10)]
}
]
# 创建多边形对象
polygons_objs = []
for polygon in polygons:
polygon_obj = Polygon(polygon['coordinates'])
polygons_objs.append(polygon_obj)
# 创建示例数据框
data = {
'x': [5, 15, 5],
'y': [5, 5, 15]
}
df = pd.DataFrame(data)
# 定义函数来确定点位于哪个多边形中
def get_polygon_name(row):
point = Point(row['x'], row['y'])
for i, polygon_obj in enumerate(polygons_objs):
if polygon_obj.contains(point):
return polygons[i]['name']
return None
# 应用函数并将多边形名称作为新列应用于数据框
df['polygon_name'] = df.apply(get_polygon_name, axis=1)
print(df)
输出结果如下:
x y polygon_name
0 5 5 Polygon A
1 15 5 Polygon B
2 5 15 Polygon C
在这个示例中,我们定义了三个多边形(A、B、C),每个多边形都有一个名称。然后,我们创建了一个包含三个点的数据框,每个点都有x和y坐标。通过遍历数据框中的每个点,并使用Shapely库的contains方法检查点是否位于多边形中,我们确定了每个点所在的多边形,并将多边形的名称作为新列应用于数据框。最后,我们打印出数据框,显示了每个点所在的多边形名称。
领取专属 10元无门槛券
手把手带您无忧上云