From 11ab42d497c11d699762126f3865fd2ba1dfda18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E6=B2=88=E6=98=8A?= Date: Tue, 24 May 2022 21:56:49 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86pairLayer=E7=9A=84?= =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E5=87=BD=E6=95=B0=E4=BB=A5=E5=8F=8A?= =?UTF-8?q?project=20addlayer=E5=87=BD=E6=95=B0=E7=9A=84=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=EF=BC=8C=E6=B7=BB=E5=8A=A0=E4=BA=86=E5=BD=B1=E5=83=8F=E9=80=9A?= =?UTF-8?q?=E9=81=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rscder/utils/project.py | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/rscder/utils/project.py b/rscder/utils/project.py index 953abb8..b481120 100644 --- a/rscder/utils/project.py +++ b/rscder/utils/project.py @@ -12,7 +12,7 @@ import numpy as np from osgeo import gdal, gdal_array from rscder.utils.icons import IconInstance from rscder.utils.setting import Settings -from qgis.core import QgsRasterLayer, QgsMarkerSymbol, QgsUnitTypes, QgsCategorizedSymbolRenderer, QgsRendererCategory, QgsPalLayerSettings, QgsRuleBasedLabeling, QgsTextFormat, QgsLineSymbol, QgsSingleSymbolRenderer, QgsSimpleLineSymbolLayer, QgsVectorLayer, QgsCoordinateReferenceSystem, QgsFeature, QgsGeometry, QgsPointXY +from qgis.core import QgsRasterLayer, QgsMarkerSymbol, QgsUnitTypes, QgsCategorizedSymbolRenderer, QgsRendererCategory, QgsPalLayerSettings, QgsRuleBasedLabeling, QgsTextFormat, QgsLineSymbol, QgsSingleSymbolRenderer, QgsSimpleLineSymbolLayer, QgsVectorLayer, QgsCoordinateReferenceSystem, QgsFeature, QgsGeometry, QgsPointXY,QgsMultiBandColorRenderer from PyQt5.QtCore import QObject, pyqtSignal, Qt, QThread from PyQt5.QtWidgets import QTreeWidgetItem, QAction from PyQt5.QtGui import QColor, QIcon, QFont @@ -187,8 +187,8 @@ class Project(QObject): os.makedirs(pth) return pth - def add_layer(self, pth1, pth2): - player = PairLayer(pth1, pth2) + def add_layer(self, pth1, pth2,style_info1,style_info2): + player = PairLayer(pth1, pth2,style_info1,style_info2) if player.check(): self.layers[player.id] = player self.layer_show_update.emit() @@ -369,12 +369,13 @@ class GridLayer(BasicLayer): class RasterLayer(BasicLayer): - def __init__(self, name=None, enable=False, path=None, view_mode=BasicLayer.BOATH_VIEW): + def __init__(self, name=None, enable=False, path=None, view_mode=BasicLayer.BOATH_VIEW,style_info={'r':3,'g':2,'b':1,'NIR':3}): if name is None: name = os.path.splitext(os.path.basename(path))[0] super().__init__(name, enable, ':/icons/raster.png', path, BasicLayer.IN_FILE, view_mode) self.layer = QgsRasterLayer(self.path, self.name) - + self.style_info=style_info + self.apply_style() def compare(self, other:'RasterLayer'): ds1 = gdal.Open(self.path) ds2 = gdal.Open(other.path) @@ -414,7 +415,13 @@ class RasterLayer(BasicLayer): s = (ds.RasterXSize, ds.RasterYSize) del ds return s - + def apply_style(self): + renderer=QgsMultiBandColorRenderer(self.layer.dataProvider(),self.style_info['r'],self.style_info['g'],self.style_info['b']) + self.layer.setRenderer(renderer) + self.layer.triggerRepaint() + def set_stlye(self,style_info): + self.style_info=style_info + self.apply_style() class VectorLayer(BasicLayer): pass @@ -565,13 +572,13 @@ class ResultPointLayer(BasicLayer): class PairLayer(BasicLayer): - def __init__(self, pth1, pth2) -> None: + def __init__(self, pth1, pth2,style_info1,style_info2) -> None: self.layers:List[BasicLayer] = [] self.id = str(uuid.uuid1()) self.checked = False - self.main_l1 = RasterLayer(path = pth1, enable=True, view_mode=BasicLayer.LEFT_VIEW) - self.main_l2 = RasterLayer(path = pth2, enable=True, view_mode=BasicLayer.RIGHT_VIEW) + self.main_l1 = RasterLayer(path = pth1, enable=True, view_mode=BasicLayer.LEFT_VIEW,style_info=style_info1) + self.main_l2 = RasterLayer(path = pth2, enable=True, view_mode=BasicLayer.RIGHT_VIEW,style_info=style_info2) self.main_l1.set_layer_parent(self) self.main_l2.set_layer_parent(self) self.grid = None