Skip to content
Snippets Groups Projects
__init__.py 5.28 KiB
Newer Older
  • Learn to ignore specific revisions
  • """
    /***************************************************************************
    
                                  -------------------
            begin                : 2017-08-04
            git sha              : $Format:%H$
            copyright            : (C) 2017 by HU-Berlin
            email                : benjamin.jakimow@geo.hu-berlin.de
     ***************************************************************************/
    
    /***************************************************************************
     *                                                                         *
     *   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.                                   *
     *                                                                         *
     ***************************************************************************/
    """
    # noinspection PyPep8Naming
    
    import os, sys, fnmatch, site, re, site
    
    
    Benjamin Jakimow's avatar
    Benjamin Jakimow committed
    # import QPS modules
    from qps.crosshair.crosshair import CrosshairStyle, CrosshairWidget, CrosshairMapCanvasItem, CrosshairDialog, getCrosshairStyle
    from qps.plotstyling.plotstyling import PlotStyle, PlotStyleDialog, PlotStyleButton, PlotStyleWidget
    from qps.classification.classificationscheme import ClassificationScheme, ClassInfo, ClassificationSchemeComboBox, ClassificationSchemeWidget, ClassificationSchemeDialog, hasClassification
    from qps.models import Option, OptionListModel, TreeNode, TreeModel, TreeView
    from qps.speclib.spectrallibraries import SpectralLibrary, SpectralProfile
    from qps.maptools import *
    
    
    __version__ = '0.7' #sub-subversion number is added automatically
    
    LICENSE = 'GNU GPL-3'
    
    Benjamin Jakimow's avatar
    Benjamin Jakimow committed
    TITLE = 'EO Time Series Viewer'
    
    DESCRIPTION = 'Visualization of multi-sensor Earth observation time series data.'
    
    Benjamin Jakimow's avatar
    Benjamin Jakimow committed
    HOMEPAGE = 'https://bitbucket.org/jakimowb/eo-time-series-viewer'
    DOCUMENTATION = 'http://eo-time-series-viewer.readthedocs.io/en/latest/'
    REPOSITORY = 'https://bitbucket.org/jakimowb/eo-time-series-viewer'
    
    HOMEPAGE = 'https://bitbucket.org/jakimowb/eo-time-series-viewer'
    ISSUE_TRACKER = 'https://bitbucket.org/jakimowb/eo-time-series-viewer/issues'
    CREATE_ISSUE = 'https://bitbucket.org/jakimowb/eo-time-series-viewer/issues/new'
    
    Benjamin Jakimow's avatar
    Benjamin Jakimow committed
    DEPENDENCIES = ['numpy', 'pyqtgraph', 'gdal']
    
    Benjamin Jakimow's avatar
    Benjamin Jakimow committed
    
    URL_TESTDATA = r''
    
    
    Benjamin Jakimow's avatar
    Benjamin Jakimow committed
    
    
    ABOUT = os.path.join(os.path.dirname(__file__), 'ABOUT.txt')
    if os.path.isfile(ABOUT):
        f = open(ABOUT, 'r', encoding='utf-8')
        ABOUT = f.read()
        f.close()
        del f
    else:
        ABOUT = "The EO Time Series Viewer"
    
    
    
    from qgis.core import QgsApplication, Qgis
    from qgis.PyQt.QtCore import QSettings
    from qgis.PyQt.QtGui import QIcon
    
    jp = os.path.join
    dn = os.path.dirname
    mkdir = lambda p: os.makedirs(p, exist_ok=True)
    
    DIR = os.path.dirname(__file__)
    DIR_REPO = os.path.dirname(DIR)
    DIR_SITE_PACKAGES = jp(DIR_REPO, 'site-packages')
    
    Benjamin Jakimow's avatar
    Benjamin Jakimow committed
    DIR_UI = jp(DIR, *['ui'])
    DIR_DOCS = jp(DIR, 'docs')
    
    DIR_EXAMPLES = jp(DIR_REPO, 'example')
    PATH_EXAMPLE_TIMESERIES = jp(DIR_EXAMPLES,'ExampleTimeSeries.csv')
    
    PATH_LICENSE = jp(DIR_REPO, 'LICENSE.txt')
    PATH_CHANGELOG = jp(DIR_REPO, 'CHANGES.txt')
    
    PATH_ABOUT = jp(DIR_REPO, 'ABOUT.html')
    
    Benjamin Jakimow's avatar
    Benjamin Jakimow committed
    DIR_QGIS_RESOURCES = jp(DIR_REPO, 'qgisresources')
    
    OPENGL_AVAILABLE = False
    try:
        import OpenGL
    
        OPENGL_AVAILABLE = True
    except:
        pass
    
    Benjamin Jakimow's avatar
    Benjamin Jakimow committed
        import qps.utils
    
    
    except Exception as ex:
        #site.addpackage(DIR_SITE_PACKAGES, 'qps', None)
        sys.path.append(DIR_SITE_PACKAGES)
        import qps
    
    
    Benjamin Jakimow's avatar
    Benjamin Jakimow committed
    qps.utils.UI_DIRECTORIES.append(DIR_UI)
    
    
    def messageLog(msg, level=None):
        """
    
    Benjamin Jakimow's avatar
    Benjamin Jakimow committed
        Writes a log message to the QGIS EO TimeSeriesViewer log
    
        :param msg: log message string
        :param level: QgsMessageLog::MessageLevel with MessageLevel =[INFO |  ALL | WARNING | CRITICAL | NONE]
        """
    
        if level is None:
    
            level = Qgis.Warning
    
    
    Benjamin Jakimow's avatar
    Benjamin Jakimow committed
            QgsApplication.instance().messageLog().logMessage(msg, 'EO TSV', level)
    
    try:
        import timeseriesviewer.ui.resources
        timeseriesviewer.ui.resources.qInitResources()
    except:
    
        print('Unable to initialize EO Time Series Viewer ressources', file=sys.stderr)
    
    
    Benjamin Jakimow's avatar
    Benjamin Jakimow committed
    def initEditorWidgets():
        """
        Initialises QgsEditorWidgets
        """
        import qps
        qps.registerEditorWidgets()
    
    
    
    #see https://github.com/pyqtgraph/pyqtgraph/issues/774
    WORKAROUND_PYTGRAPH_ISSUE_774 = True
    if WORKAROUND_PYTGRAPH_ISSUE_774:
        from pyqtgraph.graphicsItems.GraphicsObject import GraphicsObject
    
        from qgis.PyQt.QtCore import QVariant
        untouched = GraphicsObject.itemChange
    
        def newFunc(cls, change, value):
            if value != QVariant(None):
                return untouched(cls, change, value)
            else:
                return untouched(cls, change, None)
    
        GraphicsObject.itemChange = newFunc
    
    
    
    def icon()->QIcon:
        """
        Returns the EO Time Series Viewer icon
        :return: QIcon
        """
    
    Benjamin Jakimow's avatar
    Benjamin Jakimow committed
        path = os.path.join(os.path.dirname(__file__), 'icon.png')
        return QIcon(path)
    
    def getFileAndAttributes(file):
    
        """
        splits a GDAL valid file path into
        :param file:
        :return:
        """
    
        dn = os.path.dirname(file)
        bn = os.path.basename(file)
        bnSplit = bn.split(':')
    
        return os.path.join(dn,bnSplit[0]), ':'.join(bnSplit[1:])