quarta-feira, 15 de setembro de 2021

Como utilizar o comando PARALLEL

 Um inicio é ler a documentação em https://www.gnu.org/software/parallel/parallel_tutorial.html 

na falta de algum exemplo melhor tenho este ...

#!/bin/bash
for ano in {2001..2019}
do
echo gdal_translate -of GTiff -a_srs EPSG:4326 -co TILED=YES Merge_IGBP_C6_"$ano".nc Vegetation_"$ano".tif >>lista.txt
done
nohup parallel -j 5 < lista.txt > lista.log &
        


Sucesso!!

sexta-feira, 30 de julho de 2021

Consultas encadeadas utilizando With

Neste post estou apresentando o esquema comentado de uma consulta encadeada que agiliza as análises de grandes quantidade de dados.

with alias_1 as (
	select colunas, 
		(row_number() over(partition by coluna order by coluna)) as id -- Exemplo de "Window Function"
		from tabela
	), -- a virgula indica que pode ter outras tabelas disponíveis
	alias_2 as (
		select coluna 
			from tabela
	) -- sem a virgura indica que será feira uma consulta final
select a1.coluna, a2.coluna
	from alias_1 a1, alias_2 a2
	where a1.coluna = a2.coluna;

dica para formatacao do codigo http://hilite.me/

sábado, 5 de junho de 2021

Como criar um retângulo (polígono) a partir de de dois pontos.

Existem situações que é necessário criar um Bounding Box ou Retângulo Envolvente para executar uma filtragem no Banco de Dados. Neste caso vamos utilizar os dois pontos encontrados no comando ogrinfo que foi explicado em https://geoajuda.blogspot.com/2021/01/como-saber-qual-o-bounding-box-envelope.html

st_setsrid( st_makebox2d( st_makepoint(-58.8984,-9.8412), st_makepoint(-46.0608,2.5911)), 4326)

Aqui está o link [https://postgis.net/docs/ST_MakeBox2D.html] para detalhamento do comando no manual 

sexta-feira, 22 de janeiro de 2021

Uso do comando find para organizar diretórios

  •  Identificar o espaço em disco usado:

du -shc /srv/www/users/*
  •  Identificar o número de arquivos:
find /srv/www/users -type f | wc -l
  • Remover arquivos com data de acesso igual ou superior a 30 dias; o parâmetro ctime é para criação e modificação e o tempo é múltiplo de 24hs ou seja +1 representa 2 dias atráz.
find /srv/www/users -type f -atime +30 -delete
  • Remover diretorios com zero bytes
  • find /srv/www/users -type d -empty -delete
  • Remover arquivos com tamanho menor que 1 Kbytes
  • find /srv/www/users -type f -size -1k -delete

    segunda-feira, 18 de janeiro de 2021

    Como saber qual o Bounding Box, Envelope ou Retângulo Envolvente dos dados vetoriais

     

    Quando você está precisando saber o retângulo envolvente de um shapefile pode utilizar o comando ogrinfo para saber esta informação pois o mesmo possui o atributo Extent que mostra exatamente o ponto inferior esquerdo e o superior direito conforme pode ser visto na figura abaixo.



    O comando:

    ogrinfo -so -rl mun_pa.shp
    INFO: Open of `mun_pa.shp'
          using driver `ESRI Shapefile' successful.
    Layer name: mun_pa
    Metadata:
      DBF_DATE_LAST_UPDATE=2020-04-28
    Geometry: Polygon
    Feature Count: 144
    Extent: (-58.898324, -9.841162) - (-46.060951, 2.591028)
    Layer SRS WKT:
    GEOGCRS["WGS 84",
        DATUM["World Geodetic System 1984",
            ELLIPSOID["WGS 84",6378137,298.257223563,
                LENGTHUNIT["metre",1]]],
        PRIMEM["Greenwich",0,
            ANGLEUNIT["degree",0.0174532925199433]],
        CS[ellipsoidal,2],
            AXIS["latitude",north,
                ORDER[1],
                ANGLEUNIT["degree",0.0174532925199433]],
            AXIS["longitude",east,
                ORDER[2],
                ANGLEUNIT["degree",0.0174532925199433]],
        ID["EPSG",4326]]
    Data axis to CRS axis mapping: 2,1
    NM_MUNICIP: String (254.0)
    CD_GEOCMU: String (254.0)
    gid: Integer (4.0)
    id_0: Integer (2.0)
    id_1: Integer (2.0)

    sábado, 9 de janeiro de 2021

    Filtragem de datas em série temporal utilizando o Python Pandas

     Estou trabalhando com um conjunto de dados da estação meteorológica automática de Taubaté, cujos dados foram obtidos em https://tempo.inmet.gov.br/TabelaEstacoes/A728 .

    Tabela mostrando os dados originais do INMET


    Para leitura dos dados com Python Pandas utilizei:

    df = pd.read_csv('./TAUBATE_A728.csv', 
                     sep=';', 
                     skiprows=1, 
                     parse_dates=[[0,1]], dayfirst=True,
                     index_col=0,
                     usecols= [0,1,3,7,14,15,16,18],
                     decimal= ',',
                     dtype={'Temp. Max. (C)': np.float64, 
                            'Umi. Min. (%)': np.float64, 
                            'Vel. Vento (m/s)': np.float64, 
                            'Dir. Vento (m/s)': np.float64, 
                            'Raj. Vento (m/s)': np.float64, 
                            'Chuva (mm)': np.float64}
                    )

    Note que utilizei vários parâmetros para definir o índice do DataFrame como sendo a união dos campos data e hora que originalmente estão separados. Também fiz a escolha das colunas que me interessavam e defini o tipo do dado a ser manipulado.

    Uma primeira forma de filtrar é utilizando o padrão normalmente utilizado em qualquer coluna, porém considerando o índice do DataFrame:

    df[df.index.month == 6]

    A segunda forma é mais indicada para a situação pois ela considera o índice temporal:

    df['2020-06-02']

    Eu recomendo visitar o seguinte tutorial