Хорошо, у меня есть такие формы: Формы
Вы устанавливаете начальные значения (красный цвет) и конечный интервал (синий цвет).Для этого заданного интервала lon и lat определены для точки, в которой мы хотим выполнить интерполяцию.Когда вы нажимаете кнопку отправки, она начинается с интерполяции в течение определенного периода.Проблема цикла заключается в том, что он работает только в течение определенных месяцев (мы видим из 2-й картины, что он работает только в интервале 1-6), но не в течение 7,8,9,10,11,12 месяцев между этими годами.
Начальный : год : 2000, месяц : 3 Окончательный : год1 : 2001, month : 4 для этого она делает это так: 2000 / 3,2000 / 4,2001 / 3,2001 / 4
Я не хочу этого, я хочу этого: 2000 /3,2000 / 4,2000 / 5,2000 / 6,2000 / 7 ..... 2000 / 12,2001 / 1,2001 / 2,2001 / 3,2001 / 4.
этоme code:
def period_month_prec(year,month,year1,month1,lon,lat):
cnx = sqlite3.connect(DB1)
cursor = cnx.cursor()
table = 'monthly'
year = int(year)
year1 = int(year1)
month = int(month)
month1 = int(month1)
for i in range (year,year1+1,1):
for j in range(month,month1+1,1):
query = '''
SELECT dates, cell, prec FROM %s WHERE dates = "%s-%s" ;
''' % (table,i,j)
df = pd.read_sql_query(query, cnx)
tacka = '''SELECT id, lon, lat,country,altitude FROM %s;''' % 'grid1'
grid1 = pd.read_sql_query(tacka, cnx)
podaci = pd.merge(df,grid1,left_on='cell',right_on='id')
podaci_a = podaci.drop(['cell','id','country','altitude'],axis=1)
lon_n = podaci_a['lon'].values
lat_n = podaci_a['lat'].values
prec =podaci_a['prec'].values
x_masked, y_masked, prec_p = remove_nan_observations(lon_n, lat_n, prec)
xy = np.vstack([x_masked,y_masked]).T
xi = ([lon,lat])
inter_point = interpolate_to_points(xy,prec_p,xi, interp_type='linear'
return (i,j,lon,lat,inter_point)
Полученные результаты выглядят так: цикл с вычислениями
Второй вопрос заключался в том, как сохранить эти результаты (2-е изображение) вCSV-файл, как правильно написать views.py.На данный момент она выглядит так:
def monthly_period(request):
if request.method == "POST" :
form = PeriodMonthlyForm(request.POST)
if form.is_valid():
data = form.cleaned_data
year = data.get('year')
month = data.get('month')
year1 = data.get('year1')
month1 = data.get('month1')
lon = data.get('lon')
lat = data.get ('lat')
inter = data.get('inter')
point = period_month_prec(year,month,year1,month1,lon,lat)
args = {'point':point}
response = HttpResponse(content_type='text/txt')
response['Content-Disposition'] = 'attachment; filename="precipitation.txt"'
writer = csv.writer(response)
writer.writerow([point])
return response
else:
form = PeriodMonthlyForm()
active_period_monthly = True
return render (request, 'carpatclimapp/home.html',{'form':form, 'active_period_monthly': active_period_monthly})
Надеюсь, теперь я немного яснее