def calculateOneStation(id): item0 = list[id] station_0 = list_station_all[id] for x in xrange(1,size): print x item = list_station_all[x] leng = len(item) #print leng #cov =np.cov(station_0,item)[0][1] #correlate = np.corrcoef(station_0, item)[0,1] semi = semivariance(station_0, item) #list_corr_tuple.append((id, x, correlate)) list_corr_tuple.append((id, x, semi)) #print correlate #correlate = corr(station_0, item) #value = 0 #for y in xrange(0, leng): # value = value + abs(station_0[y] - item[y]) #value = value/leng #print value list_index.append(x) list_value.append(semi) list_h.append(haversine(item0[2], item0[1], list[x][2], list[x][1]))
def calculateOneStation(id): item0 = list[id] station_0 = list_station_all[id] for x in xrange(1, size): item = list_station_all[x] correlate = np.corrcoef(station_0, item)[0, 1] list_index.append(x) list_value.append(correlate) list_h.append(haversine(item0[2], item0[1], list[x][2], list[x][1]))
def generateDistanceMatrix(list_sta_by_area): #l = getAllObservation() l = list_sta_by_area meteo_size = len(l) D = np.zeros([meteo_size, meteo_size]) for x in xrange(0,meteo_size):#0->97 item1 = l[x] for y in xrange(0,meteo_size):#0->97 item2 = l[y] d = haversine(item1[2], item1[1], item2[2], item2[1]) D[x][y]= round(d) #print x, ' ', y, ' ', D[x][y] #time.sleep(0.5) #print d print D[0:10,0:10] return D
def calculateOneStation(id): item0 = list[id] station_0 = list_station_all[id] for x in xrange(1,size): item = list_station_all[x] correlate = np.corrcoef(station_0, item)[0,1] # print x # item = list_station_all[x] # leng = len(item) # print leng # value = 0 # for y in xrange(0, leng): # value = value + abs(station_0[y] - item[y]) # value = value/leng # print value list_index.append(x) list_value.append(correlate) list_h.append(haversine(item0[2], item0[1], list[x][2], list[x][1]))
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] '''