mirror of
				https://github.com/qgis/QGIS.git
				synced 2025-11-04 00:04:25 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			244 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			244 lines
		
	
	
		
			10 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.ASCII2DTM import ASCII2DTM
 | 
						|
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.DTM2TIF import DTM2TIF
 | 
						|
from fusion.FirstLastReturn import FirstLastReturn
 | 
						|
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.PolyClipData import PolyClipData
 | 
						|
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(), PolyClipData(),
 | 
						|
                                DTM2TIF(), FirstLastReturn(), ASCII2DTM()
 | 
						|
            ]
 | 
						|
            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']
 |