def reGenerateSemiMatrix(list_all_station): G = np.zeros([MATRIX_SIZE, MATRIX_SIZE]) a0, c0 = global_data[0][0], global_data[0][1] meteo_size = len(list_all_station) for x in xrange(0,meteo_size):#x 0->97 is Meteo_id 1->98 for y in xrange(0,meteo_size):#0->97 is Meteo_id 1->98 #semi = semivariance( a, b) #cov = covariance(a,b) h = D[x][y]#distance G_COV[x][y] = semiToCov( h, a0, c0)
def krigeOne(point, neighbor, list_all_station, list_data, G, D): #print 'KRIGE ONE' list_station = list_all_station #Cal distances from current point to all others item0 = (0, point[0], point[1]) meteo_size = len(list_station) list_d = [] #cal all distance from point to others stations for i in xrange(0,meteo_size): #Cal distance one-one item1 = list_station[i] d = haversine(item0[2], item0[1] ,item1[2], item1[1]) newitem = (item1[0], d, item1[3], item1[1], item1[2])#id, distance, temp, lat, lon list_d.append(newitem) #Sort by distance, get n first nearest neighbors sorted_list = sorted(list_d, key=itemgetter(1)) list_neighbor = sorted_list[:neighbor] #print list_neighbor ''' #Get areaid for each station list_neighbor_with_areaid = [] for item in list_neighbor: item1 = list_station[item[0]] new_item = (item[0], item[1], getAreaIdFromPoint([item1[1], item1[2]])) list_neighbor_with_areaid.append(new_item) ''' K1 = np.zeros([neighbor, neighbor]) K = np.zeros([neighbor, neighbor]) k = np.zeros([neighbor, 1]) T = []# list of temp of neighbor station at interpolate time string = '' i = 0 for item in list_neighbor: f.write('getting T\n') #Nhiet do 1 thang cua tram item #print len(list_data) t = list_data[item[0]-1] trendValue = getTrendValue(trend_curve, item[3], item[4]) #print trend_curve, trendValue f.write(str(t) + '\n') t_size = len(t) T.append(t[t_size - 1] - trendValue) j = 0 string = string + str(item[0]) #print item #Area key = 0, because of we have only one model for all a0, c0 = global_data[0][0], global_data[0][1] h = item[1]#distance k[i][0] = semiToCov( h, a0, c0) for sub_item in list_neighbor: string = string+' ' + str(sub_item[0]) #print i, j K1[i][j] = G_COV[item[0]-1][sub_item[0]-1] K [j][i] = K1[i][j]#Inverse of K1 j = j + 1 string = string + '\n' i = i + 1 f.write('T: ' + str(T) + '\n') f.write('neighbors list: \n' + string + '\n') #print string #print k #print K f.write('K: \n' + str(K) +' \n') f.write('k: \n' + str(k) +' \n') weight = np.dot(K,k) f.write('ori-weight: \n' + str(weight) +' \n') if sum(weight) == 0: f.write('NOT RELATED\n') weight[:] = 1 #assign the same weight for all elements weight = weight/sum(weight) krige = np.dot(T, weight) f.write('nor-weight: \n' + str(weight) +' \n') f.write('T: \n' + str(T)+' \n') f.write('krige: ' + str(krige)+' \n') #print krige #print krige[0],' ', #print k weight = inverseMatrix(weight) derivation = np.dot(weight, k) f.write('derivation: ' + str(derivation[0][0])+' \n') #time.sleep(2) return krige[0], derivation[0][0] '''