diff --git a/_images/turma-2022.png b/_images/turma-2022.png new file mode 100644 index 0000000..b09a0bb Binary files /dev/null and b/_images/turma-2022.png differ diff --git a/_images/turma-2023.png b/_images/turma-2023.png new file mode 100644 index 0000000..52748cd Binary files /dev/null and b/_images/turma-2023.png differ diff --git a/_sources/imagens.rst.txt b/_sources/imagens.rst.txt index 14e0ef5..43db6e0 100644 --- a/_sources/imagens.rst.txt +++ b/_sources/imagens.rst.txt @@ -65,3 +65,4 @@ Outra maneira consiste em armazenar diversas bandas no mesmo arquivo. Neste caso ./imagens/gdal ./imagens/numpy ./imagens/visualizacao + ./imagens/escrita diff --git a/_sources/imagens/escrita.rst.txt b/_sources/imagens/escrita.rst.txt new file mode 100644 index 0000000..9e090ec --- /dev/null +++ b/_sources/imagens/escrita.rst.txt @@ -0,0 +1,136 @@ +.. + This file is part of "Notas de Aula do Curso Introdução à Programação com Dados Geoespaciais". + Copyright 2020-2021, Gilberto Queiroz and Thales Körting. + + +.. include:: ../def.rst + + +.. _sec_imagens_escrita: + +Escrita em arquivos de Imagens +============================== + + +Uma forma de escrever em arquivos de imagens é por meio da abertura de um arquivo de referência, geração de matrizes das bandas com alterações nos dados originais, e salvamento em um novo arquivo. Veja a sequência de passos: +- abrir dataset +- obter bandas individuais +- acessar array de pixels (formato NumPy) +- alterar os array de pixels +- enviar para os objetos GDAL +- atualizar metadados das imagens +- salvar as alterações no arquivo + +O exemplo a seguir abre a imagem de referência (com 5 bandas), aplica o contraste nas 3 bandas visíveis, e salva um novo arquivo contendo somente 3 bandas, em ordem diferente (RGB). + +.. code-block:: python + + # importar a biblioteca gdal e a matplotlib + from osgeo import gdal + import matplotlib.pyplot as plt + + # informar o uso de exceções + gdal.UseExceptions() + + # abrir o dataset da imagem RapidEye, com 5 bandas + # (ao usar o colab, lembre-se de fazer o upload na aba de arquivos) + dataset = gdal.Open("crop_rapideye.tif", gdal.GA_ReadOnly) + + # obter os objetos com as informações das bandas + band_blue = dataset.GetRasterBand(1) + band_green = dataset.GetRasterBand(2) + band_red = dataset.GetRasterBand(3) + band_rededge = dataset.GetRasterBand(4) + band_nir = dataset.GetRasterBand(5) + + # obter as matrizes de pixels de cada banda + array_blue = band_blue.ReadAsArray() + array_green = band_green.ReadAsArray() + array_red = band_red.ReadAsArray() + array_rededge = band_rededge.ReadAsArray() + array_nir = band_nir.ReadAsArray() + + # aqui já se pode fechar a imagem original + dataset = None + + # realizar alterações nas matrizes, lembrando de observar o + # tipo de dados original, de modo a manter os dados nos limites adequados + # definir um valor de ganho e aplicar nas bandas do visível + gain = 2.5 + array_blue_gain = array_blue.copy() * gain + array_green_gain = array_green.copy() * gain + array_red_gain = array_red.copy() * gain + + # verificar valores fora do limite + limit = 255 + array_blue_gain[array_blue_gain > limit] = limit + array_green_gain[array_green_gain > limit] = limit + array_red_gain[array_red_gain > limit] = limit + + # definir driver, neste caso GeoTIFF + driver = gdal.GetDriverByName('GTiff') + + # obter metadados da imagem original, e alterar o número de bandas + number_of_lines = dataset.RasterYSize + number_of_columns = dataset.RasterXSize + number_of_bands = 3 # dataset.RasterCount + data_type = dataset.GetRasterBand(1).DataType + + # criar novo dataset + dataset_new = driver.Create("crop_rapideye_contrastRGB.tif", + number_of_columns, + number_of_lines, + number_of_bands, + data_type) + + # copiar informações espaciais da banda já existente + dataset_new.SetGeoTransform(dataset.GetGeoTransform()) + # copiar informações de projeção + dataset_new.SetProjection(dataset.GetProjectionRef()) + # escrever dados da matriz_contraste na banda + dataset_new.GetRasterBand(1).WriteArray(array_red_gain) + dataset_new.GetRasterBand(2).WriteArray(array_green_gain) + dataset_new.GetRasterBand(3).WriteArray(array_blue_gain) + # salvar valores + dataset_new.FlushCache() + # fechar o novo dataset + dataset_new = None + +Visualização do resultado +------------------------- + +Para visualizar a composição colorida, podemos reabrir o arquivo (nesse caso já organizado em RGB nas bandas 1, 2 e 3). + +.. code-block:: python + + dataset = gdal.Open("crop_rapideye_contrastRGB.tif", gdal.GA_ReadOnly) + + # obter os objetos com as informações das bandas + band_red = dataset.GetRasterBand(1) + band_green = dataset.GetRasterBand(2) + band_blue = dataset.GetRasterBand(3) + + # obter as matrizes de pixels de cada banda + array_red = band_red.ReadAsArray() + array_green = band_green.ReadAsArray() + array_blue = band_blue.ReadAsArray() + + # definimos os números de linhas/colunas/bandas + number_of_lines = dataset.RasterYSize + number_of_columns = dataset.RasterXSize + + # isso criamos uma matriz com 3 dimensões + # (3 bandas x linhas x colunas) + array_rgb = np.zeros((number_of_lines, number_of_columns, 3)) + + # veja que, para visualizar corretamente, + # precisaremos dividir as matrizes pelo + # maior valor, para obtermos uma matriz + # com valores normalizados entre 0.0 e 1.0 + array_rgb[:, :, 0] = array_red / array_red.max() + array_rgb[:, :, 1] = array_green / array_green.max() + array_rgb[:, :, 2] = array_blue / array_blue.max() + + plt.figure(figsize=(20, 5)) + plt.imshow(array_rgb) + plt.title('Composição colorida gerada em novo arquivo'); diff --git a/_sources/imagens/numpy.rst.txt b/_sources/imagens/numpy.rst.txt index 9142e17..f7acdfe 100644 --- a/_sources/imagens/numpy.rst.txt +++ b/_sources/imagens/numpy.rst.txt @@ -97,9 +97,9 @@ Para alterar o formato do array ``a`` para que ele se torne uma matriz :math:`3 >>> a = a.reshape(3, 5) >>> a - array([[ 0, 1, 2, 3, 4], - [ 5, 6, 7, 8, 9], - [10, 11, 12, 13, 14]]) + array([[1, 2, 3, 4, 5,], + [6, 7, 8, 9, 10,], + [11, 12, 13, 14, 15]]) Informações sobre a Estrutura de uma matriz ------------------------------------------- diff --git a/_sources/index.rst.txt b/_sources/index.rst.txt index 55e611b..68ebfe0 100644 --- a/_sources/index.rst.txt +++ b/_sources/index.rst.txt @@ -79,7 +79,8 @@ Na era do big data, os profissionais necessitam cada vez mais de conhecimentos e :maxdepth: 1 :caption: Provas - provas/2023 +.. provas/2022 +.. provas/2023 .. toctree:: diff --git a/_sources/instalacao/anaconda.rst.txt b/_sources/instalacao/anaconda.rst.txt index d07e0b9..246c0ed 100644 --- a/_sources/instalacao/anaconda.rst.txt +++ b/_sources/instalacao/anaconda.rst.txt @@ -36,7 +36,7 @@ O comando acima deve produzir algo como:: bash ~/Downloads/Anaconda3-2020.11-Linux-x86_64.sh -O comando acima irá fazer algumas perguntas. Colocamos abaixo algumas sugestôes, que você deverá substituir como desejado:: +O comando acima irá fazer algumas perguntas. Colocamos abaixo algumas sugestões, que você deverá substituir como desejado:: Do you accept the license terms? [yes|no] [no] >>> yes @@ -97,4 +97,4 @@ Algo semelhante ao exibido abaixo deverá ser apresentado:: .. note:: - Para maiores detalhes sobre o processo de instalação no Linux, consulte a seção `Installing on Linux `_, no manual da Anaconda. \ No newline at end of file + Para maiores detalhes sobre o processo de instalação no Linux, consulte a seção `Installing on Linux `_, no manual da Anaconda. diff --git a/_sources/projetos/2022/index.rst.txt b/_sources/projetos/2022/index.rst.txt index c9e6f0e..d82b95b 100644 --- a/_sources/projetos/2022/index.rst.txt +++ b/_sources/projetos/2022/index.rst.txt @@ -5,4 +5,11 @@ Turma 2022 :maxdepth: 1 :titlesonly: - ./p01-spectral \ No newline at end of file + ./p01-spectral + + - Comparação de resultados com diferentes resoluções + - Amostras de classificação por meio de crescimento de regiões + - Componente jupyter para visualização de séries temporais combinadas com recortes (plotly) + - Contraste com base em regras dos índices espectrais + - Cálculo de métricas espaciais, espectrais e temporais a partir de polígonos + - Criação de patches de imagens para treinamento de classificadores diff --git a/_sources/projetos/2023/index.rst.txt b/_sources/projetos/2023/index.rst.txt index eec59b0..3b6f3f5 100644 --- a/_sources/projetos/2023/index.rst.txt +++ b/_sources/projetos/2023/index.rst.txt @@ -11,3 +11,12 @@ Turma 2023 ./p04-segmentacao ./p05-nuvens + +Observações +----------- + + +**1.** Os scripts deverão conter documentação de uso. + +**2.** O relatório produzido deverá estar no formato do evento `GEOINFO `_. + diff --git a/_sources/visao-geral/cronograma.rst.txt b/_sources/visao-geral/cronograma.rst.txt index 7dd5e62..134c8db 100644 --- a/_sources/visao-geral/cronograma.rst.txt +++ b/_sources/visao-geral/cronograma.rst.txt @@ -37,8 +37,6 @@ Aulas Regulares +------+------------+--------------------------------------------------------------------------------------------------------------+ | ... | ... | ... | +------+------------+--------------------------------------------------------------------------------------------------------------+ - | 04 | 22/05/2023 | Apresentação de Trabalhos | - +------+------------+--------------------------------------------------------------------------------------------------------------+ | 05 | 24/05/2023 | Apresentação de Trabalhos | +------+------------+--------------------------------------------------------------------------------------------------------------+ diff --git a/_sources/visao-geral/discentes.rst.txt b/_sources/visao-geral/discentes.rst.txt index 2bc0fb0..8031189 100644 --- a/_sources/visao-geral/discentes.rst.txt +++ b/_sources/visao-geral/discentes.rst.txt @@ -9,6 +9,23 @@ Discentes ========= +Turma 2023 +---------- + + +.. image:: ../img/visao-geral/turma-2023.png + :width: 100% + :alt: Turma 2023 + +Turma 2022 +---------- + + +.. image:: ../img/visao-geral/turma-2022.png + :width: 100% + :alt: Turma 2022 + + Turma 2021 ---------- diff --git a/agradecimentos.html b/agradecimentos.html index 4cb0ca2..30a3eb5 100644 --- a/agradecimentos.html +++ b/agradecimentos.html @@ -80,10 +80,6 @@
  • Turma 2022
  • Turma 2021
  • -

    Provas

    -

    Informações Gerais:

    • Licença
    • diff --git a/def.html b/def.html index 0a51609..6688c52 100644 --- a/def.html +++ b/def.html @@ -79,10 +79,6 @@
    • Turma 2022
    • Turma 2021
    -

    Provas

    -

    Informações Gerais:

    • Licença
    • diff --git a/genindex.html b/genindex.html index 0312a60..d493717 100644 --- a/genindex.html +++ b/genindex.html @@ -79,10 +79,6 @@
    • Turma 2022
    • Turma 2021
    -

    Provas

    -

    Informações Gerais:

  • 5. Manipulação de Dados Vetoriais
  • @@ -86,10 +87,6 @@
  • Turma 2022
  • Turma 2021
  • -

    Provas

    -

    Informações Gerais:

    diff --git a/imagens/escrita.html b/imagens/escrita.html new file mode 100644 index 0000000..45ead36 --- /dev/null +++ b/imagens/escrita.html @@ -0,0 +1,290 @@ + + + + + + + 4.4. Escrita em arquivos de Imagens — SER-347/CAP-419 + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    + +
    +
    +
    + + + + + + + \ No newline at end of file diff --git a/imagens/gdal.html b/imagens/gdal.html index ee49603..1269912 100644 --- a/imagens/gdal.html +++ b/imagens/gdal.html @@ -76,6 +76,7 @@
  • 4.2. NumPy
  • 4.3. Visualização de Imagens
  • +
  • 4.4. Escrita em arquivos de Imagens
  • 5. Manipulação de Dados Vetoriais
  • @@ -95,10 +96,6 @@
  • Turma 2022
  • Turma 2021
  • -

    Provas

    -

    Informações Gerais:

    • Licença
    • diff --git a/imagens/numpy.html b/imagens/numpy.html index 5605abe..5609201 100644 --- a/imagens/numpy.html +++ b/imagens/numpy.html @@ -75,6 +75,7 @@
  • 4.3. Visualização de Imagens
  • +
  • 4.4. Escrita em arquivos de Imagens
  • 5. Manipulação de Dados Vetoriais
  • @@ -94,10 +95,6 @@
  • Turma 2022
  • Turma 2021
  • -

    Provas

    -

    Informações Gerais:

    • Licença
    • @@ -205,9 +202,9 @@

      4.2.3. Alterando o formato de uma matriz

      Para alterar o formato do array a para que ele se torne uma matriz \(3 \times 5\):

      >>> a = a.reshape(3, 5)
       >>> a
      -array([[ 0,  1,  2,  3,  4],
      -       [ 5,  6,  7,  8,  9],
      -       [10, 11, 12, 13, 14]])
      +array([[1,  2,  3,  4,  5,],
      +       [6,  7,  8,  9, 10,],
      +       [11, 12, 13, 14, 15]])
       
      diff --git a/imagens/visualizacao.html b/imagens/visualizacao.html index 0014f06..dfd1d0f 100644 --- a/imagens/visualizacao.html +++ b/imagens/visualizacao.html @@ -27,7 +27,7 @@ - + @@ -71,6 +71,7 @@
    • 4.3.2. Métodos simples para classificação
    +
  • 4.4. Escrita em arquivos de Imagens
  • 5. Manipulação de Dados Vetoriais
  • @@ -90,10 +91,6 @@
  • Turma 2022
  • Turma 2021
  • -

    Provas

    -

    Informações Gerais:


    @@ -363,7 +360,7 @@

    4.3.2. Métodos simples para classifica