Скрипт на питоне
Добавлено: 19 апр 2015, 17:13
Здравствуйте!
Пишу скрипт на питоне. Нужно, чтобы он брал данные из таблицы атрибутов, рассчитывал концентрацию и максимальное расстояние и записывал результаты в ту же таблицу, в другие колонки. Пишет ошибку "failed to execute script". Что нужно исправить?
Пишу скрипт на питоне. Нужно, чтобы он брал данные из таблицы атрибутов, рассчитывал концентрацию и максимальное расстояние и записывал результаты в ту же таблицу, в другие колонки. Пишет ошибку "failed to execute script". Что нужно исправить?

Код: Выделить всё
import arcpy
import sys
from math import *
A=200
F=1
j=1
PDK1=5
PDK1=7
PDK1=3
V1=(3.14*(D**2)/4)*w
f=1000*(((w**2)*D)/((H**2)*T))
if f<100: m=1/(0.67+(0.1* math.sqrt(f))+(0.34* (math.pow(f, 1./x))))
else: m=1.47/(math.pow(f, 1./x))
vm=0.65*(((V1*T)/H)**0.333)
vml=1.3*(((w**2)*D)/H)
fv=800*(vml**3)
if vm>=2: n=1
if vm<0.5: n=4.4
else: n=(0.532*(vm**2))-(2.13*(vm))+3.13
C1=(A*M1*F*m*n*j)/((H**2)*(V1*T)**0.333)
C2=(A*M2*F*m*n*j)/((H**2)*(V1*T)**0.333)
C3=(A*M3*F*m*n*j)/((H**2)*(V1*T)**0.333)
if vm<=0.5: d=2.48*(1+0.28*(math.pow(fv, 1./x)))
if vm>2: d=7*math.sqrt(vm)*(1+0.28*(math.pow(f, 1./x)))
else: d=(4.95*vm)*(1+0.28*(math.pow(f, 1./x)))
def conc_function(C1, C2, C3, PDK1, PDK2, PDK3):
return C1+(C2*(PDK1/PDK2))+(C3*(PDK1/PDK3))
def rasst_function(F, d, H):
return ((5-F)/4)*d*H
table = sys.argv[1]
Stream = float(sys.argv[2])
in_field = u'Massa1;Massa2;Massa3;Visota;Temperatur;Diametr;Sred_skor'
out_field = u'Conc;Maks_rasst'
rows = arcpy.SearchCursor(table, '', '', in_field)
in_field_values = []
for row in rows:
tmp = [row.getValue(u'Massa1'), row.getValue(u'Massa2'), row.getValue(u'Massa3'), row.getValue(u'Visota'), row.getValue(u'Temperatur'), row.getValue(u'Diametr'), row.getValue(u'Sred_skor')]
in_field_values.append(tmp)
del row
del rows
rows = arcpy.UpdateCursor(table, '', '', out_field)
i = 0
for row in rows:
M1 = in_field_values[i][0]
M2 = in_field_values[i][1]
M3 = in_field_values[i][1]
H = in_field_values[i][1]
T = in_field_values[i][1]
D = in_field_values[i][1]
w = in_field_values[i][1]
row.setValue(out_field, conc_function(C1, C2, C3, PDK1, PDK2, PDK3))
row.setValue_1(out_field, rasst_function(F, d, H))
rows.updateRow(row)
i += 1
del row
del rows