75 lines
2.2 KiB
Python
75 lines
2.2 KiB
Python
"""
|
|
basic_functions module
|
|
A number of functionalities that help the project
|
|
but cannot be a part of the PyQGIS tool.
|
|
Project Developer: Alireza Adli alireza.adli@concordia.ca
|
|
"""
|
|
|
|
import os
|
|
import glob
|
|
import processing
|
|
|
|
from qgis.core import QgsApplication
|
|
from qgis.analysis import QgsNativeAlgorithms
|
|
|
|
|
|
def find_shp_files(root_folder):
|
|
shp_files = []
|
|
# Sort folders alphabetically
|
|
for foldername, _, _ in sorted(os.walk(root_folder)):
|
|
for filename in sorted(glob.glob(os.path.join(foldername, '*.shp'))):
|
|
new_file_name = filename.replace('\\', r'/')
|
|
shp_files.append(new_file_name)
|
|
return shp_files
|
|
|
|
|
|
def find_las_files(root_folder):
|
|
las_files = []
|
|
# Sort folders alphabetically
|
|
for foldername, _, _ in sorted(os.walk(root_folder)):
|
|
for filename in sorted(glob.glob(os.path.join(foldername, '*.las'))):
|
|
new_file_name = filename.replace('\\', r'/')
|
|
las_files.append(new_file_name)
|
|
return las_files
|
|
|
|
|
|
def create_folders(directory, num_folders):
|
|
"""
|
|
Create a specified number of folders in the given directory.
|
|
|
|
Args:
|
|
- directory (str): The directory where folders will be created.
|
|
- num_folders (int): The number of folders to create.
|
|
"""
|
|
# Check if the directory exists, if not, create it
|
|
if not os.path.exists(directory):
|
|
os.makedirs(directory)
|
|
|
|
# Create folders
|
|
for i in range(num_folders):
|
|
folder_name = f"layer_{i}"
|
|
folder_path = os.path.join(directory, folder_name)
|
|
os.makedirs(folder_path)
|
|
print(f"Created folder: {folder_path}")
|
|
|
|
|
|
def create_output_folders(paths_dict, output_dir):
|
|
for path in paths_dict.keys():
|
|
new_folder = path.lower().replace(' ', '_')
|
|
output_path = output_dir + '/' + new_folder
|
|
os.mkdir(output_path)
|
|
if path[-1] != 's':
|
|
paths_dict[path] = output_path + f'/{new_folder}.shp'
|
|
else:
|
|
paths_dict[path] = output_path
|
|
|
|
|
|
def merge_las_layers(layers_path, mergeded_layer_path):
|
|
merging_layers = find_las_files(layers_path)
|
|
QgsApplication.processingRegistry().addProvider(QgsNativeAlgorithms())
|
|
|
|
params = {'LAYERS': merging_layers,
|
|
'CRS': None,
|
|
'OUTPUT': mergeded_layer_path}
|
|
|
|
processing.run("native:mergevectorlayers", params) |