folder = Path.cwd().parent / 'dados'Leitura
MOSAICO
O mosaico atualmente é composto por 2 bases complementares originárias de um banco
MongoDB:
EstaçõesPlano Básico
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 |
from extracao.constants import MIN_LAT, MAX_LAT, MIN_LONG, MAX_LONG
from ydata_profiling import ProfileReportmosaico = 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
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
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
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
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 |
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 |
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 |
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 |
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
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()