Я пытаюсь найти, где ломаная пересекает полиномы. Мои полиномы хранятся в GeoPandasFrame
. Это сделано без проблем, но поскольку функция фигурных пересечений сортирует результаты, я проверяю точку начала координат, используя опцию Geo pandas includes. И вот проблема: когда я переворачиваю список вывода, моя функция начинает выполнять итерации. Пожалуйста, объясните, почему и как решить.
Мой код:
def TaxZoneCross(tz, pl):
' function returns the Tax Zones order numbers which being crossed'
print('starting cross')
cross = [ii for ii, poly in zip(tz.index, tz.geometry) if pl.crosses(poly)[1]]
'check if should be reversed'
#set_trace()
cr_first = tax_zones.contains(Point(pl.geometry[0].coords[0]))
print(cr_first)
#if cr_first[cr_first].index.tolist()[0] != cross[0]:
#cross.reverse()
crs = cross
return crs
Результат:
0%| | 0/3 [00:00<?, ?it/s]
starting cross
[1, 7]
67%|████████████████████████████████████████████████████████ | 2/3 [00:01<00:00, 1.94it/s]
starting cross
[1, 2]
100%|████████████████████████████████████████████████████████████████████████████████████| 3/3 [00:02<00:00, 1.38it/s]
starting cross
[1, 2, 7]
HOORAY
100%|████████████████████████████████████████████████████████████████████████████████████| 3/3 [00:03<00:00, 1.02s/it]][1]
Но как только я добавлю условное условие с Reverse ot [::-1]
, Я получаю функцию зацикливания:
def TaxZoneCross(tz, pl):
' function returns the Tax Zones order numbers which being crossed'
print('starting cross')
cross = [ii for ii, poly in zip(tz.index, tz.geometry) if pl.crosses(poly)[1]]
'check if should be reversed'
#set_trace()
cr_first = tax_zones.contains(Point(pl.geometry[0].coords[0]))
#print(cr_first)
if cr_first[cr_first].index.tolist()[0] != cross[0]:
cross.reverse()
crs = cross
return crs
Результат:
0%| | 0/3 [00:00<?, ?it/s]
starting cross
[1, 7]
HOORAY
67%|████████████████████████████████████████████████████████ | 2/3 [00:00<00:00, 2.18it/s]
starting cross
[1, 2]
HOORAY
100%|████████████████████████████████████████████████████████████████████████████████████| 3/3 [00:01<00:00, 1.73it/s]
starting cross
[7, 2, 1]
HOORAY
starting cross
[1, 7]
HOORAY
starting cross
[1, 2]
HOORAY
starting cross
[7, 2, 1]
HOORAY
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-46-85cfbf7694cf> in <module>()
1 tqdm.pandas()
----> 2 result = route.progress_apply(lambda row: Main(row, tax_zones), axis = 1)
3
4 iterables = [['tz_0', 'tz_1', 'tz_2', 'tz_3', 'tz_4', 'tz_5', 'tz_6', 'tz_7'],
5 ['distance.text', 'distance.value', 'duration.text', 'duration.value', 'end_address',
c:\users\vnemanov106591\documents\python_3.6\lib\site-packages\tqdm\std.py in inner(df, func, *args, **kwargs)
751 # Apply the provided function (in **kwargs)
752 # on the df using our wrapper (which provides bar updating)
--> 753 result = getattr(df, df_function)(wrapper, **kwargs)
754
755 # Close bar and return pandas calculation result