48 lines
1.6 KiB
Python
48 lines
1.6 KiB
Python
|
|
import json
|
||
|
|
import numpy as np
|
||
|
|
import matplotlib.pyplot as plt
|
||
|
|
|
||
|
|
# Função para ler dados de um arquivo JSON
|
||
|
|
def ler_dados_json(nome_do_arquivo):
|
||
|
|
with open(nome_do_arquivo, 'r') as arquivo:
|
||
|
|
dados = json.load(arquivo)
|
||
|
|
return dados
|
||
|
|
|
||
|
|
# Usando a função para carregar os dados do arquivo JSON
|
||
|
|
data = ler_dados_json('contours_data.json')
|
||
|
|
|
||
|
|
# Inicializando uma variável para armazenar o contorno da classe "rua", caso exista
|
||
|
|
contorno_rua = None
|
||
|
|
|
||
|
|
# Iterando pelos objetos no JSON para encontrar a classe "rua"
|
||
|
|
for item in data:
|
||
|
|
if item["Classe"] == "rua":
|
||
|
|
contorno_rua = item["Contornos"]
|
||
|
|
break # Interrompe o loop se a classe "rua" for encontrada
|
||
|
|
|
||
|
|
# Verifica se um contorno foi encontrado
|
||
|
|
if contorno_rua is not None:
|
||
|
|
# Converte os pontos para uma estrutura que facilita as comparações
|
||
|
|
points = np.array(contorno_rua)
|
||
|
|
|
||
|
|
# Plotando os pontos e a linha que os conecta
|
||
|
|
plt.figure(figsize=(10, 10))
|
||
|
|
plt.plot(points[:, 0], points[:, 1], '-o', markersize=5, linewidth=2)
|
||
|
|
|
||
|
|
# Configurando os limites do gráfico para melhor visualização
|
||
|
|
plt.xlim(points[:, 0].min() - 10, points[:, 0].max() + 10)
|
||
|
|
plt.ylim(points[:, 1].min() - 10, points[:, 1].max() + 10)
|
||
|
|
|
||
|
|
# Invertendo o eixo Y para que a origem (0,0) fique no canto inferior esquerdo
|
||
|
|
plt.gca().invert_yaxis()
|
||
|
|
|
||
|
|
# Adicionando título e labels aos eixos
|
||
|
|
plt.title('Figura formada pelo contorno da classe "rua"')
|
||
|
|
plt.xlabel('Eixo X')
|
||
|
|
plt.ylabel('Eixo Y')
|
||
|
|
|
||
|
|
plt.grid(True)
|
||
|
|
plt.show()
|
||
|
|
else:
|
||
|
|
print("Não foi encontrado um contorno para a classe 'rua'.")
|