Processing math: 100%

2 votos

¿Puedo crear archivos .las o .laz a partir de archivos .hgt, .tiff, .gpx/kml o .asc?

Me he metido en un juego de simulador de golf y quiero recrear mi campo de golf local. El problema es que la única forma de importar información de altura es a través de un archivo LAZ o LAS. Así que estoy buscando una forma de solucionarlo. El gobierno austriaco proporciona archivos HGT y TIFF, he probado algunas formas pero no he podido lograrlo, he intentado con txt2las pero no lo logré. Mi última idea que encontré buscando en google fue exportar la información de altura desde Google Earth a través de un archivo KML/KMZ y luego pasarlo a LAS/LAZ.

¿Alguien ya ha hecho esto y ha hecho un tutorial al respecto? ¿O simplemente estoy pensando de forma demasiado complicada y hay una forma más sencilla?

Los archivos que tengo de la zona que necesito son el archivo HGT de toda la región, archivos TIFF, raster ASCII (ASC) y la exportación KML/KMZ de Google Earth.

2voto

robvdl Puntos 21

Si eres capaz/dispuesto a programar un poco, podrías crear el archivo LAZ en Python usando laspy.

Aquí tienes un código de ejemplo:

import laspy
import numpy as np

# generar datos de puntos xyz aleatorios:
n_points = 100
xyz = np.random.uniform(0, 30, (3, n_points))  # geometría de puntos xyz
rgb = np.random.randint(0, 255, size=(3, n_points))  # color rgb
intensity = rgb.mean(axis=0).astype('uint8')  # amplitud o intensidad de retrodispersión
n_returns = np.ones_like(intensity, dtype='uint8')  # número de retornos láser por pulso
clf = np.copy(n_returns) + 1  # clasificación de puntos (por ejemplo, 2 = suelo, 5 = vegetación)

# crear el archivo las:
las = laspy.file.File('test.las', mode='w', header=laspy.header.Header())
las.header.offset = xyz.min(axis=1)
las.header.scale = [1, 1, 1]

# establecer atributos de puntos:
las.X = xyz[0]
las.Y = xyz[1]
las.Z = xyz[2]
las.intensity = intensity
las.r = rgb[0]
las.g = rgb[1]
las.b = rgb[2]
las.return_num = n_returns
las.num_returns = n_returns
las.raw_classification = clf

# cerrar archivo:
las.close()

Si el archivo raster ASCII contiene coordenadas XYZ tabulares, deberías poder leer directamente las coordenadas XYZ en Python (ver biblioteca Pandas). Una vez que tengas los datos de XYZ como arreglos de numpy, puedes escribirlos en el archivo las como se muestra arriba.

Probablemente no necesites preocuparte por otros parámetros (valores rgb, intensidad, clasificación de puntos), pero los he incluido aquí con fines ilustrativos en caso de que quieras hacer algo sofisticado como clasificar árboles alrededor del campo de golf.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X