У меня есть сеть, которую нужно разделить на сетку квадратных ячеек (200 х 200 м). каждая ячейка включает подсегменты ребер.
Я сгенерировал выходные данные моделирования и использовал sumolib для извлечения выходных данных на основе краев. Мне нужно рассчитать средний объем трафика в каждой ячейке (не на краю), измеренный в (транспортных средствах в секунду).
это часть написанного мной сценария:
извлечь значения плотности и скорости на основе краев:
for interval in sumolib.output.parse('cairo.edgeDataOutput.xml','interval'): for edge in interval.edge: edgeDataOutput[edge.id]= (edge.density,edge.speed)
после сохранения плотности и скорости в edgeDataOutput, мне нужно объединить в ячейки и вычислить средний объем трафика в каждой ячейке:
for cellID in ids: density=0 speed=0 n=0 #avg.traffic vol for edgeID in cell_edgeMap[cellID].keys(): if edgeID in edgeDataOutput.keys(): density+= float(edgeDataOutput[edgeID][1]) speed+= float(edgeDataOutput[edgeID][2]) n += (float(edgeDataOutput[edgeID][1])/1000) * float(edgeDataOutput[edgeID][2]) #traffic vol = (density/1000)*speed densities.append(int((density / len(cell_edgeMap[cellID].keys()))+0.5)) speeds.append(int((speed / len(cell_edgeMap[cellID].keys()))+0.5)) numOfVehicles.append(int(n/len(cell_edgeMap[cellID].keys())))
как вы можете видеть из кода, я суммирую значения плотности и скорости каждого ребра, находящегося в ячейке, затем делю на количество ребер внутри ячейки, чтобы получить среднее значение.
плотность в ячейке (veh / км) = сумма (плотность на каждом краю внутри ячейки) / количество краев внутри ячейки.
скорость в ячейке (м / с) = сумма (скорость на каждом краю внутри ячейки) / количество краев в ячейке.
и я использую следующую формулу для расчета объема трафика в каждой ячейке:
средний объем трафика в ячейке (транспортных средств / с) = сумма (средний объем трафика на каждом краю внутри ячейки) / количество краев внутри ячейки.
средний объем трафика на краю (автомобили / с) = плотность на краю (автомобили / км) * скорость на краю (м / с) / 1000.
Я просто хочу убедиться, что использую формулу записи.