mirror of
				https://github.com/qgis/QGIS.git
				synced 2025-10-30 00:07:09 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			239 lines
		
	
	
		
			9.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			239 lines
		
	
	
		
			9.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # -*- coding: utf-8 -*-
 | |
| 
 | |
| """
 | |
| ***************************************************************************
 | |
|     LidarToolsAlgorithmProvider.py
 | |
|     ---------------------
 | |
|     Date                 : August 2012
 | |
|     Copyright            : (C) 2012 by Victor Olaya
 | |
|     Email                : volayaf at gmail dot com
 | |
|     ---------------------
 | |
|     Date                 : April, October 2014
 | |
|     Copyright            : (C) 2014 by Martin Isenburg
 | |
|     Email                : martin near rapidlasso point com
 | |
|     ---------------------
 | |
|     Date                 : June 2014
 | |
|     Copyright            : (C) 2014 by Agresta S. Coop
 | |
|     Email                : iescamochero at agresta dot org
 | |
| ***************************************************************************
 | |
| *                                                                         *
 | |
| *   This program is free software; you can redistribute it and/or modify  *
 | |
| *   it under the terms of the GNU General Public License as published by  *
 | |
| *   the Free Software Foundation; either version 2 of the License, or     *
 | |
| *   (at your option) any later version.                                   *
 | |
| *                                                                         *
 | |
| ***************************************************************************
 | |
| """
 | |
| 
 | |
| __author__ = 'Victor Olaya'
 | |
| __date__ = 'August 2012'
 | |
| __copyright__ = '(C) 2012, Victor Olaya'
 | |
| 
 | |
| # This will get replaced with a git SHA1 when you do a git archive
 | |
| 
 | |
| __revision__ = '$Format:%H$'
 | |
| 
 | |
| import os
 | |
| from PyQt4.QtGui import QIcon
 | |
| from processing.core.AlgorithmProvider import AlgorithmProvider
 | |
| from processing.core.ProcessingConfig import ProcessingConfig, Setting
 | |
| from processing.tools.system import isWindows
 | |
| 
 | |
| from lastools.LAStoolsUtils import LAStoolsUtils
 | |
| from lastools.lasground import lasground
 | |
| from lastools.lasheight import lasheight
 | |
| from lastools.lasclassify import lasclassify
 | |
| from lastools.laszip import laszip
 | |
| from lastools.lasindex import lasindex
 | |
| from lastools.lasclip import lasclip
 | |
| from lastools.lasquery import lasquery
 | |
| from lastools.lascolor import lascolor
 | |
| from lastools.lasthin import lasthin
 | |
| from lastools.lasnoise import lasnoise
 | |
| from lastools.lassort import lassort
 | |
| from lastools.lastile import lastile
 | |
| from lastools.lasgrid import lasgrid
 | |
| from lastools.lasview import lasview
 | |
| from lastools.lasboundary import lasboundary
 | |
| from lastools.lasinfo import lasinfo
 | |
| from lastools.las2dem import las2dem
 | |
| from lastools.blast2dem import blast2dem
 | |
| from lastools.las2iso import las2iso
 | |
| from lastools.las2tin import las2tin
 | |
| from lastools.las2las_filter import las2las_filter
 | |
| from lastools.las2las_project import las2las_project
 | |
| from lastools.las2las_transform import las2las_transform
 | |
| from lastools.blast2iso import blast2iso
 | |
| from lastools.lasprecision import lasprecision
 | |
| from lastools.lasvalidate import lasvalidate
 | |
| from lastools.lasduplicate import lasduplicate
 | |
| from lastools.las2txt import las2txt
 | |
| from lastools.txt2las import txt2las
 | |
| from lastools.las2shp import las2shp
 | |
| from lastools.shp2las import shp2las
 | |
| from lastools.lasmerge import lasmerge
 | |
| from lastools.lassplit import lassplit
 | |
| from lastools.lascanopy import lascanopy
 | |
| from lastools.lasoverage import lasoverage
 | |
| from lastools.lasoverlap import lasoverlap
 | |
| 
 | |
| from lastools.lastilePro import lastilePro
 | |
| from lastools.lasgroundPro import lasgroundPro
 | |
| from lastools.las2demPro import las2demPro
 | |
| from lastools.lasheightPro import lasheightPro
 | |
| from lastools.laszipPro import laszipPro
 | |
| from lastools.lasgridPro import lasgridPro
 | |
| from lastools.lasduplicatePro import lasduplicatePro
 | |
| from lastools.lassortPro import lassortPro
 | |
| from lastools.lasclassifyPro import lasclassifyPro
 | |
| from lastools.lasthinPro import lasthinPro
 | |
| from lastools.lasnoisePro import lasnoisePro
 | |
| from lastools.lasindexPro import lasindexPro
 | |
| from lastools.lascanopyPro import lascanopyPro
 | |
| from lastools.blast2demPro import blast2demPro
 | |
| from lastools.lasboundaryPro import lasboundaryPro
 | |
| from lastools.lasinfoPro import lasinfoPro
 | |
| from lastools.las2lasPro_filter import las2lasPro_filter
 | |
| from lastools.las2lasPro_project import las2lasPro_project
 | |
| from lastools.las2lasPro_transform import las2lasPro_transform
 | |
| from lastools.lasoveragePro import lasoveragePro
 | |
| from lastools.txt2lasPro import txt2lasPro
 | |
| from lastools.las2txtPro import las2txtPro
 | |
| from lastools.blast2isoPro import blast2isoPro
 | |
| from lastools.lasvalidatePro import lasvalidatePro
 | |
| from lastools.lasmergePro import lasmergePro
 | |
| from lastools.lasviewPro import lasviewPro
 | |
| from lastools.lasoverlapPro import lasoverlapPro
 | |
| 
 | |
| from lastools.flightlinesToDTMandDSM import flightlinesToDTMandDSM
 | |
| from lastools.flightlinesToCHM import flightlinesToCHM
 | |
| from lastools.flightlinesToSingleCHMpitFree import flightlinesToSingleCHMpitFree
 | |
| from lastools.hugeFileClassify import hugeFileClassify
 | |
| from lastools.hugeFileGroundClassify import hugeFileGroundClassify
 | |
| from lastools.hugeFileNormalize import hugeFileNormalize
 | |
| 
 | |
| from fusion.OpenViewerAction import OpenViewerAction
 | |
| from fusion.CanopyMaxima import CanopyMaxima
 | |
| from fusion.CanopyModel import CanopyModel
 | |
| from fusion.Catalog import Catalog
 | |
| from fusion.ClipData import ClipData
 | |
| from fusion.CloudMetrics import CloudMetrics
 | |
| from fusion.Cover import Cover
 | |
| from fusion.GridMetrics import GridMetrics
 | |
| from fusion.GridSurfaceCreate import GridSurfaceCreate
 | |
| from fusion.TinSurfaceCreate import TinSurfaceCreate
 | |
| from fusion.Csv2Grid import Csv2Grid
 | |
| from fusion.GroundFilter import GroundFilter
 | |
| from fusion.MergeData import MergeData
 | |
| from fusion.FilterData import FilterData
 | |
| from fusion.FusionUtils import FusionUtils
 | |
| 
 | |
| 
 | |
| class LidarToolsAlgorithmProvider(AlgorithmProvider):
 | |
| 
 | |
|     def __init__(self):
 | |
|         AlgorithmProvider.__init__(self)
 | |
|         self.activate = False
 | |
|         self.algsList = []
 | |
| 
 | |
|         # LAStools for processing single files
 | |
| 
 | |
|         if (isWindows() or LAStoolsUtils.hasWine()):
 | |
|             lastools = [
 | |
|                 lasground(), lasheight(), lasclassify(), lasclip(), lastile(),
 | |
|                 lascolor(), lasgrid(), las2dem(), blast2dem(), las2iso(), blast2iso(),
 | |
|                 lasview(), lasboundary(), lasinfo(), lasprecision(), las2tin(),
 | |
|                 lasvalidate(), lasduplicate(), las2txt(), txt2las(), laszip(),
 | |
|                 lasindex(), lasthin(), lassort(), lascanopy(), lasmerge(),
 | |
|                 las2shp(), shp2las(), lasnoise(), lassplit(), las2las_filter(),
 | |
|                 las2las_project(), las2las_transform(), lasoverage(), lasoverlap(),
 | |
|                 lasquery()
 | |
|             ]
 | |
|         else:
 | |
|             lastools = [
 | |
|                 lasinfo(), lasprecision(), lasvalidate(), las2txt(), txt2las(),
 | |
|                 laszip(), lasindex(), lasmerge(), las2las_filter(), las2las_project(),
 | |
|                 las2las_transform(), lasquery()
 | |
|             ]
 | |
|         for alg in lastools:
 | |
|             alg.group = 'LAStools'
 | |
|         self.algsList.extend(lastools)
 | |
| 
 | |
|         # LAStools Production for processing folders of files
 | |
| 
 | |
|         if (isWindows() or LAStoolsUtils.hasWine()):
 | |
|             lastoolsPro = [
 | |
|                 lastilePro(), lasgroundPro(), las2demPro(), lasheightPro(), laszipPro(),
 | |
|                 lasduplicatePro(), lasgridPro(), lassortPro(), lasclassifyPro(), lasthinPro(),
 | |
|                 lasnoisePro(), lasindexPro(), lascanopyPro(), blast2demPro(), lasboundaryPro(),
 | |
|                 lasinfoPro(), las2lasPro_filter(), las2lasPro_project(), las2lasPro_transform(),
 | |
|                 lasoveragePro(), txt2lasPro(), las2txtPro(), blast2isoPro(), lasvalidatePro(),
 | |
|                 lasmergePro(), lasviewPro(), lasoverlapPro()
 | |
|             ]
 | |
|         else:
 | |
|             lastoolsPro = [
 | |
|                 laszipPro(), lasindexPro(), lasinfoPro(), las2lasPro_filter(), las2lasPro_project(),
 | |
|                 las2lasPro_transform(), txt2lasPro(), las2txtPro(), lasvalidatePro(), lasmergePro()
 | |
|             ]
 | |
|         for alg in lastoolsPro:
 | |
|             alg.group = 'LAStools Production'
 | |
|         self.algsList.extend(lastoolsPro)
 | |
| 
 | |
|         # some examples for LAStools Pipelines
 | |
| 
 | |
|         if (isWindows() or LAStoolsUtils.hasWine()):
 | |
|             lastoolsPipe = [
 | |
|                 flightlinesToDTMandDSM(), flightlinesToCHM(), flightlinesToSingleCHMpitFree(), hugeFileClassify(),
 | |
|                 hugeFileGroundClassify(), hugeFileNormalize()
 | |
|             ]
 | |
|         else:
 | |
|             lastoolsPipe = []
 | |
|         for alg in lastoolsPipe:
 | |
|             alg.group = 'LAStools Pipelines'
 | |
|         self.algsList.extend(lastoolsPipe)
 | |
| 
 | |
|         # FUSION
 | |
| 
 | |
|         if isWindows():
 | |
|             self.actions.append(OpenViewerAction())
 | |
|             fusiontools = [
 | |
|                 Catalog(), CloudMetrics(), CanopyMaxima(), CanopyModel(), ClipData(),
 | |
|                 Csv2Grid(), Cover(), FilterData(), GridMetrics(), GroundFilter(),
 | |
|                 GridSurfaceCreate(), MergeData(), TinSurfaceCreate()
 | |
|             ]
 | |
|             for alg in fusiontools:
 | |
|                 alg.group = 'Fusion'
 | |
|             self.algsList.extend(fusiontools)
 | |
| 
 | |
|     def initializeSettings(self):
 | |
|         AlgorithmProvider.initializeSettings(self)
 | |
|         ProcessingConfig.addSetting(Setting(
 | |
|             self.getDescription(),
 | |
|             LAStoolsUtils.LASTOOLS_FOLDER,
 | |
|             self.tr('LAStools folder'), LAStoolsUtils.LAStoolsPath(),
 | |
|             valuetype=Setting.FOLDER))
 | |
|         ProcessingConfig.addSetting(Setting(
 | |
|             self.getDescription(),
 | |
|             FusionUtils.FUSION_FOLDER,
 | |
|             self.tr('Fusion folder'), FusionUtils.FusionPath(),
 | |
|             valuetype=Setting.FOLDER))
 | |
|         ProcessingConfig.addSetting(Setting(
 | |
|             self.getDescription(),
 | |
|             LAStoolsUtils.WINE_FOLDER,
 | |
|             self.tr('Wine folder'), '', valuetype=Setting.FOLDER))
 | |
| 
 | |
|     def getName(self):
 | |
|         return 'lidartools'
 | |
| 
 | |
|     def getDescription(self):
 | |
|         return self.tr('Tools for LiDAR data')
 | |
| 
 | |
|     def getIcon(self):
 | |
|         return QIcon(os.path.dirname(__file__) + '/../../images/tool.png')
 | |
| 
 | |
|     def _loadAlgorithms(self):
 | |
|         self.algs = self.algsList
 | |
| 
 | |
|     def getSupportedOutputTableExtensions(self):
 | |
|         return ['csv']
 |