9x
005597
2024-08-22

Consultas web (API) da Geo-Zone Tool: Automatização usando Python

Como é que posso automatizar os pedidos Web (API) para a ferramenta Geo-Zone Tool com o Python?


Resposta:

Sim, é possível fazer isso com muita facilidade. O exemplo a seguir mostra isso.

Preparação

Para realizar pedidos web na ferramenta Geo-Zone Tool utilizando Python, é necessário:

  1. Editor ou ID (Integrated Development Beam) para escrever o script
  2. Python-python.org
  3. Solicitações da biblioteca Python
  4. Biblioteca Python Pandas (opcional)

Para realizar uma solicitação web da ferramenta Geo-Zone Tool, são necessárias informações para a ferramenta Geo-Zone Tool. Utilizando o exemplo da estrutura do URL da consulta, isso é explicado no seguinte artigo:
Acesso ao serviço web (API)

Para este exemplo, são utilizadas as seguintes informações, que tem de substituir no script pela sua:

  1. Idioma: pt (alemão)
  2. Iniciar sessão: john [email protected]/pt
  3. linha: 123456ABCD
  4. Mapa: vento-DIN-EN-1991-1-4 (carga de vento de acordo com o anexo alemão EC1)
  5. Local: Dlubal, Tiefenbach (sede da Dlubal GmbH)
  6. Posição: 49.4353975, 12.5894907 (latitude, longitude)

Efetuar pedido web e ler dados

O seguinte script consulta o serviço web da ferramenta de geolocalização e documenta os tempos e os conteúdos necessários.


…
Importar #%%
# Biblioteca para ler a marca de tempo (biblioteca padrão, opcional) 
Importar data e hora como dt
# Executar biblioteca através de pedido web
Pedidos de importação

#%% Definir parâmetros
# Ferramenta de geolocalização de serviços web de URL 
urlgz = ' https://external-crm.dlubal.com/loadzones/data.aspx'

# Parâmetros para a consulta (substituir pelos seus próprios valores)
parz = {
        'idioma': 'pt',
        'Iniciar sessão': '[email protected]',
        'hash': '123456ABCD',
        'mapa': 'vento-DIN-EN-1991-1-4',
        'local': 'Dlubal, Tiefenbach, Alemanha',
        'elemento': '49.4353975,12.5894907'
        }
# Definir hora para o cancelamento do pedido
reto=10 #p

Realiza a consulta #%%
# Carimbo do tempo antes da recuperação
cdt1 = dt.datetime.now ()
# Consulta na Web utilizando pedidos
rgz = query.get(urlgz, params=pargz, tempo limite=reto)
# Carimbo do tempo após recuperação
cdt2 = dt.datetime.now ()
# Duração da consulta em segundos
dur=(cdt2-cdt1).total_seconds()
# Código de estado HTTP do pedido
sgz=rgz.status_code
# Descrição do conteúdo da consulta
hgz=rgz.headers['Tipo de conteúdo']
# Conteúdo do pedido de web como texto
tgz = rgz.text

#%% Saída da consola do pedido web
txt=[]
txt.append(f"Carimbo de tempo: {cdt1}") #Tempo YYYY-MM-DD HH:MM:SS.SSSSSS
txt.append(f"Duração: {dur} s") #Duração da consulta
txt.append(f"Código do estado: {rgz.status_code}")), Código de estado #HTTP (normal: 200)
txt.append(f"Cabeçalho: {hgz}")), #descrição do conteúdo (normal: texto/html; conjunto de caracteres=utf-8)
txt.append(f" Saída de texto do pedido:\n{tgz}") #Saída da ferramenta de geolocalização
imprimir ('\n'.join(txt))
…

Isto leva aos seguintes resultados, por exemplo:


Carimbo do tempo: 2024-08-22 13:24:32.727006
Duração: 2,214527
Código do estado: 200
Cabeçalho: texto/html; conjunto de caracteres=utf-8
Texto do pedido: 
Resultado 1, Resultado 2, Zona, Latitude, Longitude, Elevação, Rua, ZIP, Cidade, Norma, Anexo, Nota(s), Aviso legal
22,5 m/s,0,32 kN/m2,1,49,4353975,12,5894907,520,69384765625,Am Zellweg 2,93464,Tiefenbach,EN 1991-1-4,DIN EN 1991-1-4

Módulo adicional: Preparação do conteúdo dos pedidos web

O seguinte script converte o texto obtido a partir do serviço web Geo-Zone Tool numa forma tabular. Além disso, os valores dos resultados são separados das unidades e finalmente guardados como ficheiro CSV e Excel.


…
Importar #%%
# Funções de cadeias de caracteres da biblioteca padrão para importação e exportação
a partir de io importar StringIO
# Biblioteca para o processamento de dados
Importar pandas como pd

#%% Funções
de rsep_val_unit(indf, cnstart='Resultados',):
    "''"
    Colunas separadas do dataframe de pedido de ferramenta de geolocalização Dlubal com resultados por valor e unidade.

    Propriedades
    ----------
    indf pandas.DataFrame
        Dados de entrada.
    Cnstart: cadeia de caracteres, opcional
        Identificador no início do nome da coluna que contém resultados

    Deformações
    -------
    outdf : pandas.DataFrame
        Dados de saída.

    "''"
    tmp2 = indf.loc(axis=1)[indf.columns.str.startswith(cnstart)]
    tmp3 = pd.DataFrame ()
    para i em tmp2.columns:
        tmp3{%>

Isto resulta nos seguintes resultados, por exemplo:


Estrutura de dados original:
   Resultado 1, Resultado 2, Zona, Latitude, Longitude, Elevação, Rua, ZIP, Notas de anexo da norma da cidade
0 22,5 m/s 0,32 kN/m2 1 49.435398 12.589491 520.693848 Am Zellweg 2 93464 Tiefenbach EN 1991-1-4 DIN EN 1991-1-4 NaN
Quadros de dados manipulados:
  (Resultado 1, valor) (Resultado 1, unidade) (Resultado 2, valor) (Resultado 2, unidade) Zona Latitude Longitude Elevação Rua ZIP Cidade Anexo padrão Nota(s)
0 22,5 m/s 0,32 kN/m2 1 49.435398 12.589491 520.693848 Am Zellweg 2 93464 Tiefenbach EN 1991-1-4 DIN EN 1991-1-4 NaN
Saída de exemplo:
   O primeiro resultado tem o valor 22,5. (m/s)

Autor

O Eng.º GBhardt presta apoio técnico aos clientes da Dlubal Software e trata dos seus pedidos.

Ligações