Такой код работает:
Код: Выделить всё
width_list = []
while y_init <= Y2:
x_new = x_init + dx
y_new = y_init - dy
A = QgsPoint(x_init, y_init)
B = QgsPoint(x_new, y_new)
m_line = QgsGeometry.fromPolyline( [ A, B ] )
intersec = m_line.intersection(polygon)
current_width = intersec.length()
width_list.append(current_width)
y_init = y_init + step
width = max(width_list)
return width
Однако, я хотел бы обойтись без списка, чтобы меньше загружать оперативку. Такой вариант, например, не работает:
Код: Выделить всё
width = 0
while y_init <= Y2:
x_new = x_init + dx
y_new = y_init - dy
A = QgsPoint(x_init, y_init)
B = QgsPoint(x_new, y_new)
m_line = QgsGeometry.fromPolyline( [ A, B ] )
intersec = m_line.intersection(polygon)
current_width = intersec.length()
if current_width > width:
width = current_width
else:
pass
y_init = y_init + step
return width
Как обойтись без списка?