sexta-feira, 6 de novembro de 2020

Como acessar o banco de dados na linha de comando sem password

 Uma maneira que permite o usuário fazer acesso sem ter que digitar a senha é configurando o arquivo .pgpass maiores detalhes podem ser encontrados em https://www.postgresql.org/docs/10/libpq-pgpass.html 

Configuração de acesso remoto com SSH

 O ssh permite o acesso remoto ao servidor, porém além da tradicional forma de acessar:

user@servidor.dominio 

é possível criar pontes de acesso para facilitar o uso na máquina local.

No exemplo:

ssh -f -N -L 9995:localhost:5435 bd25

Estou mapeando na maquina local a porta 9995 para comunicar diretamente com a porta 5435 do servidor remoto bd25. Porém existe um pulo a mais nesta história, pois quando estou fora da rede corporativa não tenho acesso direto, por isso preciso me autenticar em um servidor VPN e acessar apenas uma única máquina. 

Configurando o arquivo ~/.ssh/config eu posso definir o acesso com jump direto


Host srv1

        HostName 192.160.25.1

        User mysuer

        Port 22


Host bd25

        HostName bd.dominio

        Port 22

        User mysuer

        ProxyJump srv1

Conforme apresentado no exemplo acima eu posso fazer acesso direto ao srv1 da seguinte maneira:

ssh srv1

ele vai fazer ssh mysuer@192.160.25.1 automaticamente, e além disso, conforme apresentado no inicio do post estou acessando diretamente o bd25 que nesta configuração vai primeiro no srv1.


sexta-feira, 4 de setembro de 2020

Como calcular área de um polígono no Postgis

 O link para o manual do Postgis é https://postgis.net/docs/ST_Area.html onde você vai encontrar detalhes da documentação. Neste post eu considerei que os dados do meu banco estão todos em projeção EPSG:4326 e então efetuo a conversão de tipo da geometria de Geometry para Geography e em seguida utilizo a função st_area.

No primeiro exemplo a função está retornando o dado em metros quadrados, portanto este é a unidade padrão;

   st_area( ucf.geom::geography) m2


Para obter o resultado em quilômetros quadrados foi realizada a divisão por 1 milhão;

   st_area( a_ucf_aq1km_16.intersection_geom::geography)/1000000 km2


Para obter o resultado em hectares foi realizada a divisão por 10 mil;

   st_area( a_ucf_aq1km_16.intersection_geom::geography)/10000 ha


sábado, 22 de agosto de 2020

Converter string para data no Python Pandas

 

Com o comando abaixo foi recortado do nome de uma imagem a parte que representa o ano e dia Juliano (DOY) e convertido para o formato data.

dados["data_pas"] = pd.to_datetime(dados.cena_atual.str.slice(9,16), format='%Y%j')

Truncar data no Python Pandas

 


# este comando é pra truncar a data mantendo os valores dentro da hora ex. 16:54 -> 16:00

df["data_hora"] = df.data_hora_gmt.dt.floor("H")

segunda-feira, 4 de maio de 2020

Comandos mágicos para edição rápida de arquivos txt em Shell

Estes comandos são apenas para recordar a sintaxe rápida pois a explicação depende de muita leitura, recomendo os livros do Verde (Aurélio Jargas) https://aurelio.net/ em especial https://aurelio.net/sed/sed-howto/#conhecendo-o-sed

# insere o texto "begin transation" na primeira linha do arquivo
# focos_terrama2q.sql
sed -i '1s/^/begin transaction; /' focos_terrama2q.sql 


# insere o texto na linha específica (linha 29322846)
sed -i '29322846s/^/commit; /' focos_terrama2q.sql

# insere o texto na ultima linha
echo "commit; " >> focos_terrama2q.sql

# insere algum texto a cada 100000 linhas
sed '0~100000 s/$/\ncommit;\nbegin;/g' < focos_terrama2q.sql > focos.sql