function [NavAid_Filtered] = Filter_NavAid(NavAid_Valid, PosicionLLA)

%% -----------------------------------------------------------------------------------------------------------
% Version:      22/09/2015    
% (c):          Vicente Calabuig Simón
%               vicasim@etsid.upv.es
%
% 1.- Utilidad:
%
%       Previamente se ha hallado un conjunto de radioayudas situadas a una distancia inferior 
%       a un determinado radio (Rmax) escogido por el usuario. Esta función sirve para filtrar 
%       dicho conjunto de radioayudas :
%       
%           filtro 1) Que la distancia entre la aeronave y las radioayudas sea menor que el rango
%                     de actuación de éstas.
% 
% 2.- Parámetros de entrada:
%
%       PosicionLLA : Posicion de la aeronave [lat (º), lon (º), alt (ft)]
% 
%       NavAid_Valid : Conjunto de radioayudas de interés en formato:  '12  39.48395000 -000.47030600    203 11010  18       0.200 IVC  LEVC 30  DME-ILS'
%                                                                   '3  39.48564700 -000.48304400    200 11610 130   -2.0 VLC  VALENCIA VOR-DME'
%                                                                   '12  39.48570300 -000.48305600    200 11610 130    0.0 VLC  VALENCIA VOR-DME'
%                                                                   '12  39.49402778 -000.49677778    256 11150  25       0.000 VLN  LEVC 12  DME-ILS'
%                                                                   
% 3.- Parámetros de salida:
%   
%      NavAid_Valid_Filtered : Conjunto de radioayudas de interes filtrada: mismo formato que el anterior.                      
%
% 4.- Ejemplo de uso: 
%    
%   lat_0 = 39.56;     lon_0 = 2.743;      alt_0 = 6.466;     PosicionLLA = [lat_0, lon_0, alt_0];     Rmax = 200;  (LEPA | PMI)
%   [NavAid_Valid] = Search_NavAid(PosicionLLA, Rmax, '3_12_13_Database_Lat_Sorted.dat')
%   [NavAid_Valid_Filtered] = Filter_NavAid(NavAid_Valid, PosicionLLA)
%% -----------------------------------------------------------------------------------------------------------------------------------

% Posicion de la aeronave con respecto a la cual se va a filtrar el conjunto de radioayudas:
lat_0 = PosicionLLA(1);  lon_0 = PosicionLLA(2);    alt_0 = PosicionLLA(3); 

% Extraemos todos los datos de las radioayudas en diferentes arrays:
[NAtype, NAlat, NAlon, NAalt,  NAfreq, NArange] = Get_NavAid_Data(NavAid_Valid);

% Filtro 1) : Distancia (Aeronave, Radioayuda) < Rango actuación radioayuda
disp(' '); fprintf('Filtro #1 Activo : Subconjunto de radioayudas en rango de actuación válido\n');  disp(' ');
Nm2Km = 1.852;
NA_total = length(NAtype);

indices = [];  NavAid_Filtered =[]; j=0;
% Calculamos la distancia entre la radioayuda i-ésima y la aeronave
% Asumiendo la simplificacion de 'Tierra Plana' : 1 grado latitud  = 110 km | 1 grado longitud = 111 km
latDeg2Km = 110;             Km2LatDeg = 1/latDeg2Km;     Nm2Km = 1.852;
lonDeg2Km = 111;             Km2LonDeg = 1/lonDeg2Km;     ft2m  = 0.3048;

distancia_proyectada = [];  distancia_verdadera   = [];
for i = 1 : NA_total
    lat_i          = NAlat(i);
    lon_i          = NAlon(i);
    alt_i          = NAalt(i);
    % Diferencia con respecto a la posición de la aeronave
    Delta_lon_i    = lon_i - lon_0;
    Delta_lat_i    = lat_i - lat_0;
    Delta_alt_i    = alt_i - alt_0;
    % Calculo de la distancia proyectada a cada radioayuda (Simplificacion Tierra Plana)
    dp_i = sqrt(( Delta_lon_i * lonDeg2Km )^2 + (( Delta_lat_i ) * latDeg2Km )^2); %Km
    distancia_proyectada = [distancia_proyectada; dp_i]; %Km
    
    % Calculo de la distancia verdadera a cada radioayuda (Simplificacion Tierra Plana)
    Delta_alt_i_Km = Delta_alt_i * ft2m * (1/1000);
    dv_i = sqrt( dp_i^2 + Delta_alt_i_Km^2);
    distancia_verdadera   = [distancia_verdadera; dv_i]; %Km
end

% Ahora comprobamos si el rango de la radioayuda i-ésima es mayor que su distancia verdadera a la aeronave:
indices = [];  NavAid_Filtered =[];
j=0;
for i = 1 : NA_total
    if (NArange(i)*Nm2Km > distancia_verdadera(i))
        j = j+1;
        indice               = [indices, i];
        StringOut_i          = NavAid_Valid{i};
        NavAid_Filtered{j,1} = StringOut_i;
    end
end







