Exemplo n.º 1
0
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')
Exemplo n.º 2
0
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