# Insert in Path Project Directory
0, str(Path().cwd().parent)) sys.path.insert(
Atualização
Conexão com o banco de dados
A função a seguir é um wrapper
simples que utiliza o pyodbc
para se conectar ao banco de dados base da Anatel e retorna o objeto da conexão
connect_db
connect_db (server:str='ANATELBDRO05', database:str='SITARWEB', trusted_conn:str='yes', mult_results:bool=True)
Conecta ao Banco server
e retorna o ‘cursor’ (iterador) do Banco
Type | Default | Details | |
---|---|---|---|
server | str | ANATELBDRO05 | Servidor do Banco de Dados |
database | str | SITARWEB | Nome do Banco de Dados |
trusted_conn | str | yes | Conexão Segura: yes | no |
mult_results | bool | True | Múltiplos Resultados |
Returns | Connection |
from fastcore.test import test_eq
#echo: false
def test_connection():
= connect_db()
conn = conn.cursor()
cursor for query in (SQL_RADCOM,SQL_STEL):
cursor.execute(query)type(cursor.fetchone()), pyodbc.Row) test_eq(
test_connection()
clean_mosaico
clean_mosaico (df:pandas.core.frame.DataFrame, pasta:Union[str,pathlib.Path])
Clean the merged dataframe with the data from the MOSAICO page
Type | Details | |
---|---|---|
df | DataFrame | DataFrame com os dados de Estações e Plano_Básico mesclados |
pasta | Union | |
Returns | DataFrame | DataFrame com os dados mesclados e limpos |
Atualização das bases de dados
As bases de dados são atualizadas atráves das funções a seguir, o único argumento passado em todas elas é a pasta na qual os arquivos locais processados serão salvos, os nomes dos arquivos são padronizados e não podem ser editados para que as funções de leitura e processamento recebam somente a pasta na qual esses arquivos foram salvos.
RADCOM
update_radcom
update_radcom (conn:pyodbc.Connection, folder:Union[str,pathlib.Path])
Atualiza a tabela local retornada pela query RADCOM
, com tratamento de erro de conectividade.
Type | Details | |
---|---|---|
conn | Connection | Objeto de conexão de banco |
folder | Union | Pasta onde salvar os arquivos |
Returns | DataFrame | DataFrame com os dados atualizados |
import warnings
import os
# warnings.filterwarnings("ignore", message='install "ipywidgets" for Jupyter support')
"ignore") warnings.filterwarnings(
= Path.cwd().parent / 'dados'
folder = connect_db() conn
CPU times: total: 0 ns
Wall time: 4.01 ms
= update_radcom(conn, folder)
radcom 5) radcom.sample(
CPU times: total: 547 ms
Wall time: 1.22 s
Frequência | Entidade | Fistel | Número_Estação | Município | Código_Município | UF | Latitude | Longitude | Classe | Num_Serviço | Classe_Emissão | Largura_Emissão(kHz) | Validade_RF | Status | Fonte | Multiplicidade | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2154 | 87.9 | ASSOCIACAO CULTURAL COMUNITARIA SIMONENSE | 50014035022 | 631438289 | São Simão | 3550902 | SP | -21.479722222222165 | -47.55694444444433 | 3 | 231 | <NA> | 256 | <NA> | RADCOM | SRD | 1 |
2126 | 87.9 | ASSOCIACAO COM.BENEF.NOSSA SRA.DA CONCEICAO-RA... | 50011838558 | 659050722 | Pereiras | 3537503 | SP | -23.075833333333332 | -47.969444444444335 | 3-A | 231 | <NA> | 256 | <NA> | RADCOM | SRD | 1 |
2354 | 98.3 | ASSOCIAÇÃO DE RADIODIFUSÃO COMUNITÁRIA ARNORED... | 50407724672 | 699363594 | Governador Celso Ramos | 4206009 | SC | -27.3155555555555 | -48.5480555555555 | P-A | 231 | <NA> | 256 | <NA> | RADCOM | SRD | 1 |
3248 | 104.9 | ASSOCIACAO COMUNITARIA DE SANTO ANTONIO DO MONTE | 50013840010 | 684040328 | Santo Antônio do Monte | 3160405 | MG | -20.087777777777667 | -45.29388888888883 | 3-B | 231 | <NA> | 256 | <NA> | RADCOM | SRD | 1 |
2042 | 87.9 | ASSOCIACAO COMUNIT. PRO-DESENV. CULT. E ARTIST... | 50011314303 | 631374922 | Caconde | 3508702 | SP | -21.538333333333334 | -46.648611111111 | 3 | 231 | <NA> | 256 | <NA> | RADCOM | SRD | 1 |
STEL
update_stel
update_stel (conn:pyodbc.Connection, folder:Union[str,pathlib.Path])
Atualiza a tabela local retornada pela query STEL
, com tratamento de erro de conectividade.
Type | Details | |
---|---|---|
conn | Connection | Objeto de conexão de banco |
folder | Union | Pasta onde salvar os arquivos |
Returns | DataFrame | DataFrame com os dados atualizados |
= update_stel(conn, folder)
stel 5) stel.sample(
CPU times: total: 3.98 s
Wall time: 29.6 s
Frequência | Entidade | Fistel | Número_Estação | Município | Código_Município | UF | Latitude | Longitude | Classe | Num_Serviço | Classe_Emissão | Largura_Emissão(kHz) | Validade_RF | Status | Fonte | Multiplicidade | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
23384 | 767.0 | TELEVISAO RIO FORMOSO LTDA | 13030154475 | 3298213 | Miranorte | 1713304 | TO | -9.535833333333333 | -48.576111111111 | TX | 728 | C3F | 6000.0 | 1997-10-20 | L | STEL | 1 |
14150 | 156.55 | VOPAK BRASIL S.A. | 50415542502 | 1006008893 | Santos | 3548500 | SP | -23.926388888888834 | -46.372777777777664 | FC | 604 | F3E | 11.0 | 2037-10-07 | L | STEL | 1 |
31795 | 25.375 | EDIFICIO DOUBLE SPACE FARIA LIMA | 50403887305 | 688907423 | São Paulo | 3550308 | SP | -23.591116666666668 | -46.68056944444433 | TX | 060 | F3E | 16.0 | 2016-10-24 | L | STEL | 1 |
2056 | 131.875 | AZUL LINHAS AEREAS BRASILEIRAS S.A | 50405707169 | 1009310787 | São Gonçalo do Amarante | 2412005 | RN | -5.763611111111 | -35.37222222222216 | FA | 507 | A3E | 6.0 | 2029-01-07 | L | STEL | 1 |
20432 | 156.75 | PETROLEO BRASILEIRO S A PETROBRAS | 50411168908 | 700046925 | Santos | 3548500 | SP | -25.266938888888834 | -45.252811111111 | FC | 604 | G3E | 16.0 | 2033-12-03 | L | STEL | 1 |
MOSAICO
split_designacao
split_designacao (df:pandas.core.frame.DataFrame)
Parse a bandwidth string to extract the numerical component and a character class
SRD
update_srd
update_srd (mongo_client:pymongo.mongo_client.MongoClient, folder:Union[str,pathlib.Path])
Efetua a query na tabela de Radiodifusão no banco mongoDB mongo_client
e atualiza o arquivo local
Type | Details | |
---|---|---|
mongo_client | MongoClient | Objeto de conexão com o MongoDB |
folder | Union | Pasta onde salvar os arquivos |
Returns | DataFrame | DataFrame com os dados atualizados |
= os.environ['MONGO_URI']
uri = MongoClient(uri)
mongo_client mongo_client.server_info()
{'version': '4.0.5',
'gitVersion': '3739429dd92b92d1b0ab120911a23d50bf03c412',
'targetMinOS': 'Windows 7/Windows Server 2008 R2',
'modules': [],
'allocator': 'tcmalloc',
'javascriptEngine': 'mozjs',
'sysInfo': 'deprecated',
'versionArray': [4, 0, 5, 0],
'openssl': {'running': 'Windows SChannel'},
'buildEnvironment': {'distmod': '2008plus-ssl',
'distarch': 'x86_64',
'cc': 'cl: Microsoft (R) C/C++ Optimizing Compiler Version 19.00.24223 for x64',
'ccflags': '/nologo /EHsc /W3 /wd4355 /wd4800 /wd4267 /wd4244 /wd4290 /wd4068 /wd4351 /wd4373 /we4013 /we4099 /we4930 /WX /errorReport:none /MD /O2 /Oy- /bigobj /utf-8 /Zc:rvalueCast /Zc:strictStrings /volatile:iso /Gw /Gy /Zc:inline',
'cxx': 'cl: Microsoft (R) C/C++ Optimizing Compiler Version 19.00.24223 for x64',
'cxxflags': '/TP',
'linkflags': '/nologo /DEBUG /INCREMENTAL:NO /LARGEADDRESSAWARE /OPT:REF',
'target_arch': 'x86_64',
'target_os': 'windows'},
'bits': 64,
'debug': False,
'maxBsonObjectSize': 16777216,
'storageEngines': ['devnull', 'ephemeralForTest', 'mmapv1', 'wiredTiger'],
'ok': 1.0}
= update_srd(mongo_client, folder)
mosaico 5) mosaico.sample(
CPU times: total: 3 s
Wall time: 3.75 s
Frequência | Entidade | Fistel | Número_Estação | Município | Código_Município | UF | Latitude | Longitude | Classe | Num_Serviço | Classe_Emissão | Largura_Emissão(kHz) | Validade_RF | Status | Fonte | Multiplicidade | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
6112 | 57.0 | PREFEITURA MUNICIPAL DE SAO BONIFACIO | 14023501395 | 323090044 | São Bonifácio | 4215901 | SC | -27.9013888888888333 | -48.9291666666666666 | C | 800 | <NA> | 6000.0 | 2018-12-31 | TV-C7 | MOS | 1 |
10493 | 533.0 | TELEVISAO INDEPENDENTE DE SAO JOSE DO RIO PRET... | 50409648620 | 699602360 | Cajazeiras | 2503704 | PB | -6.8947277777776666 | -38.5508333333333333 | A | 801 | <NA> | 5700.0 | 2027-07-30 | TV-C4 | MOS | 1 |
3721 | 213.0 | PREFEITURA MUNICIPAL DE SONORA | 50400553821 | 322828732 | Sonora | 5007935 | MS | -17.5802777777776666 | -54.7505555555555000 | C | 800 | <NA> | 6000.0 | 2018-12-31 | TV-C7 | MOS | 1 |
16865 | 107.3 | BRASIL AMAZONIA COMUNICACAO E EMPREENDIMENTOS ... | 50001791109 | 323688144 | Nova Timboteua | 1505007 | PA | -1.1997222222221666 | -47.3977777777776666 | A3 | 230 | <NA> | 256.0 | 2028-12-08 | FM-C4 | MOS | 1 |
11089 | 521.0 | TELEVISAO ANHANGUERA DE ARAGUAINA LTDA | 50411145363 | 1005698659 | Augustinópolis | 1702554 | TO | <NA> | <NA> | C | 801 | <NA> | 5700.0 | 2028-10-03 | TV-C3 | MOS | 1 |
TELECOM
update_telecom
update_telecom (mongo_client:pymongo.mongo_client.MongoClient, folder:Union[str,pathlib.Path])
Efetua a query na tabela licenciamento
no banco mongoDB mongo_client
e atualiza o arquivo local
Type | Details | |
---|---|---|
mongo_client | MongoClient | Objeto de conexão com o MongoDB |
folder | Union | Pasta onde salvar os arquivos |
Returns | DataFrame | DataFrame com os dados atualizados |
= update_telecom(mongo_client, folder)
telecom 5)
telecom.sample(# telecom = pd.read_parquet(folder / 'telecom.parquet.gzip')
⚠ Executando a query na base licenciamento do Mosaico, processo demorado! ⚠
AttributeError: 'bool' object has no attribute 'iteritems'
AERONAUTICA
update_aero
update_aero (folder:Union[str,pathlib.Path])
Atualiza a base de dados de emissões da aeronáutica
Type | Details | |
---|---|---|
folder | Union | Pasta onde salvar os arquivos |
Returns | DataFrame | DataFrame com os dados atualizados |
= update_aero(folder)
aero 5) aero.sample(
ExpatError: junk after document element: line 39, column 16
Base Consolidada ANATEL
validar_coords
validar_coords (row:pandas.core.series.Series, connector:pyodbc.Connection=None)
Valida os dados de coordenadas e município em row
no polígono dos municípios em banco corporativ do IBGE
Type | Default | Details | |
---|---|---|---|
row | Series | Linha de um DataFrame | |
connector | Connection | None | Conector de Banco de Dados |
Returns | List | DataFrame com dados do município |
update_cached_df
update_cached_df (df:pandas.core.frame.DataFrame, df_cache:pandas.core.frame.DataFrame)
Mescla ambos dataframes eliminando os excluídos (existentes somente em df_cache)
update_base
update_base (conn:pyodbc.Connection, clientMongoDB:pymongo.mongo_client.MongoClient, folder:Union[str,pathlib.Path], conn_threads:bool=False)
Wrapper que atualiza opcionalmente lê e atualiza as 4 bases indicadas anteriormente, as combina e salva o arquivo consolidado na folder folder
Type | Default | Details | |
---|---|---|---|
conn | Connection | Objeto de conexão de banco | |
clientMongoDB | MongoClient | Objeto de conexão com o MongoDB | |
folder | Union | Pasta onde salvar os arquivos | |
conn_threads | bool | False | Flag para criar uma conexão de banco por thread |
Returns | DataFrame | DataFrame com os dados atualizados |
# base = update_base(conn, mongo_client, folder)
# base.sample(5)
⚠ Executando a query na base licenciamento do Mosaico, processo demorado! ⚠