Exercício 01 - Primeiros passos
Neste exercício usaremos a linguagem Python para criar e manipular imagens.
abrir e ler LA
Preparação
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.
- compatible with Python 3.7+.
- LAZ support via lazrs or laszip backend.
- LAS/LAZ streamed/chunked reading/writting.
fonte laspy
instalação
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
primeiro, instale as bibliotecas las
!pip install laspy
Após a instalação, podemos abrir umas bibliotecas que serão usadas para manupular os dados de um arquivo, e abrir o Google Drive
import numpy as np
import laspy
from google.colab import drive
drive.mount('/content/drive')
Abrir um arquivo e ler informações básicas. Use o arquivo "Lake.laz" da pasta data do seu drive.
depois, pode alterar o nome do arquivo e da pasta.
las = laspy.read(nome)
print("Pontos:", len(las.points))
print("X:", min(las.x), max(las.x))
print("Y:", min(las.y), max(las.y))
print("Z:", min(las.z), max(las.z))
Podemos ver o formato os dados. Neste caso:
O Point Format 1 contém, basicamente:
- X, Y, Z
- Intensity
- Return Number
- Number of Returns
- Scan Direction Flag
- Edge of Flight Line
- Classification
- Scan Angle
- User Data
- Point Source ID*
- GPS Time
imprima o formato
Podemos dar uma olhada em alguns pontos
print(f"Ponto {i}:")
print(f" X = {las.x[i]}")
print(f" Y = {las.y[i]}")
print(f" Z = {las.z[i]}")
print(f" Intensity = {las.intensity[i]}")
print(f" GPS time = {las.gps_time[i]}")
print()
Podemos visualizar os dados em 3D:
ax = fig.add_subplot(111, projection='3d')
ax.scatter(
las.x,
las.y,
las.z,
s=1
)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.show()
Ou melhor, usando uma variação de cores segundo a cota.
ax = fig.add_subplot(111, projection='3d')
ax.scatter(
las.x,
las.y,
las.z,
c=las.z,
cmap='viridis',
s=1
)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
Agora, escreva um programa que crie uma grade regular com esses dados:
- leia os valores mínimos e máximos em X (x_min, x_max) e Y (y_min, y_max).
- calcule a faixa de variação em X e Y, isto define a área coberta pelo levantamento
- escolha uma resolução para a grade. Que tal dois metros?
- calcule o número de linhas e colunas
- para cada ponto:
- calcule a distância do ponto à origem da grade
- calcule a linha e coluna correspondentes a esta posição
- se a célula estiver vazia (==0) copie o valor na célula
- mostre a grade
Copyright © 2026
Jorge Centeno: centeno@ufpr.br