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