Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
gqueiroz committed Mar 6, 2024
1 parent 3f0b23d commit ac2301f
Show file tree
Hide file tree
Showing 109 changed files with 517 additions and 428 deletions.
Binary file added _images/turma-2022.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added _images/turma-2023.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions _sources/imagens.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -65,3 +65,4 @@ Outra maneira consiste em armazenar diversas bandas no mesmo arquivo. Neste caso
./imagens/gdal
./imagens/numpy
./imagens/visualizacao
./imagens/escrita
136 changes: 136 additions & 0 deletions _sources/imagens/escrita.rst.txt
Original file line number Diff line number Diff line change
@@ -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');
6 changes: 3 additions & 3 deletions _sources/imagens/numpy.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
-------------------------------------------
Expand Down
3 changes: 2 additions & 1 deletion _sources/index.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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::
Expand Down
4 changes: 2 additions & 2 deletions _sources/instalacao/anaconda.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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 <https://docs.anaconda.com/anaconda/install/linux/>`_, no manual da Anaconda.
Para maiores detalhes sobre o processo de instalação no Linux, consulte a seção `Installing on Linux <https://docs.anaconda.com/anaconda/install/linux/>`_, no manual da Anaconda.
9 changes: 8 additions & 1 deletion _sources/projetos/2022/index.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,11 @@ Turma 2022
:maxdepth: 1
:titlesonly:

./p01-spectral
./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
9 changes: 9 additions & 0 deletions _sources/projetos/2023/index.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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 <http://www.geoinfo.info/>`_.

2 changes: 0 additions & 2 deletions _sources/visao-geral/cronograma.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,6 @@ Aulas Regulares
+------+------------+--------------------------------------------------------------------------------------------------------------+
| ... | ... | ... |
+------+------------+--------------------------------------------------------------------------------------------------------------+
| 04 | 22/05/2023 | Apresentação de Trabalhos |
+------+------------+--------------------------------------------------------------------------------------------------------------+
| 05 | 24/05/2023 | Apresentação de Trabalhos |
+------+------------+--------------------------------------------------------------------------------------------------------------+

Expand Down
17 changes: 17 additions & 0 deletions _sources/visao-geral/discentes.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
----------

Expand Down
4 changes: 0 additions & 4 deletions agradecimentos.html
Original file line number Diff line number Diff line change
Expand Up @@ -80,10 +80,6 @@
<li class="toctree-l1"><a class="reference internal" href="projetos/2022/index.html">Turma 2022</a></li>
<li class="toctree-l1"><a class="reference internal" href="projetos/2021/index.html">Turma 2021</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Provas</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="provas/2023.html">Avaliação 2023</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Informações Gerais:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="licenca.html">Licença</a></li>
Expand Down
4 changes: 0 additions & 4 deletions def.html
Original file line number Diff line number Diff line change
Expand Up @@ -79,10 +79,6 @@
<li class="toctree-l1"><a class="reference internal" href="projetos/2022/index.html">Turma 2022</a></li>
<li class="toctree-l1"><a class="reference internal" href="projetos/2021/index.html">Turma 2021</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Provas</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="provas/2023.html">Avaliação 2023</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Informações Gerais:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="licenca.html">Licença</a></li>
Expand Down
4 changes: 0 additions & 4 deletions genindex.html
Original file line number Diff line number Diff line change
Expand Up @@ -79,10 +79,6 @@
<li class="toctree-l1"><a class="reference internal" href="projetos/2022/index.html">Turma 2022</a></li>
<li class="toctree-l1"><a class="reference internal" href="projetos/2021/index.html">Turma 2021</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Provas</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="provas/2023.html">Avaliação 2023</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Informações Gerais:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="licenca.html">Licença</a></li>
Expand Down
6 changes: 2 additions & 4 deletions imagens.html
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@
<li class="toctree-l2"><a class="reference internal" href="imagens/gdal.html">4.1. GDAL - <strong>G</strong>eospatial <strong>D</strong>ata <strong>A</strong>bstraction <strong>L</strong>ibrary</a></li>
<li class="toctree-l2"><a class="reference internal" href="imagens/numpy.html">4.2. NumPy</a></li>
<li class="toctree-l2"><a class="reference internal" href="imagens/visualizacao.html">4.3. Visualização de Imagens</a></li>
<li class="toctree-l2"><a class="reference internal" href="imagens/escrita.html">4.4. Escrita em arquivos de Imagens</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="vetorial.html">5. Manipulação de Dados Vetoriais</a></li>
Expand All @@ -86,10 +87,6 @@
<li class="toctree-l1"><a class="reference internal" href="projetos/2022/index.html">Turma 2022</a></li>
<li class="toctree-l1"><a class="reference internal" href="projetos/2021/index.html">Turma 2021</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Provas</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="provas/2023.html">Avaliação 2023</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Informações Gerais:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="licenca.html">Licença</a></li>
Expand Down Expand Up @@ -162,6 +159,7 @@
<li class="toctree-l1"><a class="reference internal" href="imagens/gdal.html">4.1. GDAL - <strong>G</strong>eospatial <strong>D</strong>ata <strong>A</strong>bstraction <strong>L</strong>ibrary</a></li>
<li class="toctree-l1"><a class="reference internal" href="imagens/numpy.html">4.2. NumPy</a></li>
<li class="toctree-l1"><a class="reference internal" href="imagens/visualizacao.html">4.3. Visualização de Imagens</a></li>
<li class="toctree-l1"><a class="reference internal" href="imagens/escrita.html">4.4. Escrita em arquivos de Imagens</a></li>
</ul>
</div>
</section>
Expand Down
Loading

0 comments on commit ac2301f

Please sign in to comment.