コード例 #1
0
ファイル: SVS.py プロジェクト: dpfinch/SVS
def ModelLayerCoordList(grnd, azimuth, elevation_angle, layer_hgts):

    layer_num = [0]
    lat_layer_coord = [grnd.lat]
    lon_layer_coord = [grnd.lon]

    for layer in range(layer_hgts.shape[0])[1:]:
        # Find the height of the model cell then convert to km
        lat_index = grnd.lat_min_index - GetCoordValue(lat_layer_coord[-1],
                                                       lat_or_lon='lat')
        lon_index = grnd.lon_min_index - GetCoordValue(lon_layer_coord[-1],
                                                       lat_or_lon='lon')
        cell_height = layer_hgts[layer, lat_index, lon_index] / 1000

        horizontal_dist = cell_height / np.tan(np.deg2rad(elevation_angle))

        # Set a geographic point for the origin of the layer
        origin = geopy.Point(lat_layer_coord[-1], lon_layer_coord[-1])
        # Use geopy to calculate the destination
        destination = geodist(kilometers=horizontal_dist).destination(
            origin, azimuth)

        layer_num.append(layer)
        lat_layer_coord.append(destination.latitude)
        lon_layer_coord.append(destination.longitude)

    coord_df = pd.DataFrame(
        {
            'LatEntry': lat_layer_coord,
            'LonEntry': lon_layer_coord
        },
        index=layer_num)
    return coord_df
コード例 #2
0
ファイル: bird.py プロジェクト: pcouy/bird-whisperer
    def ringScooter(self, scooter):
        assert self.authorization is not None

        birdDistance = geodist((self.latitude,self.longitude), (scooter["location"]["latitude"], scooter["location"]["longitude"]))
        if self.radius == 0 or self.radius >= birdDistance.m:
            url = "https://{}/bird/chirp".format(self.domain)
            headers = {
                    'location': self.getLocationHeader(),
                    'authorization': "Bird {}".format(self.authorization),
                    'content-type': 'application/json; charset=UTF-8'
                    }
            headers.update(self.deviceHeaders)
            payload = {
                    'alarm': False,
                    'bird_id': scooter['id']
                    }

            r = requests.put(url, headers=headers, data=json.dumps(payload))


            payload['alarm'] = True
            r = requests.put(url, headers=headers, data=json.dumps(payload))
        
            return r.status_code, birdDistance
        else:
            return 0, birdDistance
コード例 #3
0
 def get_speed(row):
     prev_coords = (row['prev_latitude'], row['prev_longitude'])
     curr_coords = (row['latitude'], row['longitude'])
     delta = row['timestamp'] - row['prev_timestamp']
     if pd.isnull(delta):
         return np.nan
     time = abs(delta.total_seconds())
     if np.isnan(prev_coords[0]) or np.isnan(prev_coords[1]) or np.isnan(
             curr_coords[0]) or np.isnan(curr_coords[1]):
         return np.nan
     if time == 0:
         return np.nan
     return geodist(curr_coords, prev_coords).meters / time
コード例 #4
0
def _test_get_displacement_vector():
    prms, _ = mepo2.smallnetv5_fc5_pose_euler_5dof_crp192_rawImSz256_lossl1()
    grps = get_groups(prms, '0001')
    errs = []
    gAll, aAll = [], []
    for g in grps:
        N = g.num
        perm = np.random.permutation(N)
        if N < 2:
            continue
        p1, p2 = perm[0], perm[1]
        pt1 = g.data[p1].pts.camera[0:3]
        pt2 = g.data[p2].pts.camera[0:3]
        gDist = geodist(pt1[0:2], pt2[0:2]).meters
        x, y, z = get_displacement_vector(pt1, pt2)
        aDist = np.sqrt(x * x + y * y)
        errs.append(gDist - aDist)
        gAll.append(gDist)
        aAll.append(aDist)
    errs, gAll, aAll = np.array(errs), np.array(gAll), np.array(aAll)
    rErr = np.abs(errs) / np.minimum(np.abs(gAll), np.abs(aAll))
    print 'Mean relative Error: %f, sd relative error: %f' % (np.mean(rErr),
                                                              np.std(rErr))
    return errs, rErr, gAll, aAll
コード例 #5
0
def get_distance_between_groups(grp1, grp2):
	lb1, lb2 = grp1.data[0], grp2.data[0]
	tPt1  = lb1.label.pts.target
	tPt2  = lb2.label.pts.target
	tDist = geodist(tPt1, tPt2).meters
	return tDist