Каждая x_poly представляет многоугольник, содержащий связку координат
polys = [gangnam_poly, mapo_poly, jamsil_poly, sungsoo_poly, pangyo_poly]
У меня есть координаты, где я хочу найти, где он находится, т.е. если он находится внутри одного из многоугольников.
Iиметь фрейм данных, который выглядит следующим образом:
id title count pt
0 1 place1 1864 POINT (167.036077 31.490958)
1 2 place2 6466 POINT (147.03103 33.491231)
2 3 place3 4652 POINT (117.030428 37.4925)
Следуя Назначить имена переменных и данные в цикле метод Если я делаю это в словаре вместо фрейма данных для простоты:
polys = [gangnam_poly, mapo_poly, jamsil_poly, sungsoo_poly, pangyo_poly]
data={}
for p in polys:
data[str(p)] = 1
print(data)
вывод:
{'POLYGON ((127.03302 37.53461, 127.05259 37.52834, 127.06658 37.52084, 127.0752 37.49484, 127.06503 37.49213, 127.02748 37.46701, 127.00611 37.49668, 127.01534 37.50047, 127.01405 37.51698, 127.0186 37.52776, 127.02375 37.53109, 127.03302 37.53461))': 1,
'POLYGON ((126.87833 37.5917, 126.93772 37.5823, 126.95755 37.57426, 126.93554 37.54098, 126.91026 37.54288, 126.844 37.58539, 126.87833 37.5917))': 1
Вместо полигона, хранящегося в нем, я хочу использовать его имя. поэтому
Желаемый вывод: {gangnam_poly: 1, mapo_poly: 1 и т. д.}}
Редактировать: Мое решение: Я имеюудалось сделать это путем создания другого списка с именами, который будет утомительным, так как список становится длиннее, поэтому должен быть более эффективный метод. До тех пор я застрял с этим.
polys = [gangnam_poly, mapo_poly, jamsil_poly, sungsoo_poly, pangyo_poly]
names = ["gangnam", "mapo", "jamsil", "sungsoo", "pangyo"]
for polygon,n in zip(polys, names):
nodes_df[n] = nodes_df.pt.apply(lambda p: polygon.intersects(p))