Skip to content
This repository has been archived by the owner on Mar 13, 2024. It is now read-only.

Latest commit

 

History

History
438 lines (388 loc) · 11.9 KB

README.md

File metadata and controls

438 lines (388 loc) · 11.9 KB

Anatel - Consulta e Processamento do Banco de Dados

Gitmoji

Instalação

pip install git+https://github.com/ronaldokun/anateldb.git

Como utilizar

Consulta à base de dados formatada para o AppAnalise de Anatel

A motivação original para a presente biblioteca foi disponibilizar os dados de diferentes fontes da Anatel - e posteriormente da Aeronáutica - programaticamente, para serem utilizadas pelo AppAnalise na identificação de emissões captadas pelos planos de monitoração e também em fiscalização de campo.

Os dados em formato otimizado .parquet.gzip são disponibilizados junto ao repositório na pasta dados.


source

get_db

 get_db (path:Union[str,pathlib.Path], connSQL:pyodbc.Connection=None,
         clientMongoDB:pymongo.mongo_client.MongoClient=None)

Lê e opcionalmente atualiza as bases da Anatel, mescla as bases da Aeronáutica, salva e retorna o arquivo A atualização junto às bases de dados da Anatel é efetuada caso ambos objetos de banco connSQL e clientMongoDB forem válidos`

Type Default Details
path Union Pasta onde salvar os arquivos”,
connSQL Connection None Objeto de conexão do banco SQL Server
clientMongoDB MongoClient None Objeto de conexão do banco MongoDB
Returns DataFrame Retorna o DataFrame com as bases da Anatel e da Aeronáutica
db = get_db(pasta)
db.sample(5)
📜Lendo as bases de dados da Anatel...
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
Id Frequency Latitude Longitude Description Service Station Class BW
667035 #667036 527.00000 -2.806110 -57.069721 [MOS] TV-C1, C, Camara Dos Deputados (50441490... 801 -1 NI 5700.0
107525 #107526 156.47500 -8.581717 -63.725052 [STEL] L, ML, Transportes Bertolini Ltda (1202... 19 1000751993 G3E 16.0
117314 #117315 156.70000 -1.540750 -48.743168 [STEL] L, FC, Alpina Briggs Defesa Ambiental S... 19 690246978 F3E 16.0
273145 #273146 167.63125 -20.387291 -44.484554 [STEL] L, ML, Policia Militar Do Estado De Min... 19 1001948332 F1W 8.1
306394 #306395 167.74375 -19.881208 -43.859077 [STEL] L, ML, Policia Militar Do Estado De Min... 19 1002234406 G1W 8.1

Métodos para atualizar os arquivos das bases de dados

from extracao.updates import update_mosaico, update_radcom, update_stel, update_telecom, update_base

A função update_mosaico atualiza os dados de radiodifusão pública disponíveis na interface pública online do Spectrum E

%%time
update_mosaico(pasta='D:\OneDrive - ANATEL\GR01FI3\BaseDados')
Baixando as Estações do Mosaico...
Baixando o Plano Básico das Estações...
Baixando o Histórico de Atualizações...
Kbô
Wall time: 8.12 s

A função update_radcom é um complemento à função update_mosaico. Ela retorna os registros específicos de Rádio Comunitária, os quais ficam em base separada.

%%time
update_radcom('D:\OneDrive - ANATEL\GR01FI3\BaseDados')
Lendo o Banco de Dados de Radcom
Wall time: 1 s

A função update_telecom é bem mais lenta que as demais, dado que o banco de dados abarca todos os registros privados de serviços de telecomunicações da ANATEL, com cerca de 10.000.000 registros ativos atualmente. Esse banco de dados é atualizado 1 vez ao dia à meia-noite e remete ao estado do dia anterior, portanto não faz sentido atualizá-lo mais de 1 vez por dia.

A função update_stel retorna os registros de Serviços Privados de Telecomunicações da Anatel que ainda não constam na base pública do Mosaico em Spectrum - E e são retornados pela função update_telecom

%%time
update_stel('D:\OneDrive - ANATEL\GR01FI3\BaseDados')

A função update_base combina as 4 bases anteriores e uniformiza os campos:

update_base('D:\OneDrive - ANATEL\GR01FI3\BaseDados')

Métodos para ler as Bases de Dados

from extracao.reading import read_radcom, read_stel, read_mosaico, read_telecom, read_base
radcom = read_radcom(pasta)
radcom.sample(5).iloc[:,:5]

Se o argumento conn for fornecido, o arquivo será atualizado por meio da função update_radcom.

A função update_radcom somente irá funcionar caso o PC estiver plugado na rede interna cabeada da Anatel.

stel = read_stel(pasta)
stel.sample(5).iloc[:,:7]
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
Frequência Classe_Emissão Largura_Emissão Classe Num_Serviço Entidade Fistel
713502 459.68750 F1D 7K60 FX 019 MOSAIC FERTILIZANTES P&K LTDA. 50416997473
744967 469.70000 F1W 7K60 BR 019 ASSOCIACAO MELHORAMENTOS PARQUE SILVINO PEREIRA 50011329165
353408 167.34375 F1W 7K60 FB 019 DURATEX FLORESTAL LTDA 02021684504
226524 157.78125 F1E 7K60 FX 011 OLIVEIRA, TAVORA E CIA LTDA 50418317186
380431 167.68125 F3E 11K0 ML 019 POLICIA MILITAR DO ESTADO DE MINAS GERAIS 50401288943

Se o argumento conn for fornecido, o arquivo será atualizado por meio da função update_stel.

A função update_stel somente irá funcionar caso o PC estiver plugado na rede interna cabeada da Anatel.

mosaico = read_mosaico(pasta)
mosaico.sample(5).iloc[:,:7]
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
Num_Serviço Id Número_Estação Latitude Longitude Validade_RF Município
14017 800 57dbabf18de3d 1002434758 -21.762528 -43.357556 2023-12-31 Juiz de Fora
28419 801 617afd492ade4 <NA> -17.400000 -42.717220 2041-11-18 Veredinha
216 800 57dbaadbc8413 441611648 -7.730833 -72.648889 2023-12-31 Rodrigues Alves
15976 230 57dbac17c5a24 699381339 -19.817611 -40.336056 2024-08-20 Ibiraçu
10352 801 57dbabb50b92a <NA> -21.208611 -45.198056 2035-10-09 Nepomuceno

Se o argumento mongo_client for fornecido, o arquivo será atualizado por meio da função update_mosaico. > A função update_mosaico somente irá funcionar caso o PC estiver plugado na rede interna cabeada da Anatel.

telecom = read_telecom(pasta)
telecom.sample(5).iloc[:,:7]

Se o argumento mongo_client for fornecido, o arquivo será atualizado por meio da função update_telecom. > A função update_telecom somente irá funcionar caso o PC estiver plugado na rede interna cabeada da Anatel.

base = read_base(pasta)
base.sample(5).iloc[:, :7]

A função read_base combina os 4 arquivos anteriores, e mescla os registros similares dos arquivos consolidados da aeronáutica. Se os argumentos conn e mongo_client forem fornecidos, os arquivo serão atualizados por meio de chamada da função update_base, esta função encapsula a atualização de todos os arquivos por meio das funções de atualização mencionadas anteriormente. > A função update_base somente irá funcionar caso o PC estiver plugado na rede interna cabeada da Anatel.