Leitura

Este módulo concentra funções para a leitura dos diversos arquivos que compõe a base de dados

MOSAICO

O mosaico atualmente é composto por 2 bases complementares originárias de um banco MongoDB:

  • Estações
  • Plano Básico

source

read_srd

 read_srd (folder:Union[str,pathlib.Path],
           conn:pymongo.mongo_client.MongoClient=None)

Lê o banco de dados salvo localmente do MOSAICO e opcionalmente o atualiza.

Type Default Details
folder Union Pasta onde ler/salvar os dados
conn MongoClient None Objeto de Conexão com o banco MongoDB, atualiza os dados caso válido
Returns DataFrame Dataframe com os dados do mosaico
folder = Path.cwd().parent / 'dados'
from extracao.constants import MIN_LAT, MAX_LAT, MIN_LONG, MAX_LONG
from ydata_profiling import ProfileReport
mosaico = read_srd(folder)
for c in ['Latitude', 'Longitude']:
    mosaico[c] = mosaico[c].astype('float')
mos_bad_coords = mosaico[~(mosaico.Latitude.between(MIN_LAT, MAX_LAT) | mosaico.Longitude.between(MIN_LONG, MAX_LONG))]
print(f"A base de radiodifusão do Mosaico possui {len(mos_bad_coords)} registros de coordenadas inválidas do total de {len(mosaico)}")
A base de radiodifusão do Mosaico possui 15809 registros de coordenadas inválidas do total de 30850
mosaico['Frequência'] = mosaico['Frequência'].astype('category')
mosaico_profile = ProfileReport(mosaico, config_file='report_config.yaml', title='MOSAICO')
mosaico_profile.to_notebook_iframe()

LICENCIAMENTO

A Base licenciamento é composta de serviços privados de telecomunicações, tanto antigos migrados do STEL como novos para um novo banco de dados MongoDB


source

read_telecom

 read_telecom (folder:Union[str,pathlib.Path],
               conn:pymongo.mongo_client.MongoClient=None)

Lê o banco de dados salvo localmente do LICENCIAMENTO e opcionalmente o atualiza.

Type Default Details
folder Union Pasta onde ler/salvar os dados
conn MongoClient None Objeto de Conexão com o banco MongoDB, atualiza os dados caso válido
Returns DataFrame Dataframe com os dados do mosaico
telecom = read_telecom(folder)
for c in ['Latitude', 'Longitude']:
    telecom[c] = telecom[c].astype('float')
mos_bad_coords = telecom[~(telecom.Latitude.between(MIN_LAT, MAX_LAT) | telecom.Longitude.between(MIN_LONG, MAX_LONG))]
print(f"A base licenciamento do Mosaico possui {len(mos_bad_coords)} registros de coordenadas inválidas do total de {len(telecom)}")
A base licenciamento do Mosaico possui 91 registros de coordenadas inválidas do total de 749602
telecom['Frequência'] = telecom['Frequência'].astype('category')
telecom_profile = ProfileReport(telecom, config_file='report_config.yaml', title='Telecomunicações')
telecom_profile.to_notebook_iframe()

RADCOM


source

read_radcom

 read_radcom (folder:Union[str,pathlib.Path], conn:pyodbc.Connection=None)

Lê o banco de dados salvo localmente de RADCOM. Opcionalmente o atualiza pelo Banco de Dados ANATELBDRO05 caso update = True ou não exista o arquivo local

Type Default Details
folder Union Pasta onde ler/salvar os dados
conn Connection None Objeto de conexão de banco, atualiza os dados caso válido
Returns DataFrame Dataframe com os dados de RADCOM
radcom = read_radcom(folder)
for c in ['Latitude', 'Longitude']:
    radcom[c] = radcom[c].astype('float')
mos_bad_coords = radcom[~(radcom.Latitude.between(MIN_LAT, MAX_LAT) | radcom.Longitude.between(MIN_LONG, MAX_LONG))]
print(f"A base radcom possui {len(mos_bad_coords)} registros de coordenadas inválidas do total de {len(radcom)}")
A base radcom possui 3 registros de coordenadas inválidas do total de 4972
radcom['Frequência'] = radcom['Frequência'].astype('category')
radcom_profile = ProfileReport(radcom, config_file='report_config.yaml', title='RADCOM')
radcom_profile.to_notebook_iframe()

STEL


source

read_stel

 read_stel (folder:Union[str,pathlib.Path], conn:pyodbc.Connection=None)

Lê o banco de dados salvo localmente do STEL. Opcionalmente o atualiza pelo Banco de Dados ANATELBDRO05 caso update = True ou não exista o arquivo local

Type Default Details
folder Union Pasta onde ler/salvar os dados
conn Connection None Objeto de conexão de banco. Atualiza os dados caso válido
Returns DataFrame Dataframe com os dados do STEL
stel = read_stel(folder)
for c in ['Latitude', 'Longitude']:
    stel[c] = stel[c].astype('float')
mos_bad_coords = stel[~(stel.Latitude.between(MIN_LAT, MAX_LAT) | stel.Longitude.between(MIN_LONG, MAX_LONG))]
print(f"A base legada do Stel possui {len(mos_bad_coords)} registros de coordenadas inválidas do total de {len(stel)}")
A base legada do Stel possui 8 registros de coordenadas inválidas do total de 35434
stel['Frequência'] = stel['Frequência'].astype('category')
stel_profile = ProfileReport(stel, config_file='report_config.yaml', title='STEL')
stel_profile.to_notebook_iframe()

Bases Externas da Aeronáutica


source

read_icao

 read_icao (folder:Union[str,pathlib.Path], update:bool=False)

Lê a base de dados do Frequency Finder e Canalização VOR/ILS/DME

Type Default Details
folder Union Pasta onde ler/salvar os dados
update bool False Atualiza os dados caso True
Returns DataFrame Dataframe com os dados do ICAO

source

read_aisw

 read_aisw (folder:Union[str,pathlib.Path], update:bool=False)

Fontes da informação: AISWEB, REDEMET, Ofício nº 2/SSARP/14410 e Canalização VOR/ILS/DME.

Type Default Details
folder Union Pasta onde ler/salvar os dados
update bool False Atualiza os dados caso True
Returns DataFrame Dataframe com os dados do AISWEB

source

read_aisg

 read_aisg (folder:Union[str,pathlib.Path], update:bool=False)

Fontes da informação: GEOAISWEB, REDEMET, Ofício nº 2/SSARP/14410 e Canalização VOR/ILS/DME.

Type Default Details
folder Union Pasta onde ler/salvar os dados
update bool False Atualiza os dados caso True
Returns DataFrame Dataframe com os dados do GEOAISWEB

source

read_redemet

 read_redemet (folder:Union[str,pathlib.Path], update:bool=False)

Fontes da informação: AISWEB, REDEMET, Ofício nº 2/SSARP/14410 e Canalização VOR/ILS/DME.

Type Default Details
folder Union Pasta onde ler/salvar os dados
update bool False Atualiza os dados caso True
Returns DataFrame Dataframe com os dados do AISWEB

source

read_aero

 read_aero (folder:Union[str,pathlib.Path], update:bool=False)

Lê os arquivos de dados da aeronáutica e retorna os registros comuns e únicos

Type Default Details
folder Union Pasta onde ler/salvar os dados
update bool False Atualiza os dados caso True
Returns DataFrame
aero = read_aero(folder)
for c in ['Latitude', 'Longitude']:
    aero[c] = aero[c].astype('float')
bad_coords = aero[~(aero.Latitude.between(MIN_LAT, MAX_LAT) | aero.Longitude.between(MIN_LONG, MAX_LONG))]
print(f"A base licenciamento do Mosaico possui {len(bad_coords)} registros de coordenadas inválidas do total de {len(aero)}")
A base licenciamento do Mosaico possui 0 registros de coordenadas inválidas do total de 2994
aero['Frequency'] = aero['Frequency'].astype('category')
aero_profile = ProfileReport(aero, config_file='report_config.yaml', title='AERONAUTICA')
aero_profile.to_notebook_iframe()

Base Consolidada


source

read_base

 read_base (folder:Union[str,pathlib.Path], conn:pyodbc.Connection=None,
            clientMongoDB:pymongo.mongo_client.MongoClient=None)

Lê a base de dados e opcionalmente a atualiza antes da leitura casos as conexões de banco sejam válidas

Type Default Details
folder Union
conn Connection None Objeto de conexão do banco SQL Server
clientMongoDB MongoClient None Objeto de conexão do banco MongoDB
Returns DataFrame
base = read_base(folder)
base['Frequência'] = base['Frequência'].astype('category')
base_profile = ProfileReport(base, config_file='report_config.yaml', title='Base Consolidada')
base_profile.to_notebook_iframe()