|
|
- # -*- coding: utf-8 -*-
-
- """
- ***************************************************************************
- LidarToolsAlgorithmProvider.py
- ---------------------
- Date : August 2012
- Copyright : (C) 2012 by Victor Olaya
- Email : volayaf at gmail dot com
- ---------------------
- Date : April, October 2014 and May 2016
- Copyright : (C) 2014 - 2016 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 qgis.PyQt.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.laspublish import laspublish
- from .lastools.lasground_new import lasground_new
- from .lastools.lascontrol import lascontrol
- from .lastools.lasdiff import lasdiff
- from .lastools.lasheight_classify import lasheight_classify
-
- 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.laspublishPro import laspublishPro
- from .lastools.lasgroundPro_new import lasgroundPro_new
- from .lastools.lasheightPro_classify import lasheightPro_classify
-
- 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.DTM2ASCII import DTM2ASCII
- 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.ImageCreate import ImageCreate
- from .fusion.IntensityImage import IntensityImage
- from .fusion.FusionUtils import FusionUtils
-
-
- class LidarToolsAlgorithmProvider(AlgorithmProvider):
-
- def __init__(self):
- AlgorithmProvider.__init__(self)
- self.activate = True
-
- def _loadAlgorithms(self):
- self.algs = []
-
- # 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(), laspublish(), lasground_new(), lascontrol(), lasdiff(),
- lasheight_classify()
- ]
- else:
- lastools = [
- lasinfo(), lasprecision(), lasvalidate(), las2txt(), txt2las(),
- laszip(), lasindex(), lasmerge(), las2las_filter(), las2las_project(),
- las2las_transform(), lasquery(), lasdiff()
- ]
- self.algs.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(), laspublishPro(), lasgroundPro_new(),
- lasheightPro_classify()
- ]
- else:
- lastoolsPro = [
- laszipPro(), lasindexPro(), lasinfoPro(), las2lasPro_filter(), las2lasPro_project(),
- las2lasPro_transform(), txt2lasPro(), las2txtPro(), lasvalidatePro(), lasmergePro()
- ]
- self.algs.extend(lastoolsPro)
-
- # some examples for LAStools Pipelines
-
- if (isWindows() or LAStoolsUtils.hasWine()):
- lastoolsPipe = [
- flightlinesToDTMandDSM(), flightlinesToCHM(), flightlinesToSingleCHMpitFree(), hugeFileClassify(),
- hugeFileGroundClassify(), hugeFileNormalize()
- ]
- else:
- lastoolsPipe = []
- self.algs.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(), DTM2ASCII(), FirstLastReturn(), ASCII2DTM(), ImageCreate(),
- IntensityImage()
- ]
- for alg in fusiontools:
- alg.group, alg.i18n_group = alg.trAlgorithm('Fusion')
- self.algs.extend(fusiontools)
-
- def initializeSettings(self):
- if isWindows():
- LASPath = 'C:\lastools'
- else:
- LASPath = '/usr/local/bin'
- # LAStoolsUtils.LAStoolsPath()
-
- AlgorithmProvider.initializeSettings(self)
- ProcessingConfig.addSetting(Setting(
- self.getDescription(),
- LAStoolsUtils.LASTOOLS_FOLDER,
- self.tr('LAStools folder'), LASPath,
- valuetype=Setting.FOLDER))
- ProcessingConfig.addSetting(Setting(
- self.getDescription(),
- FusionUtils.FUSION_FOLDER,
- self.tr('Fusion folder'), FusionUtils.FusionPath(),
- valuetype=Setting.FOLDER))
- if not isWindows():
- 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 getSupportedOutputTableExtensions(self):
- return ['csv']
|