def check_distances(): """ check distance between lat-lon points with the different aggregation zones """ a_in = h5py.File('/homespace/gaubert/viirs/Mband-SDR/GMODO_npp_d20030125_t0847056_e0848301_b00015_c20090513182937526121_gisf_pop.h5') lats = load_array(a_in['All_Data']['VIIRS-MOD-GEO_All']['Latitude']) lons = load_array(a_in['All_Data']['VIIRS-MOD-GEO_All']['Longitude']) index = 0 f_d = open("/tmp/distance_results", "w") f_csv = open("/tmp/distance_results.csv", "w") #write header for j in xrange(1, len(lats[0])): f_csv.write('pix(%d)-pix(%d), ' % (j, j-1)) f_csv.write('\n') print("%s scan lines to write " % (len(lats))) for lat_scan in lats: lon_scan = lons[index] print("======================== Scan line %d ========================\n" % index) f_d.write("======================== Scan line %d ========================\n" % index) for i in xrange(0,len(lat_scan)): if i == 0: continue point1 = (lat_scan[i-1], lon_scan[i-1]) point2 = (lat_scan[i], lon_scan[i]) distance = geo_utils.distance(point1[0], point1[1], point2[0], point2[1]) str_to_write = 'distance(pix(%d)-pix(%d) = %f km' % (i-1, i, distance) #print(str_to_write) #f_d.write('%s\n' % str_to_write) f_csv.write('%f,' % (distance)) index += 1 f_csv.write('\n')
def distance_array(lat1_arr, lon1_arr, lat2_arr, lon2_arr): """ calculate the distance between each points """ if lat1_arr.size != lat2_arr.size: raise Exception("Latitude arrays have different sizes") if lon1_arr.size != lon2_arr.size: raise Exception("Longitude arrays have different sizes") results = numpy.empty(lat1_arr.size) print("Compute distances for %d points\n" % (lat1_arr.size)) for x in xrange(0, lat1_arr.size): results[x] = geo.distance(lat1_arr[x], lon1_arr[x], lat2_arr[x], lon2_arr[x]) #print("Calculate distance (%f) between p1:(%f,%f) and p2:(%f,%f)\n" %(results[x], lat1_arr[x], lon1_arr[x], lat2_arr[x], lon2_arr[x])) return results