#del directorio inputRGB lee .laz o .las y sus caracteristicas RGB #asigna las caracteristicas a los .las o .laz que esten en input #en output deja .laz con la version actualizada: con RGB #si el flag es 1 lee todos los .laz/s del subdirectorio de "input" indicado #si el flag es 0 lee todos los subdirectorios dentro de "input" y los replica en output import fnmatch import os import traceback import laspy # conda install -c conda-forge laspy | pip install laspy | pip install laspy[lazrs,laszip] import numpy as np import subprocess import time import datetime import csv import sys import re import json import pdal from multiprocessing import Process start_time = time.time() def pdal_crs(entrada,epsg,logs,id,filogs): filogs=open(filogs,"a") for archivo in os.listdir(entrada): if fnmatch.fnmatch(archivo,'*.las') or fnmatch.fnmatch(archivo,'*.laz') or fnmatch.fnmatch(archivo,'*.LAZ') or fnmatch.fnmatch(archivo,'*.LAS'): filogs.write(archivo+"\n") try: origen=entrada+archivo destino=entrada+archivo.rsplit('.',1)[0]+'.laz' srs="EPSG:"+epsg jsonCRS=[] readers = { "type": "readers.las", "filename":origen } jsonCRS.append(readers) writers = { "type": "writers.las", "filename":destino, "a_srs": srs } jsonCRS.append(writers) peticion=json.dumps(jsonCRS) pipeline=pdal.Pipeline(peticion) count=pipeline.execute() arrays=pipeline.arrays metadata=pipeline.metadata log=pipeline.log except Exception: file=open(logs+"log_error_cambiar_crs_lidar_"+id+".txt","a") file.write(archivo) file.write(traceback.format_exc()) print(archivo) traceback.print_exc() continue def cambiar_crs(entrada,epsg,logs,id): try: filogs=logs+"log_cambiar_crs_lidar_"+id+".txt" file = open(filogs,"w") pdal_crs(entrada,epsg,logs,id,filogs) log="\n--- "+str(time.time() - start_time)+" seconds ---\n" file.write(log) file.close() except Exception: file = open(logs+"log_error_cambiar_crs_lidar_"+id+".txt","a") traceback.print_exc() file.write(traceback.format_exc()) log="\n--- "+str(time.time() - start_time)+" seconds ---\n" file.write(log) file.close() cambiar_crs('./in/',sys.argv[1],'./logs/',sys.argv[2])