function [DataBase_Sort_Lat] = Sort_DataBase_Lat(DataBase_file, Linea_Inicial, Linea_Final, NewDatName)

%% -----------------------------------------------------------------------------------------------------------
% Version:      28/08/2015    
% (c):          Vicente Calabuig Simón
%               vicasim@etsid.upv.es
%
% 1.- Utilidad:
%
%       Ordenar una base de datos de radioayudas de forma parcial o completa,
%       utilizando como criterio de orden latitud creciente.  
%
% 2.- Parámetros de entrada:
% 
%       DataBase_file:   Archivo .txt o .dat que contiene a la base de datos        (.txt / .dat)
%       Linea_Inicial:   Primera linea de la base de datos que va a ser considerada (num)
%       Linea_Final  :   Última  línea de la base de datos que va a ser considerada (num)
%       NewDatName   :   Nombre del nuevo .txt/.dat con la base de datos organizada (.txt / .dat)

% 3.- Parámetros de salida:
%    
%       DataBase_Sort_Lat   : Cell Array con la base de datos ordenada por latitud creciente (Cell)
%       NewDatName.dat/.txt : Archivo de tipo .dat/.txt con la base de datos ordenada        (.txt / .dat)
%
% 4.- Ejemplo de uso:

%   [DataBase_Sort_Lat] = Sort_DataBase_Lat('earth_nav.dat', 1, 26590,  'Complete_DataBase_Lat_Sorted')
%   [DataBase_Sort_Lat] = Sort_DataBase_Lat('3_12_13_Database_Non_Sorted.dat',1, , '3_12_13_Database_Lat_Sorted' )
%
%   NOTA : El numero de lineas de una base de datos puede conocerse abriendo dicha base de datos como texto.
%% -------------------------------------------------------------------------------------------------------------------------------
[Database] = Reading_Database(DataBase_file, Linea_Inicial, Linea_Final);
[filas, columnas] = size(Database);
Lat = [];
%Bucle de lectura
for (i = 1 : filas)
    % Lectura de la LATITUD del elemento i-ésimo:
    CompleteString  = Database{i};
    Lat_i           = str2num(CompleteString(3:14));
    Lat             = [Lat, Lat_i];
end
% Ordenación de la base de datos
for i = 1 : filas
    for j = i+1 : filas
        if Lat(i) > Lat(j)
            Latj         = Lat(j);
            Lat(j)       = Lat(i);
            Lat(i)       = Latj;
            Databasej    = Database(j); %Salvamos el valor de la linea donde se encuentra Lat(j)
            Database (j) = Database(i); %La linea con Lat(i) baja un puesto
            Database (i) = Databasej;   %La linea con Lat(j) sube un puesto
        else
            continue;
        end    
    end
end
DataBase_Sort_Lat = Database;
CellArray2TextFile(NewDatName,DataBase_Sort_Lat);