fix filter bugs
change table layer action
This commit is contained in:
parent
848c720435
commit
398fb21cb0
@ -43,8 +43,8 @@ class RateSetdialog(QDialog):
|
|||||||
self.cancel_button.clicked.connect(self.on_cancel)
|
self.cancel_button.clicked.connect(self.on_cancel)
|
||||||
self.cancel_button.setDefault(False)
|
self.cancel_button.setDefault(False)
|
||||||
self.buttonbox=QDialogButtonBox(self)
|
self.buttonbox=QDialogButtonBox(self)
|
||||||
self.buttonbox.addButton(self.ok_button,QDialogButtonBox.NoRole)
|
self.buttonbox.addButton(self.ok_button,QDialogButtonBox.Ok)
|
||||||
self.buttonbox.addButton(self.cancel_button,QDialogButtonBox.NoRole)
|
self.buttonbox.addButton(self.cancel_button,QDialogButtonBox.Cancel)
|
||||||
self.buttonbox.setCenterButtons(True)
|
self.buttonbox.setCenterButtons(True)
|
||||||
vlayout=QVBoxLayout()
|
vlayout=QVBoxLayout()
|
||||||
vlayout.addLayout(h1)
|
vlayout.addLayout(h1)
|
||||||
@ -53,7 +53,7 @@ class RateSetdialog(QDialog):
|
|||||||
vlayout.addWidget(self.buttonbox)
|
vlayout.addWidget(self.buttonbox)
|
||||||
self.setLayout(vlayout)
|
self.setLayout(vlayout)
|
||||||
|
|
||||||
self.old_data = None
|
# self.old_data = None
|
||||||
|
|
||||||
def on_ok(self):
|
def on_ok(self):
|
||||||
self.onclose()
|
self.onclose()
|
||||||
@ -67,12 +67,14 @@ class RateSetdialog(QDialog):
|
|||||||
|
|
||||||
def onclose(self) -> None:
|
def onclose(self) -> None:
|
||||||
if self.layer_select.current_layer is not None:
|
if self.layer_select.current_layer is not None:
|
||||||
|
self.layer_select.current_layer.th = self.slider.value()
|
||||||
self.layer_select.current_layer.save()
|
self.layer_select.current_layer.save()
|
||||||
|
|
||||||
|
|
||||||
def closeEvent(self, a0) -> None:
|
# def closeEvent(self, a0) -> None:
|
||||||
if self.layer_select.current_layer is not None:
|
# if self.layer_select.current_layer is not None:
|
||||||
self.layer_select.current_layer.data = self.layer_select.current_layer.old_data
|
# self.layer_select.current_layer.data = self.layer_select.current_layer.old_data
|
||||||
self.layer_select.current_layer.update_point_layer(-1)
|
# self.layer_select.current_layer.update_point_layer(-1)
|
||||||
|
|
||||||
|
|
||||||
class RateSetPlugin(BasicPlugin):
|
class RateSetPlugin(BasicPlugin):
|
||||||
@ -111,6 +113,7 @@ class RateSetPlugin(BasicPlugin):
|
|||||||
return
|
return
|
||||||
data=layer.data.copy()
|
data=layer.data.copy()
|
||||||
# print(input)
|
# print(input)
|
||||||
|
|
||||||
data[np.where(data[:,-2]<(input)),-1]=0
|
data[np.where(data[:,-2]<(input)),-1]=0
|
||||||
data[np.where(data[:,-2]>(input)),-1]=1
|
data[np.where(data[:,-2]>(input)),-1]=1
|
||||||
layer.data=data
|
layer.data=data
|
||||||
|
@ -65,7 +65,7 @@ class FilterMethod(QDialog):
|
|||||||
|
|
||||||
class MainPlugin(BasicPlugin):
|
class MainPlugin(BasicPlugin):
|
||||||
|
|
||||||
alg_ok = pyqtSignal(PairLayer, RasterLayer)
|
alg_ok = pyqtSignal(PairLayer, str)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def info():
|
def info():
|
||||||
@ -94,22 +94,24 @@ class MainPlugin(BasicPlugin):
|
|||||||
# # self.action.setChecked(False)
|
# # self.action.setChecked(False)
|
||||||
# self.action.triggered.connect(self.run)
|
# self.action.triggered.connect(self.run)
|
||||||
# ActionManager().filter_menu.addAction(self.action)
|
# ActionManager().filter_menu.addAction(self.action)
|
||||||
# self.alg_ok.connect(self.alg_oked)
|
self.alg_ok.connect(self.alg_oked)
|
||||||
# basic
|
# basic
|
||||||
|
|
||||||
def alg_oked(self, parent, layer:RasterLayer):
|
def alg_oked(self, layer, outpath):
|
||||||
parent.add_result_layer(layer)
|
rlayer = RasterLayer(path = outpath, enable= True, view_mode = layer.view_mode )
|
||||||
|
layer.layer_parent.add_result_layer(rlayer)
|
||||||
|
|
||||||
def run_alg(self, layer:RasterLayer, alg:AlgFrontend, p):
|
def run_alg(self, layer:RasterLayer, alg:AlgFrontend, p):
|
||||||
|
|
||||||
pth = layer.path
|
pth = layer.path
|
||||||
if pth is None:
|
if pth is None:
|
||||||
return
|
return
|
||||||
out_path = alg.run_alg(pth, **p)
|
out_path = alg.run_alg(pth, **p, send_message=self.send_message)
|
||||||
|
self.send_message.emit('滤波完成')
|
||||||
|
self.send_message.emit('结果在:'+out_path)
|
||||||
|
|
||||||
|
|
||||||
rlayer = RasterLayer(path = out_path, enable= True, view_mode = layer.view_mode )
|
self.alg_ok.emit(layer, out_path)
|
||||||
|
|
||||||
self.alg_ok.emit(layer.layer_parent, rlayer)
|
|
||||||
|
|
||||||
def run(self, key):
|
def run(self, key):
|
||||||
if key not in FILTER:
|
if key not in FILTER:
|
||||||
|
@ -5,8 +5,10 @@ from osgeo import gdal
|
|||||||
from rscder.utils.project import Project
|
from rscder.utils.project import Project
|
||||||
import os
|
import os
|
||||||
from rscder.utils.project import BasicLayer, ResultPointLayer
|
from rscder.utils.project import BasicLayer, ResultPointLayer
|
||||||
|
from misc.utils import format_now
|
||||||
|
|
||||||
def table_layer(pth:str,layer:BasicLayer, name, send_message = None):
|
def table_layer(pth:str,layer:BasicLayer, name, cdpath=None,
|
||||||
|
th=0, method_info=dict(), send_message = None):
|
||||||
if send_message is not None:
|
if send_message is not None:
|
||||||
send_message.emit('正在计算表格结果...')
|
send_message.emit('正在计算表格结果...')
|
||||||
cell_size = layer.layer_parent.cell_size
|
cell_size = layer.layer_parent.cell_size
|
||||||
@ -15,7 +17,7 @@ def table_layer(pth:str,layer:BasicLayer, name, send_message = None):
|
|||||||
ysize = ds.RasterYSize
|
ysize = ds.RasterYSize
|
||||||
geo = ds.GetGeoTransform()
|
geo = ds.GetGeoTransform()
|
||||||
|
|
||||||
out_csv = os.path.join(Project().other_path, f'{name}_table_result_{ int(datetime.now().timestamp() * 1000) }.csv')
|
out_csv = os.path.join(Project().other_path, f'{name}_table_result_{ format_now() }.csv')
|
||||||
yblocks = ysize // cell_size[1] + 1
|
yblocks = ysize // cell_size[1] + 1
|
||||||
xblocks = xsize // cell_size[0] + 1
|
xblocks = xsize // cell_size[0] + 1
|
||||||
with open(out_csv, 'w') as f:
|
with open(out_csv, 'w') as f:
|
||||||
@ -39,7 +41,8 @@ def table_layer(pth:str,layer:BasicLayer, name, send_message = None):
|
|||||||
center_y = center_y * geo[5] + geo [3]
|
center_y = center_y * geo[5] + geo [3]
|
||||||
f.write(f'{center_x},{center_y},{block_data_xy.mean() * 100},{int(block_data_xy.mean() > 0.5)}\n')
|
f.write(f'{center_x},{center_y},{block_data_xy.mean() * 100},{int(block_data_xy.mean() > 0.5)}\n')
|
||||||
|
|
||||||
result_layer = ResultPointLayer(out_csv, enable=True, proj=layer.proj, geo=layer.geo,result_path=dict(path=pth))
|
result_layer = ResultPointLayer(out_csv, enable=True, proj=layer.proj, geo=layer.geo,result_path=dict(path=pth, cmi=cdpath),
|
||||||
|
th=th, method_info=method_info, load=True)
|
||||||
# print(result_layer.result_path)
|
# print(result_layer.result_path)
|
||||||
layer.layer_parent.add_result_layer(result_layer)
|
layer.layer_parent.add_result_layer(result_layer)
|
||||||
if send_message is not None:
|
if send_message is not None:
|
||||||
|
@ -2,6 +2,11 @@ import os
|
|||||||
import random
|
import random
|
||||||
import logging
|
import logging
|
||||||
# def generate_temp_file
|
# def generate_temp_file
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
def format_now():
|
||||||
|
|
||||||
|
datetime.datetime.now().strftime('')
|
||||||
|
|
||||||
class Register:
|
class Register:
|
||||||
|
|
||||||
|
@ -78,7 +78,7 @@ class ManulGapAlg(AlgFrontend):
|
|||||||
ds = None
|
ds = None
|
||||||
if send_message is not None:
|
if send_message is not None:
|
||||||
send_message.emit('自定义阈值分割完成')
|
send_message.emit('自定义阈值分割完成')
|
||||||
return out_th
|
return out_th, gap
|
||||||
|
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
@ -174,5 +174,5 @@ class OTSUAlg(AlgFrontend):
|
|||||||
ds = None
|
ds = None
|
||||||
send_message.emit('OTSU阈值完成')
|
send_message.emit('OTSU阈值完成')
|
||||||
|
|
||||||
return out_th
|
return out_th, gap
|
||||||
# ManulGapAlg.run_alg
|
# ManulGapAlg.run_alg
|
@ -12,7 +12,7 @@ from .scripts import UNSUPER_CD
|
|||||||
from thres import THRES
|
from thres import THRES
|
||||||
from misc import table_layer, AlgSelectWidget
|
from misc import table_layer, AlgSelectWidget
|
||||||
from follow import FOLLOW
|
from follow import FOLLOW
|
||||||
|
import os
|
||||||
class UnsupervisedCDMethod(QDialog):
|
class UnsupervisedCDMethod(QDialog):
|
||||||
def __init__(self,parent=None, alg:AlgFrontend=None):
|
def __init__(self,parent=None, alg:AlgFrontend=None):
|
||||||
super(UnsupervisedCDMethod, self).__init__(parent)
|
super(UnsupervisedCDMethod, self).__init__(parent)
|
||||||
@ -146,18 +146,31 @@ class UnsupervisedCDFollow(AlgFrontend):
|
|||||||
return
|
return
|
||||||
|
|
||||||
name = layer1.name
|
name = layer1.name
|
||||||
|
method_info = dict()
|
||||||
if falg is not None:
|
if falg is not None:
|
||||||
pth1 = falg.run_alg(pth1, name=name, send_message= send_message, **fparams)
|
pth1 = falg.run_alg(pth1, name=name, send_message= send_message, **fparams)
|
||||||
pth2 = falg.run_alg(pth2, name=name, send_message= send_message, **fparams)
|
pth2 = falg.run_alg(pth2, name=name, send_message= send_message, **fparams)
|
||||||
|
method_info['滤波算法'] = falg.get_name()
|
||||||
|
else:
|
||||||
|
method_info['滤波算法'] = '无'
|
||||||
|
|
||||||
cdpth = cdalg.run_alg(pth1, pth2, layer1.layer_parent, send_message= send_message,**cdparams)
|
cdpth = cdalg.run_alg(pth1, pth2, layer1.layer_parent, send_message= send_message,**cdparams)
|
||||||
thpth = thalg.run_alg(cdpth, name=name, send_message= send_message, **thparams)
|
|
||||||
|
if falg is not None:
|
||||||
|
try:
|
||||||
|
os.remove(pth1)
|
||||||
|
os.remove(pth2)
|
||||||
|
# send_message.emit('删除临时文件')
|
||||||
|
except:
|
||||||
|
# send_message.emit('删除临时文件失败!')
|
||||||
|
pass
|
||||||
|
|
||||||
table_layer(thpth,layer1,name, send_message)
|
thpth, th = thalg.run_alg(cdpth, name=name, send_message= send_message, **thparams)
|
||||||
|
|
||||||
|
method_info['变化检测算法'] = cdalg.get_name()
|
||||||
|
method_info['二值化算法'] = thalg.get_name()
|
||||||
|
|
||||||
|
table_layer(thpth,layer1,name, cdpath=cdpth, th=th, method_info=method_info, send_message = send_message)
|
||||||
|
|
||||||
|
|
||||||
class UnsupervisedPlugin(BasicPlugin):
|
class UnsupervisedPlugin(BasicPlugin):
|
||||||
@ -192,7 +205,7 @@ class UnsupervisedPlugin(BasicPlugin):
|
|||||||
|
|
||||||
|
|
||||||
def run_cd(self, alg):
|
def run_cd(self, alg):
|
||||||
print(alg.get_name())
|
# print(alg.get_name())
|
||||||
dialog = UnsupervisedCDMethod(self.mainwindow, alg)
|
dialog = UnsupervisedCDMethod(self.mainwindow, alg)
|
||||||
dialog.show()
|
dialog.show()
|
||||||
|
|
||||||
@ -214,14 +227,30 @@ class UnsupervisedPlugin(BasicPlugin):
|
|||||||
|
|
||||||
if cdalg is None or thalg is None:
|
if cdalg is None or thalg is None:
|
||||||
return
|
return
|
||||||
|
method_info = dict()
|
||||||
if falg is not None:
|
if falg is not None:
|
||||||
pth1 = falg.run_alg(pth1, name=name, send_message=self.send_message, **fparams)
|
pth1 = falg.run_alg(pth1, name=name, send_message=self.send_message, **fparams)
|
||||||
pth2 = falg.run_alg(pth2, name=name, send_message=self.send_message, **fparams)
|
pth2 = falg.run_alg(pth2, name=name, send_message=self.send_message, **fparams)
|
||||||
|
method_info['滤波算法'] = falg.get_name()
|
||||||
|
else:
|
||||||
|
method_info['滤波算法'] = '无'
|
||||||
|
|
||||||
cdpth = cdalg.run_alg(pth1, pth2, layer1.layer_parent, send_message=self.send_message,**cdparams)
|
cdpth = cdalg.run_alg(pth1, pth2, layer1.layer_parent, send_message=self.send_message,**cdparams)
|
||||||
thpth = thalg.run_alg(cdpth, name=name, send_message=self.send_message, **thparams)
|
|
||||||
|
|
||||||
table_layer(thpth,layer1,name,self.send_message)
|
if falg is not None:
|
||||||
|
try:
|
||||||
|
os.remove(pth1)
|
||||||
|
os.remove(pth2)
|
||||||
|
# send_message.emit('删除临时文件')
|
||||||
|
except:
|
||||||
|
# send_message.emit('删除临时文件失败!')
|
||||||
|
pass
|
||||||
|
|
||||||
|
thpth, th = thalg.run_alg(cdpth, name=name, send_message=self.send_message, **thparams)
|
||||||
|
|
||||||
|
method_info['变化检测算法'] = cdalg.get_name()
|
||||||
|
method_info['二值化算法'] = thalg.get_name()
|
||||||
|
|
||||||
|
table_layer(thpth,layer1,name, cdpath=cdpth, th=th, method_info=method_info, send_message = self.send_message)
|
||||||
|
# table_layer(thpth,layer1,name,self.send_message)
|
||||||
|
|
@ -175,7 +175,7 @@ class loader(QDialog):
|
|||||||
path1 = QFileDialog.getOpenFileNames(self, '打开数据1', Settings.General().last_path, '*.*')
|
path1 = QFileDialog.getOpenFileNames(self, '打开数据1', Settings.General().last_path, '*.*')
|
||||||
if path1[0]!='':
|
if path1[0]!='':
|
||||||
try:
|
try:
|
||||||
|
Settings.General().last_path = path1[0][0]
|
||||||
self.path1 = path1[0][0]
|
self.path1 = path1[0][0]
|
||||||
self.path1_input.setText(self.path1)
|
self.path1_input.setText(self.path1)
|
||||||
result=QMessageBox.question(self, '提示', '是否创建图像金字塔', QMessageBox.Yes | QMessageBox.No, QMessageBox.No) #默认关闭界面选择No
|
result=QMessageBox.question(self, '提示', '是否创建图像金字塔', QMessageBox.Yes | QMessageBox.No, QMessageBox.No) #默认关闭界面选择No
|
||||||
@ -210,7 +210,7 @@ class loader(QDialog):
|
|||||||
def open_file2(self):
|
def open_file2(self):
|
||||||
path2 = QFileDialog.getOpenFileNames(self, '打开数据2', Settings.General().last_path, '*.*')
|
path2 = QFileDialog.getOpenFileNames(self, '打开数据2', Settings.General().last_path, '*.*')
|
||||||
if path2[0]!='':
|
if path2[0]!='':
|
||||||
|
Settings.General().last_path = path2[0][0]
|
||||||
self.path2 = path2[0][0]
|
self.path2 = path2[0][0]
|
||||||
self.path2_input.setText(self.path2)
|
self.path2_input.setText(self.path2)
|
||||||
result=QMessageBox.question(self, '提示', '是否创建图像金字塔', QMessageBox.Yes | QMessageBox.No, QMessageBox.No) #默认关闭界面选择No
|
result=QMessageBox.question(self, '提示', '是否创建图像金字塔', QMessageBox.Yes | QMessageBox.No, QMessageBox.No) #默认关闭界面选择No
|
||||||
|
@ -213,6 +213,8 @@ class Project(QObject):
|
|||||||
return pth
|
return pth
|
||||||
|
|
||||||
def add_layer(self, pth1, pth2,style_info1,style_info2):
|
def add_layer(self, pth1, pth2,style_info1,style_info2):
|
||||||
|
if not self.is_init:
|
||||||
|
self.setup(Settings.General().root, 'default')
|
||||||
player = PairLayer(pth1, pth2,style_info1,style_info2)
|
player = PairLayer(pth1, pth2,style_info1,style_info2)
|
||||||
if player.check():
|
if player.check():
|
||||||
self.layers[player.id] = player
|
self.layers[player.id] = player
|
||||||
@ -336,7 +338,7 @@ class BasicLayer(QObject):
|
|||||||
show_info.triggered.connect(lambda :showIofn(self.info))
|
show_info.triggered.connect(lambda :showIofn(self.info))
|
||||||
return actions
|
return actions
|
||||||
|
|
||||||
return actions
|
# return actions
|
||||||
@property
|
@property
|
||||||
def info(self):
|
def info(self):
|
||||||
return None
|
return None
|
||||||
@ -599,7 +601,12 @@ class VectorLayer(BasicLayer):
|
|||||||
|
|
||||||
class ResultPointLayer(BasicLayer):
|
class ResultPointLayer(BasicLayer):
|
||||||
|
|
||||||
def __init__(self, path, name=None, enable = False, proj = None, geo = None,result_path={},dsort=False):
|
def __init__(self, path, name=None, enable = False, proj = None, geo = None,
|
||||||
|
th=0.5,
|
||||||
|
render_info=dict(font_color='#FF0000', font_size=100, font_name='Times New Roman', color='#ffff00', point_size=2),
|
||||||
|
method_info=dict(),
|
||||||
|
result_path={},dsort=False,
|
||||||
|
load = False):
|
||||||
if name is None:
|
if name is None:
|
||||||
name = os.path.splitext(os.path.basename(path))[0]
|
name = os.path.splitext(os.path.basename(path))[0]
|
||||||
super().__init__(name, enable, icon=IconInstance().VECTOR, path=path, path_mode = BasicLayer.IN_FILE, view_mode=BasicLayer.BOATH_VIEW )
|
super().__init__(name, enable, icon=IconInstance().VECTOR, path=path, path_mode = BasicLayer.IN_FILE, view_mode=BasicLayer.BOATH_VIEW )
|
||||||
@ -608,8 +615,13 @@ class ResultPointLayer(BasicLayer):
|
|||||||
self.geo = geo
|
self.geo = geo
|
||||||
self.dsort=dsort
|
self.dsort=dsort
|
||||||
self.result_path:dict=result_path
|
self.result_path:dict=result_path
|
||||||
|
self.render_info = render_info
|
||||||
|
self.method_info = method_info
|
||||||
|
self.th = th
|
||||||
|
self.load = load
|
||||||
|
if self.load:
|
||||||
# self.methods=
|
# self.methods=
|
||||||
self.load_point_file()
|
self.load_point_file()
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
|
|
||||||
@ -618,7 +630,6 @@ class ResultPointLayer(BasicLayer):
|
|||||||
for i in range(len(self.data)):
|
for i in range(len(self.data)):
|
||||||
f.write('{},{},{},{}\n'.format(self.data[i][0], self.data[i][1], self.data[i][2], int(self.data[i][3])))
|
f.write('{},{},{},{}\n'.format(self.data[i][0], self.data[i][1], self.data[i][2], int(self.data[i][3])))
|
||||||
|
|
||||||
|
|
||||||
def update(self, data):
|
def update(self, data):
|
||||||
row = data['row']
|
row = data['row']
|
||||||
value = data['value']
|
value = data['value']
|
||||||
@ -632,7 +643,7 @@ class ResultPointLayer(BasicLayer):
|
|||||||
lyr.fieldName = 'prob'
|
lyr.fieldName = 'prob'
|
||||||
lyr.placement = QgsPalLayerSettings.OverPoint
|
lyr.placement = QgsPalLayerSettings.OverPoint
|
||||||
|
|
||||||
lyr.textFont = QFont('Times New Roman', 100)
|
lyr.textFont = QFont(self.render_info['font_name'], self.render_info['font_size'])
|
||||||
text_format = QgsTextFormat()
|
text_format = QgsTextFormat()
|
||||||
text_format.setFont(lyr.textFont)
|
text_format.setFont(lyr.textFont)
|
||||||
if self.geo is None:
|
if self.geo is None:
|
||||||
@ -641,9 +652,9 @@ class ResultPointLayer(BasicLayer):
|
|||||||
res = self.geo[1]
|
res = self.geo[1]
|
||||||
# lyr.xOffset = 25 * res
|
# lyr.xOffset = 25 * res
|
||||||
# lyr.yOffset = -2 * res
|
# lyr.yOffset = -2 * res
|
||||||
text_format.setSize(50 * res)
|
text_format.setSize(self.render_info['font_size'] * res)
|
||||||
text_format.setSizeUnit(QgsUnitTypes.RenderMapUnits)
|
text_format.setSizeUnit(QgsUnitTypes.RenderMapUnits)
|
||||||
text_format.setColor(QColor('#FF0000'))
|
text_format.setColor(QColor(self.render_info['font_color']))
|
||||||
# text_format.background().color = QColor('#000000')
|
# text_format.background().color = QColor('#000000')
|
||||||
text_format.buffer().setEnabled(True)
|
text_format.buffer().setEnabled(True)
|
||||||
text_format.buffer().setSize(1)
|
text_format.buffer().setSize(1)
|
||||||
@ -659,7 +670,7 @@ class ResultPointLayer(BasicLayer):
|
|||||||
|
|
||||||
def set_render(self, layer):
|
def set_render(self, layer):
|
||||||
# xres = self.geo[1]
|
# xres = self.geo[1]
|
||||||
symbol_change = QgsMarkerSymbol.createSimple({'color': '#ffff00', 'size': 2 })
|
symbol_change = QgsMarkerSymbol.createSimple({'color': self.render_info['color'], 'size': self.render_info['point_size'] })
|
||||||
symbol_change.setSizeUnit(QgsUnitTypes.RenderUnit.RenderMillimeters)
|
symbol_change.setSizeUnit(QgsUnitTypes.RenderUnit.RenderMillimeters)
|
||||||
category_change = QgsRendererCategory(1, symbol_change,'change')
|
category_change = QgsRendererCategory(1, symbol_change,'change')
|
||||||
|
|
||||||
@ -670,6 +681,7 @@ class ResultPointLayer(BasicLayer):
|
|||||||
layer.setRenderer(render)
|
layer.setRenderer(render)
|
||||||
|
|
||||||
def load_point_file(self):
|
def load_point_file(self):
|
||||||
|
self.load = True
|
||||||
data = np.loadtxt(self.path, delimiter=',', skiprows=1)
|
data = np.loadtxt(self.path, delimiter=',', skiprows=1)
|
||||||
if data is None:
|
if data is None:
|
||||||
return
|
return
|
||||||
@ -763,15 +775,16 @@ class ResultPointLayer(BasicLayer):
|
|||||||
basic['文件路径']=self.path
|
basic['文件路径']=self.path
|
||||||
|
|
||||||
#中间算法信息:
|
#中间算法信息:
|
||||||
methods={ k:v[0] for k ,v in self.result_path.items()}
|
methods={ k:v for k ,v in self.method_info.items()}
|
||||||
basic['变化检测算法']=methods
|
basic['变化检测算法']=methods
|
||||||
#渲染信息
|
#渲染信息
|
||||||
render={}
|
render={}
|
||||||
render['标注字体大小']=2
|
render['标注字体大小']=self.render_info['font_size']
|
||||||
render['标注颜色']='#ffff00'
|
render['标注颜色']=self.render_info['font_color']
|
||||||
render['阈值']=self.result_path['后处理'][1]
|
render['阈值']=self.th
|
||||||
|
|
||||||
return {'基础属性':basic,'渲染属性':render}
|
return {'基础属性':basic,'渲染属性':render}
|
||||||
|
|
||||||
class PairLayer(BasicLayer):
|
class PairLayer(BasicLayer):
|
||||||
|
|
||||||
def __init__(self, pth1, pth2,style_info1,style_info2,mask=None) -> None:
|
def __init__(self, pth1, pth2,style_info1,style_info2,mask=None) -> None:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user