Tópicos Especiais, Prof. Dr.Ing. Jorge Centeno - UFPR

Exercício 01 - Primeiros passos

Neste exercício usaremos a linguagem Python para criar e manipular imagens.
usando PYzo Usando Colab

Por favor, verifique se o Winpy está instalado no seu computador. Se não, obtenha uma copia do site oficial PYZO

Usando Colab: Crie uma conta Google e entre no COLAB

abra o PYZO. Você terá uma tela com um prompt ">>" esperando comandos para interação. Você pode usar os ícones na barra superior para alterar o diretório de trabalho ou usar os comando no prompt.

Você tem duas opções: "código", ou "texto", use texto para comentários e códigopara partes do programa

No editor de textos, crie um programa com as seguintes linhas:
		  
a=5 
b=4  
c= a + b 
print(c)

  	

Salvar e rodar o programa

usando PYzo Usando Colab

Agora salve seu programa em seu diretório de trabalho, por exemplo com o nome "prog001.py". Para isto, mude o nome do arquivo. Verifique se ele foi criado na pasta selecionada

Mude o nome "rename" de seu programa. Deve estar como Unttled. Renomeie para "prog001.py". Ele será armazenado em seu Google Drive

Para rodar o programa: pode teclar "run" ou control+Shift+E.

Acionar a tecla play (triângulo)

Para isto, mude o nome do arquivo. Verifique se ele foi criado (no Drive, se você está usando o COLAB).

veja a resposta na área interativa logo abaixo!

Agora, altere o valor de "a" ou de "b" e rode o programa de novo.

parte 2

Bem, parece que você já está programando algo. Vamos criar dois vetores (com numpy que serve para manipular arrays) e plotar um gráfico, usando matpotlib (biblioteca de plotagem matemática).

Passos:

		  
import numpy as np
import matplotlib.pyplot as plt  

 # definir dois vetores x e y  
x=[0, 50, 60, 80, 90, 100]
y=[0, 0, 1, 1, 0 , 0]

 # plotar o gráfico x vs y  
plt.plot(x,y)
plt.show()
 # ou com legenda...  
plt.plot(x,y, label='X vs Y')
plt.legend()
plt.show()
  	

É muito prático ler dados de um arquivo ASCII. Vamos então escrever uma série de linhas que permitem ler dados de um arquivo no disco (pode ser seu diretório, ou no google drive.

Opção 1, usando Pyzo.
		  
 import numpy as np
# ler uma tabela com 2 linhas contendo 9 numeros cada uma 
Nlinhas=2	# aqui defino o nro de linhas e colunas da tabela 
Ncolunas=9
T = np.zeros((Nlinhas, Ncolunas),dtype = float) # criamos tabela vazia  
f = open(‘tabela1.txt', 'r') # abrir arquivo

cl=0                 	 	 # um contador de linhas
for line in f:            	 # varrer linhas no arquivo
   cc=0;   		 	 # um contador de colunas
   for n in line.split(','):  #varrer elementos da linha lida
      a=float(n)            # converter em float e armazenar em T(cl, cc)
      T[cl,cc]=a
      cc=cc+1
   cl=cl+1
f.close()

   	

Opção 2, usando COLAB.
		  
 import numpy as np
import matplotlib.pylab as plt 
from google.colab import drive  # isto serve para usar  o drive 

drive.mount('/content/gdrive')  # montar seu drive como um disco virtual 

# ler uma tabela com 2 linhas contendo 9 numeros cada uma  
Nlinhas=2	 # aqui defino o nro de linhas e colunas da tabela 
Ncolunas=9
T = np.zeros((Nlinhas, Ncolunas),dtype = float) # criamos tabela vazia   
f = open('gdrive/My Drive/tabela1.csv', 'r')  

cl=0                 	 		 # um contador de linhas 
for line in f:            		 # varrer linhas no arquivo 
   cc=0   		 			 # um contador de colunas 
   for n in line.split(','):     #varrer elementos da linha lida 
      a=float(n)                 # converter em float e armazenar em T(cl, cc) 
      T[cl,cc]=a
      cc=cc+1
   cl=cl+1
f.close()
print(T)
 # separar X e Y, cada um em uma linha ...  
x=T[0,:]
y=T[1,:]
plt.plot(x,y, color=‘red’)
plt.show()


   	

Está gostando? vamos juntar os conhecimentos. Crie um arquivo com duas linhas (duas variáveis) contendo a temperatura dos últimos 15 dias, pro exemplo. Leia estes dados e plote como gráfico.

Podemos combinar os valores, somar, dividir, etc., variando os elementos dos vetores.
		  
 # combinar duas variáveis, por exemplo, uma tangente
tg= x    # copia x, para ter um vetor de saida
tg[0]=0    # mudamos primeiro elemento
for i in range(1,9):    # calculamos para cada elemento (de 1 a 8 (9-1) )
   dx=x[i]-x[i-1]
   dy=y[i]-y[i-1]
   tg[i]=dy/dx
plt.plot(tg, color='yellow')
plt.show()

   	

Exercício 2 - LER arquivo LAS

Para ler um arquivo LAS, podemos usar uma biblioteca do PYTHION, por exemplo a biblioteca LASPY.

Laspy Laspy is a python library for reading, modifying and creating LAS LiDAR files.

  1. compatible with Python 3.7+.
  2. LAZ support via lazrs or laszip backend.
  3. LAS/LAZ streamed/chunked reading/writting.

fonte laspy

Laspy can be installed either with pip: pip install laspy # without LAZ support
# Or
pip install laspy[laszip] # with LAZ support via LASzip
# Or
pip install laspy[lazrs] # with LAZ support via lazrs

podemos ler um pequeno arquivo de exemplo.

Podemos ler informacoes basicas: import laspy
with laspy.open('lake.laz') as f:
print(f"Point format: {f.header.point_format}")
print(f"Number of points: {f.header.point_count}")
print(f"Number of vlrs: {len(f.header.vlrs)}")

Podemos ler os dados e visualizar: import laspy
import numpy as np
import matplotlib.pyplot as plt
las = laspy.read('lake.laz')
fig = plt.figure()
ax = plt.axes(projection='3d')
ax.scatter3D(las.x, las.y, las.z, cmap='Greens');
plt.show()

Agira, escreva um programa que crie uma grade regular com esses dados:


Copyright © 2022
Jorge Centeno: centeno@ufpr.br