Skip to content
Snippets Groups Projects
utils.py 34.4 KiB
Newer Older
  • Learn to ignore specific revisions
  • Benjamin Jakimow's avatar
    Benjamin Jakimow committed
            pythonPlugins = []
        assert isinstance(pythonPlugins, list)
    
    
        if isinstance(qgisResourceDir, str) and os.path.isdir(qgisResourceDir):
    
            import importlib, re
            modules = [m for m in os.listdir(qgisResourceDir) if re.search(r'[^_].*\.py', m)]
            modules = [m[0:-3] for m in modules]
            for m in modules:
                mod = importlib.import_module('qgisresources.{}'.format(m))
                if "qInitResources" in dir(mod):
                    mod.qInitResources()
    
    Benjamin Jakimow's avatar
    Benjamin Jakimow committed
    
    
    Benjamin Jakimow's avatar
    Benjamin Jakimow committed
        envVar = os.environ.get('QGIS_PLUGINPATH', None)
        if isinstance(envVar, list):
    
            pythonPlugins.extend(re.split('[;:]', envVar))
    
    Benjamin Jakimow's avatar
    Benjamin Jakimow committed
    
    
        # make plugin paths available to QGIS and Python
    
    Benjamin Jakimow's avatar
    Benjamin Jakimow committed
        os.environ['QGIS_PLUGINPATH'] = ';'.join(pythonPlugins)
        os.environ['QGIS_DEBUG'] = '1' if qgisDebug else '0'
        for p in pythonPlugins:
            sys.path.append(p)
    
        if isinstance(QgsApplication.instance(), QgsApplication):
    
    Benjamin Jakimow's avatar
    Benjamin Jakimow committed
            return QgsApplication.instance()
    
    Benjamin Jakimow's avatar
    Benjamin Jakimow committed
        else:
    
            if PATH_QGIS is None:
                # find QGIS Path
                if sys.platform == 'darwin':
    
                    # search for the QGIS.app
    
    Benjamin Jakimow's avatar
    Benjamin Jakimow committed
                    import qgis, re
                    assert '.app' in qgis.__file__, 'Can not locate path of QGIS.app'
    
                    PATH_QGIS_APP = re.split(r'\.app[\/]', qgis.__file__)[0] + '.app'
                    PATH_QGIS = os.path.join(PATH_QGIS_APP, *['Contents', 'MacOS'])
    
    Benjamin Jakimow's avatar
    Benjamin Jakimow committed
    
                    if not 'GDAL_DATA' in os.environ.keys():
    
                        os.environ['GDAL_DATA'] = r'/Library/Frameworks/GDAL.framework/Versions/Current/Resources/gdal'
    
    Benjamin Jakimow's avatar
    Benjamin Jakimow committed
    
                    QApplication.addLibraryPath(os.path.join(PATH_QGIS_APP, *['Contents', 'PlugIns']))
    
                    QApplication.addLibraryPath(os.path.join(PATH_QGIS_APP, *['Contents', 'PlugIns', 'qgis']))
    
    Benjamin Jakimow's avatar
    Benjamin Jakimow committed
    
    
                else:
                    # assume OSGeo4W startup
                    PATH_QGIS = os.environ['QGIS_PREFIX_PATH']
    
            assert os.path.exists(PATH_QGIS)
    
            qgsApp = QgsApplication([], True)
            qgsApp.setPrefixPath(PATH_QGIS, True)
            qgsApp.initQgis()
    
    
            def printQgisLog(tb, error, level):
    
                if error not in ['Python warning']:
                    print(tb)
    
    
            QgsApplication.instance().messageLog().messageReceived.connect(printQgisLog)
    
    
    Benjamin Jakimow's avatar
    Benjamin Jakimow committed
            return qgsApp
    
    
    def createCRSTransform(src, dst):
        assert isinstance(src, QgsCoordinateReferenceSystem)
        assert isinstance(dst, QgsCoordinateReferenceSystem)
        t = QgsCoordinateTransform()
        t.setSourceCrs(src)
        t.setDestinationCrs(dst)
        return t
    
    
    if __name__ == '__main__':
        #nice predecessors
    
        qgsApp = initQgisApplication()
    
        assert nicePredecessor(26) == 25
        assert nicePredecessor(25) == 25
        assert nicePredecessor(23) == 20
        assert nicePredecessor(999) == 950
        assert nicePredecessor(1001) == 1000
        assert nicePredecessor(1.2) == 1.0      #
        assert nicePredecessor(0.8) == 0.5
        assert nicePredecessor(0.2) == 0.1
        assert nicePredecessor(0.021) == 0.01
        assert nicePredecessor(0.0009991) == 0.0005