add some icons
This commit is contained in:
parent
3d753a88a5
commit
2445b7aec0
@ -6,7 +6,15 @@ CVEO团队
|
|||||||
Python3.7 + PyQt + QGIS
|
Python3.7 + PyQt + QGIS
|
||||||
|
|
||||||
## 配置方式
|
## 配置方式
|
||||||
|
|
||||||
|
```
|
||||||
conda create -f conda.yaml
|
conda create -f conda.yaml
|
||||||
|
```
|
||||||
|
或
|
||||||
|
|
||||||
|
```
|
||||||
|
conda env create -n cevo_qt -f conda.yaml
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
# 打包方式
|
# 打包方式
|
||||||
|
@ -11,6 +11,7 @@ dependencies:
|
|||||||
- pyqtads=3.8.2=py37hf2a7229_0
|
- pyqtads=3.8.2=py37hf2a7229_0
|
||||||
- python=3.7.10=h7840368_101_cpython
|
- python=3.7.10=h7840368_101_cpython
|
||||||
- python_abi=3.7=2_cp37m
|
- python_abi=3.7=2_cp37m
|
||||||
|
- pip
|
||||||
- pyyaml=5.4.1=py37hcc03f2d_1
|
- pyyaml=5.4.1=py37hcc03f2d_1
|
||||||
- qgis=3.18.3=py37h3dc7164_2
|
- qgis=3.18.3=py37h3dc7164_2
|
||||||
- qt=5.12.9=h5909a2a_4
|
- qt=5.12.9=h5909a2a_4
|
||||||
|
BIN
icons/Algorithm_icon/功能-01.png
Normal file
BIN
icons/Algorithm_icon/功能-01.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.8 KiB |
BIN
icons/Algorithm_icon/功能-02.png
Normal file
BIN
icons/Algorithm_icon/功能-02.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.5 KiB |
BIN
icons/Algorithm_icon/功能-03.png
Normal file
BIN
icons/Algorithm_icon/功能-03.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.2 KiB |
BIN
icons/植被变化.png
Normal file
BIN
icons/植被变化.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 16 KiB |
@ -1 +1 @@
|
|||||||
vd4FiYncytyziGH9GNCAA8hGGr1/79Xmphtc5+PHPJDpxvqj1hP7+985QMojYO4M5Qn/aqEAvFgeDN3CA8x1YAK8SdCgSXSBJpRBK8wqPQjBY1ak96QfdPCrTLunr+xuPxK3Gxe772adTTsee2+ot7WePYUsC4y4NcS5+rlP1if87xtYqVeSwx3c64cOmAGP
|
IEhM2L0c7TWXeIEGUm8n1nMToPxkWiapMjEFtLFLHad4a1+2IKcrD2wbRobBLmTIdux5iOV+AV+t2JY75+w5NAU+umtYPWmpbAiphAQ1S8s8/h7fclRBU6Ym8oXDxCmZoWpCLCpJd8lE/R3nfKBoexDRYXecz/lw58wkdZbHktpNVKfjoe827/aKa7gmYNXO
|
@ -1,6 +1,14 @@
|
|||||||
|
from rscder.utils.icons import IconInstance
|
||||||
|
from .SH import SH
|
||||||
|
from .LHBA import LHBA
|
||||||
|
from .OCD import OCD
|
||||||
|
from .AHT import AHT
|
||||||
|
from .ACD import ACD
|
||||||
|
import numpy as np
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from osgeo import gdal
|
from osgeo import gdal
|
||||||
import math,os
|
import math
|
||||||
|
import os
|
||||||
import time
|
import time
|
||||||
from PyQt5 import QtWidgets
|
from PyQt5 import QtWidgets
|
||||||
from sklearn.cluster import k_means
|
from sklearn.cluster import k_means
|
||||||
@ -10,12 +18,6 @@ from misc import Register, AlgFrontend
|
|||||||
|
|
||||||
UNSUPER_CD = Register('无监督变化检测方法')
|
UNSUPER_CD = Register('无监督变化检测方法')
|
||||||
|
|
||||||
import numpy as np
|
|
||||||
from .ACD import ACD
|
|
||||||
from .AHT import AHT
|
|
||||||
from .OCD import OCD
|
|
||||||
from .LHBA import LHBA
|
|
||||||
from .SH import SH
|
|
||||||
|
|
||||||
def warp(file, ds: gdal.Dataset, srcWin=[0, 0, 0, 0]):
|
def warp(file, ds: gdal.Dataset, srcWin=[0, 0, 0, 0]):
|
||||||
driver = gdal.GetDriverByName('GTiff')
|
driver = gdal.GetDriverByName('GTiff')
|
||||||
@ -26,13 +28,16 @@ def warp(file,ds:gdal.Dataset,srcWin=[0,0,0,0]):
|
|||||||
band = ds.RasterCount
|
band = ds.RasterCount
|
||||||
if os.path.exists(file):
|
if os.path.exists(file):
|
||||||
os.remove(file)
|
os.remove(file)
|
||||||
out_ds:gdal.Dataset=driver.Create(file, xsize, ysize, band, gdal.GDT_Byte)
|
out_ds: gdal.Dataset = driver.Create(
|
||||||
|
file, xsize, ysize, band, gdal.GDT_Byte)
|
||||||
out_ds.SetGeoTransform(geo)
|
out_ds.SetGeoTransform(geo)
|
||||||
out_ds.SetProjection(orj)
|
out_ds.SetProjection(orj)
|
||||||
for b in range(1, band+1):
|
for b in range(1, band+1):
|
||||||
out_ds.GetRasterBand(b).WriteArray(ds.ReadAsArray(*srcWin,band_list=[b]),*(0,0))
|
out_ds.GetRasterBand(b).WriteArray(
|
||||||
|
ds.ReadAsArray(*srcWin, band_list=[b]), *(0, 0))
|
||||||
del out_ds
|
del out_ds
|
||||||
|
|
||||||
|
|
||||||
@UNSUPER_CD.register
|
@UNSUPER_CD.register
|
||||||
class BasicCD(AlgFrontend):
|
class BasicCD(AlgFrontend):
|
||||||
|
|
||||||
@ -40,6 +45,10 @@ class BasicCD(AlgFrontend):
|
|||||||
def get_name():
|
def get_name():
|
||||||
return '差分法'
|
return '差分法'
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_icon():
|
||||||
|
return IconInstance().ARITHMETIC3
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def run_alg(pth1: str, pth2: str, layer_parent: PairLayer, send_message=None, *args, **kargs):
|
def run_alg(pth1: str, pth2: str, layer_parent: PairLayer, send_message=None, *args, **kargs):
|
||||||
|
|
||||||
@ -64,11 +73,15 @@ class BasicCD(AlgFrontend):
|
|||||||
max_diff = 0
|
max_diff = 0
|
||||||
min_diff = math.inf
|
min_diff = math.inf
|
||||||
|
|
||||||
start1x,start1y=geo2imageRC(ds1.GetGeoTransform(),layer_parent.mask.xy[0],layer_parent.mask.xy[1])
|
start1x, start1y = geo2imageRC(ds1.GetGeoTransform(
|
||||||
end1x,end1y=geo2imageRC(ds1.GetGeoTransform(),layer_parent.mask.xy[2],layer_parent.mask.xy[3])
|
), layer_parent.mask.xy[0], layer_parent.mask.xy[1])
|
||||||
|
end1x, end1y = geo2imageRC(ds1.GetGeoTransform(
|
||||||
|
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||||
|
|
||||||
start2x,start2y=geo2imageRC(ds2.GetGeoTransform(),layer_parent.mask.xy[0],layer_parent.mask.xy[1])
|
start2x, start2y = geo2imageRC(ds2.GetGeoTransform(
|
||||||
end2x,end2y=geo2imageRC(ds2.GetGeoTransform(),layer_parent.mask.xy[2],layer_parent.mask.xy[3])
|
), layer_parent.mask.xy[0], layer_parent.mask.xy[1])
|
||||||
|
end2x, end2y = geo2imageRC(ds2.GetGeoTransform(
|
||||||
|
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||||
|
|
||||||
for j in range(yblocks + 1): # 该改这里了
|
for j in range(yblocks + 1): # 该改这里了
|
||||||
if send_message is not None:
|
if send_message is not None:
|
||||||
@ -112,8 +125,10 @@ class BasicCD(AlgFrontend):
|
|||||||
send_message.emit('归一化概率中...')
|
send_message.emit('归一化概率中...')
|
||||||
temp_in_ds = gdal.Open(out_tif)
|
temp_in_ds = gdal.Open(out_tif)
|
||||||
|
|
||||||
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(layer_parent.name, int(np.random.rand() * 100000)))
|
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(
|
||||||
out_normal_ds = driver.Create(out_normal_tif, xsize, ysize, 1, gdal.GDT_Byte)
|
layer_parent.name, int(np.random.rand() * 100000)))
|
||||||
|
out_normal_ds = driver.Create(
|
||||||
|
out_normal_tif, xsize, ysize, 1, gdal.GDT_Byte)
|
||||||
out_normal_ds.SetGeoTransform(geo)
|
out_normal_ds.SetGeoTransform(geo)
|
||||||
out_normal_ds.SetProjection(proj)
|
out_normal_ds.SetProjection(proj)
|
||||||
# hist = np.zeros(256, dtype=np.int32)
|
# hist = np.zeros(256, dtype=np.int32)
|
||||||
@ -141,6 +156,7 @@ class BasicCD(AlgFrontend):
|
|||||||
send_message.emit('差分法计算完成')
|
send_message.emit('差分法计算完成')
|
||||||
return out_normal_tif
|
return out_normal_tif
|
||||||
|
|
||||||
|
|
||||||
@UNSUPER_CD.register
|
@UNSUPER_CD.register
|
||||||
class LSTS(AlgFrontend):
|
class LSTS(AlgFrontend):
|
||||||
|
|
||||||
@ -148,6 +164,10 @@ class LSTS(AlgFrontend):
|
|||||||
def get_name():
|
def get_name():
|
||||||
return 'LSTS'
|
return 'LSTS'
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_icon():
|
||||||
|
return IconInstance().ARITHMETIC3
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_widget(parent=None):
|
def get_widget(parent=None):
|
||||||
|
|
||||||
@ -172,7 +192,8 @@ class LSTS(AlgFrontend):
|
|||||||
yblocks = ysize // cell_size[1]
|
yblocks = ysize // cell_size[1]
|
||||||
|
|
||||||
driver = gdal.GetDriverByName('GTiff')
|
driver = gdal.GetDriverByName('GTiff')
|
||||||
out_tif = os.path.join(Project().other_path, '%d.tif'%(int(datetime.now().timestamp() * 1000)))
|
out_tif = os.path.join(Project().other_path, '%d.tif' % (
|
||||||
|
int(datetime.now().timestamp() * 1000)))
|
||||||
out_ds = driver.Create(out_tif, xsize, ysize, 1, gdal.GDT_Float32)
|
out_ds = driver.Create(out_tif, xsize, ysize, 1, gdal.GDT_Float32)
|
||||||
geo = layer_parent.grid.geo
|
geo = layer_parent.grid.geo
|
||||||
proj = layer_parent.grid.proj
|
proj = layer_parent.grid.proj
|
||||||
@ -185,17 +206,21 @@ class LSTS(AlgFrontend):
|
|||||||
win_h = w_size[0]//2 # half hight of window
|
win_h = w_size[0]//2 # half hight of window
|
||||||
win_w = w_size[1]//2 # half width of window
|
win_w = w_size[1]//2 # half width of window
|
||||||
a = [[(i+1)**j for j in range(n+1)] for i in range(pixnum)]
|
a = [[(i+1)**j for j in range(n+1)] for i in range(pixnum)]
|
||||||
A=np.array(a).astype(np.float64)#
|
A = np.array(a).astype(np.float64)
|
||||||
|
|
||||||
k_ = np.array(range(1, n+1))
|
k_ = np.array(range(1, n+1))
|
||||||
df1 = np.zeros(pixnum).astype(np.float64)
|
df1 = np.zeros(pixnum).astype(np.float64)
|
||||||
df2 = np.zeros(pixnum).astype(np.float64)
|
df2 = np.zeros(pixnum).astype(np.float64)
|
||||||
|
|
||||||
start1x,start1y=geo2imageRC(ds1.GetGeoTransform(),layer_parent.mask.xy[0],layer_parent.mask.xy[1])
|
start1x, start1y = geo2imageRC(ds1.GetGeoTransform(
|
||||||
end1x,end1y=geo2imageRC(ds1.GetGeoTransform(),layer_parent.mask.xy[2],layer_parent.mask.xy[3])
|
), layer_parent.mask.xy[0], layer_parent.mask.xy[1])
|
||||||
|
end1x, end1y = geo2imageRC(ds1.GetGeoTransform(
|
||||||
|
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||||
|
|
||||||
start2x,start2y=geo2imageRC(ds2.GetGeoTransform(),layer_parent.mask.xy[0],layer_parent.mask.xy[1])
|
start2x, start2y = geo2imageRC(ds2.GetGeoTransform(
|
||||||
end2x,end2y=geo2imageRC(ds2.GetGeoTransform(),layer_parent.mask.xy[2],layer_parent.mask.xy[3])
|
), layer_parent.mask.xy[0], layer_parent.mask.xy[1])
|
||||||
|
end2x, end2y = geo2imageRC(ds2.GetGeoTransform(
|
||||||
|
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||||
|
|
||||||
for j in range(yblocks + 1):
|
for j in range(yblocks + 1):
|
||||||
if send_message is not None:
|
if send_message is not None:
|
||||||
@ -244,8 +269,10 @@ class LSTS(AlgFrontend):
|
|||||||
# df
|
# df
|
||||||
k_ = range(1, n+1)
|
k_ = range(1, n+1)
|
||||||
for pix in range(1, pixnum+1):
|
for pix in range(1, pixnum+1):
|
||||||
df1[pix-1]=x1[1:n+1].dot(np.array([k*(pix**(k-1)) for k in k_]))
|
df1[pix-1] = x1[1:n +
|
||||||
df2[pix-1]=x2[1:n+1].dot(np.array([k*(pix**(k-1)) for k in k_]))
|
1].dot(np.array([k*(pix**(k-1)) for k in k_]))
|
||||||
|
df2[pix-1] = x2[1:n +
|
||||||
|
1].dot(np.array([k*(pix**(k-1)) for k in k_]))
|
||||||
|
|
||||||
# distance 欧式距离
|
# distance 欧式距离
|
||||||
block_diff[i][j_] = np.dot(df1-df2, df1-df2)**0.5
|
block_diff[i][j_] = np.dot(df1-df2, df1-df2)**0.5
|
||||||
@ -263,8 +290,10 @@ class LSTS(AlgFrontend):
|
|||||||
send_message.emit('归一化概率中...')
|
send_message.emit('归一化概率中...')
|
||||||
temp_in_ds = gdal.Open(out_tif)
|
temp_in_ds = gdal.Open(out_tif)
|
||||||
|
|
||||||
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(layer_parent.name, int(np.random.rand() * 100000)))
|
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(
|
||||||
out_normal_ds = driver.Create(out_normal_tif, xsize, ysize, 1, gdal.GDT_Byte)
|
layer_parent.name, int(np.random.rand() * 100000)))
|
||||||
|
out_normal_ds = driver.Create(
|
||||||
|
out_normal_tif, xsize, ysize, 1, gdal.GDT_Byte)
|
||||||
out_normal_ds.SetGeoTransform(geo)
|
out_normal_ds.SetGeoTransform(geo)
|
||||||
out_normal_ds.SetProjection(proj)
|
out_normal_ds.SetProjection(proj)
|
||||||
# hist = np.zeros(256, dtype=np.int32)
|
# hist = np.zeros(256, dtype=np.int32)
|
||||||
@ -301,6 +330,10 @@ class CVAAlg(AlgFrontend):
|
|||||||
def get_name():
|
def get_name():
|
||||||
return 'CVA'
|
return 'CVA'
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_icon():
|
||||||
|
return IconInstance().ARITHMETIC3
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def run_alg(pth1: str, pth2: str, layer_parent: PairLayer, send_message=None, *args, **kargs):
|
def run_alg(pth1: str, pth2: str, layer_parent: PairLayer, send_message=None, *args, **kargs):
|
||||||
|
|
||||||
@ -324,12 +357,15 @@ class CVAAlg(AlgFrontend):
|
|||||||
max_diff = 0
|
max_diff = 0
|
||||||
min_diff = math.inf
|
min_diff = math.inf
|
||||||
|
|
||||||
|
start1x, start1y = geo2imageRC(ds1.GetGeoTransform(
|
||||||
|
), layer_parent.mask.xy[0], layer_parent.mask.xy[1])
|
||||||
|
end1x, end1y = geo2imageRC(ds1.GetGeoTransform(
|
||||||
|
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||||
|
|
||||||
start1x,start1y=geo2imageRC(ds1.GetGeoTransform(),layer_parent.mask.xy[0],layer_parent.mask.xy[1])
|
start2x, start2y = geo2imageRC(ds2.GetGeoTransform(
|
||||||
end1x,end1y=geo2imageRC(ds1.GetGeoTransform(),layer_parent.mask.xy[2],layer_parent.mask.xy[3])
|
), layer_parent.mask.xy[0], layer_parent.mask.xy[1])
|
||||||
|
end2x, end2y = geo2imageRC(ds2.GetGeoTransform(
|
||||||
start2x,start2y=geo2imageRC(ds2.GetGeoTransform(),layer_parent.mask.xy[0],layer_parent.mask.xy[1])
|
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||||
end2x,end2y=geo2imageRC(ds2.GetGeoTransform(),layer_parent.mask.xy[2],layer_parent.mask.xy[3])
|
|
||||||
|
|
||||||
for j in range(yblocks + 1):
|
for j in range(yblocks + 1):
|
||||||
if send_message is not None:
|
if send_message is not None:
|
||||||
@ -369,8 +405,10 @@ class CVAAlg(AlgFrontend):
|
|||||||
send_message.emit('归一化概率中...')
|
send_message.emit('归一化概率中...')
|
||||||
temp_in_ds = gdal.Open(out_tif)
|
temp_in_ds = gdal.Open(out_tif)
|
||||||
|
|
||||||
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(layer_parent.name, int(np.random.rand() * 100000)))
|
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(
|
||||||
out_normal_ds = driver.Create(out_normal_tif, xsize, ysize, 1, gdal.GDT_Byte)
|
layer_parent.name, int(np.random.rand() * 100000)))
|
||||||
|
out_normal_ds = driver.Create(
|
||||||
|
out_normal_tif, xsize, ysize, 1, gdal.GDT_Byte)
|
||||||
out_normal_ds.SetGeoTransform(geo)
|
out_normal_ds.SetGeoTransform(geo)
|
||||||
out_normal_ds.SetProjection(proj)
|
out_normal_ds.SetProjection(proj)
|
||||||
# hist = np.zeros(256, dtype=np.int32)
|
# hist = np.zeros(256, dtype=np.int32)
|
||||||
@ -398,6 +436,7 @@ class CVAAlg(AlgFrontend):
|
|||||||
send_message.emit('欧式距离计算完成')
|
send_message.emit('欧式距离计算完成')
|
||||||
return out_normal_tif
|
return out_normal_tif
|
||||||
|
|
||||||
|
|
||||||
@UNSUPER_CD.register
|
@UNSUPER_CD.register
|
||||||
class ACDAlg(AlgFrontend):
|
class ACDAlg(AlgFrontend):
|
||||||
|
|
||||||
@ -405,6 +444,10 @@ class ACDAlg(AlgFrontend):
|
|||||||
def get_name():
|
def get_name():
|
||||||
return 'ACD'
|
return 'ACD'
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_icon():
|
||||||
|
return IconInstance().ARITHMETIC3
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def run_alg(pth1: str, pth2: str, layer_parent: PairLayer, send_message=None, *args, **kargs):
|
def run_alg(pth1: str, pth2: str, layer_parent: PairLayer, send_message=None, *args, **kargs):
|
||||||
|
|
||||||
@ -425,27 +468,29 @@ class ACDAlg(AlgFrontend):
|
|||||||
|
|
||||||
ds2: gdal.Dataset = gdal.Open(pth2)
|
ds2: gdal.Dataset = gdal.Open(pth2)
|
||||||
temp_tif2 = os.path.join(Project().other_path, 'temp2.tif')
|
temp_tif2 = os.path.join(Project().other_path, 'temp2.tif')
|
||||||
start2x,start2y=geo2imageRC(ds2.GetGeoTransform(),layer_parent.mask.xy[0],layer_parent.mask.xy[1])
|
start2x, start2y = geo2imageRC(ds2.GetGeoTransform(
|
||||||
end2x,end2y=geo2imageRC(ds2.GetGeoTransform(),layer_parent.mask.xy[2],layer_parent.mask.xy[3])
|
), layer_parent.mask.xy[0], layer_parent.mask.xy[1])
|
||||||
|
end2x, end2y = geo2imageRC(ds2.GetGeoTransform(
|
||||||
|
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||||
warp(temp_tif2, ds2, srcWin=[start2x, start2y, xsize, ysize])
|
warp(temp_tif2, ds2, srcWin=[start2x, start2y, xsize, ysize])
|
||||||
del ds2
|
del ds2
|
||||||
send_message.emit('图像二提取完成')
|
send_message.emit('图像二提取完成')
|
||||||
|
|
||||||
|
|
||||||
ds1: gdal.Dataset = gdal.Open(pth1)
|
ds1: gdal.Dataset = gdal.Open(pth1)
|
||||||
temp_tif1 = os.path.join(Project().other_path, 'temp1.tif')
|
temp_tif1 = os.path.join(Project().other_path, 'temp1.tif')
|
||||||
start1x,start1y=geo2imageRC(ds1.GetGeoTransform(),layer_parent.mask.xy[0],layer_parent.mask.xy[1])
|
start1x, start1y = geo2imageRC(ds1.GetGeoTransform(
|
||||||
end1x,end1y=geo2imageRC(ds1.GetGeoTransform(),layer_parent.mask.xy[2],layer_parent.mask.xy[3])
|
), layer_parent.mask.xy[0], layer_parent.mask.xy[1])
|
||||||
|
end1x, end1y = geo2imageRC(ds1.GetGeoTransform(
|
||||||
|
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||||
warp(temp_tif1, ds1, srcWin=[start1x, start1y, xsize, ysize])
|
warp(temp_tif1, ds1, srcWin=[start1x, start1y, xsize, ysize])
|
||||||
del ds1
|
del ds1
|
||||||
send_message.emit('图像一提取完成')
|
send_message.emit('图像一提取完成')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 运算
|
# 运算
|
||||||
send_message.emit('开始ACD计算.....')
|
send_message.emit('开始ACD计算.....')
|
||||||
time.sleep(0.1)
|
time.sleep(0.1)
|
||||||
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(layer_parent.name, int(np.random.rand() * 100000)))
|
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(
|
||||||
|
layer_parent.name, int(np.random.rand() * 100000)))
|
||||||
ACD(temp_tif1, temp_tif2, out_normal_tif)
|
ACD(temp_tif1, temp_tif2, out_normal_tif)
|
||||||
# 添加投影
|
# 添加投影
|
||||||
send_message.emit('录入投影信息.....')
|
send_message.emit('录入投影信息.....')
|
||||||
@ -465,6 +510,10 @@ class AHTAlg(AlgFrontend):
|
|||||||
def get_name():
|
def get_name():
|
||||||
return 'AHT'
|
return 'AHT'
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_icon():
|
||||||
|
return IconInstance().ARITHMETIC3
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def run_alg(pth1: str, pth2: str, layer_parent: PairLayer, send_message=None, *args, **kargs):
|
def run_alg(pth1: str, pth2: str, layer_parent: PairLayer, send_message=None, *args, **kargs):
|
||||||
|
|
||||||
@ -484,27 +533,29 @@ class AHTAlg(AlgFrontend):
|
|||||||
|
|
||||||
ds2: gdal.Dataset = gdal.Open(pth2)
|
ds2: gdal.Dataset = gdal.Open(pth2)
|
||||||
temp_tif2 = os.path.join(Project().other_path, 'temp2.tif')
|
temp_tif2 = os.path.join(Project().other_path, 'temp2.tif')
|
||||||
start2x,start2y=geo2imageRC(ds2.GetGeoTransform(),layer_parent.mask.xy[0],layer_parent.mask.xy[1])
|
start2x, start2y = geo2imageRC(ds2.GetGeoTransform(
|
||||||
end2x,end2y=geo2imageRC(ds2.GetGeoTransform(),layer_parent.mask.xy[2],layer_parent.mask.xy[3])
|
), layer_parent.mask.xy[0], layer_parent.mask.xy[1])
|
||||||
|
end2x, end2y = geo2imageRC(ds2.GetGeoTransform(
|
||||||
|
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||||
warp(temp_tif2, ds2, srcWin=[start2x, start2y, xsize, ysize])
|
warp(temp_tif2, ds2, srcWin=[start2x, start2y, xsize, ysize])
|
||||||
del ds2
|
del ds2
|
||||||
send_message.emit('图像二提取完成')
|
send_message.emit('图像二提取完成')
|
||||||
|
|
||||||
|
|
||||||
ds1: gdal.Dataset = gdal.Open(pth1)
|
ds1: gdal.Dataset = gdal.Open(pth1)
|
||||||
temp_tif1 = os.path.join(Project().other_path, 'temp1.tif')
|
temp_tif1 = os.path.join(Project().other_path, 'temp1.tif')
|
||||||
start1x,start1y=geo2imageRC(ds1.GetGeoTransform(),layer_parent.mask.xy[0],layer_parent.mask.xy[1])
|
start1x, start1y = geo2imageRC(ds1.GetGeoTransform(
|
||||||
end1x,end1y=geo2imageRC(ds1.GetGeoTransform(),layer_parent.mask.xy[2],layer_parent.mask.xy[3])
|
), layer_parent.mask.xy[0], layer_parent.mask.xy[1])
|
||||||
|
end1x, end1y = geo2imageRC(ds1.GetGeoTransform(
|
||||||
|
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||||
warp(temp_tif1, ds1, srcWin=[start1x, start1y, xsize, ysize])
|
warp(temp_tif1, ds1, srcWin=[start1x, start1y, xsize, ysize])
|
||||||
del ds1
|
del ds1
|
||||||
send_message.emit('图像一提取完成')
|
send_message.emit('图像一提取完成')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 运算
|
# 运算
|
||||||
send_message.emit('开始AHT计算.....')
|
send_message.emit('开始AHT计算.....')
|
||||||
time.sleep(0.1)
|
time.sleep(0.1)
|
||||||
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(layer_parent.name, int(np.random.rand() * 100000)))
|
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(
|
||||||
|
layer_parent.name, int(np.random.rand() * 100000)))
|
||||||
AHT(temp_tif1, temp_tif2, out_normal_tif)
|
AHT(temp_tif1, temp_tif2, out_normal_tif)
|
||||||
# 添加投影
|
# 添加投影
|
||||||
send_message.emit('录入投影信息.....')
|
send_message.emit('录入投影信息.....')
|
||||||
@ -524,6 +575,10 @@ class OCDAlg(AlgFrontend):
|
|||||||
def get_name():
|
def get_name():
|
||||||
return 'OCD'
|
return 'OCD'
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_icon():
|
||||||
|
return IconInstance().ARITHMETIC3
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def run_alg(pth1: str, pth2: str, layer_parent: PairLayer, send_message=None, *args, **kargs):
|
def run_alg(pth1: str, pth2: str, layer_parent: PairLayer, send_message=None, *args, **kargs):
|
||||||
|
|
||||||
@ -543,27 +598,29 @@ class OCDAlg(AlgFrontend):
|
|||||||
|
|
||||||
ds2: gdal.Dataset = gdal.Open(pth2)
|
ds2: gdal.Dataset = gdal.Open(pth2)
|
||||||
temp_tif2 = os.path.join(Project().other_path, 'temp2.tif')
|
temp_tif2 = os.path.join(Project().other_path, 'temp2.tif')
|
||||||
start2x,start2y=geo2imageRC(ds2.GetGeoTransform(),layer_parent.mask.xy[0],layer_parent.mask.xy[1])
|
start2x, start2y = geo2imageRC(ds2.GetGeoTransform(
|
||||||
end2x,end2y=geo2imageRC(ds2.GetGeoTransform(),layer_parent.mask.xy[2],layer_parent.mask.xy[3])
|
), layer_parent.mask.xy[0], layer_parent.mask.xy[1])
|
||||||
|
end2x, end2y = geo2imageRC(ds2.GetGeoTransform(
|
||||||
|
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||||
warp(temp_tif2, ds2, srcWin=[start2x, start2y, xsize, ysize])
|
warp(temp_tif2, ds2, srcWin=[start2x, start2y, xsize, ysize])
|
||||||
del ds2
|
del ds2
|
||||||
send_message.emit('图像二提取完成')
|
send_message.emit('图像二提取完成')
|
||||||
|
|
||||||
|
|
||||||
ds1: gdal.Dataset = gdal.Open(pth1)
|
ds1: gdal.Dataset = gdal.Open(pth1)
|
||||||
temp_tif1 = os.path.join(Project().other_path, 'temp1.tif')
|
temp_tif1 = os.path.join(Project().other_path, 'temp1.tif')
|
||||||
start1x,start1y=geo2imageRC(ds1.GetGeoTransform(),layer_parent.mask.xy[0],layer_parent.mask.xy[1])
|
start1x, start1y = geo2imageRC(ds1.GetGeoTransform(
|
||||||
end1x,end1y=geo2imageRC(ds1.GetGeoTransform(),layer_parent.mask.xy[2],layer_parent.mask.xy[3])
|
), layer_parent.mask.xy[0], layer_parent.mask.xy[1])
|
||||||
|
end1x, end1y = geo2imageRC(ds1.GetGeoTransform(
|
||||||
|
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||||
warp(temp_tif1, ds1, srcWin=[start1x, start1y, xsize, ysize])
|
warp(temp_tif1, ds1, srcWin=[start1x, start1y, xsize, ysize])
|
||||||
del ds1
|
del ds1
|
||||||
send_message.emit('图像一提取完成')
|
send_message.emit('图像一提取完成')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 运算
|
# 运算
|
||||||
send_message.emit('开始OCD计算.....')
|
send_message.emit('开始OCD计算.....')
|
||||||
time.sleep(0.1)
|
time.sleep(0.1)
|
||||||
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(layer_parent.name, int(np.random.rand() * 100000)))
|
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(
|
||||||
|
layer_parent.name, int(np.random.rand() * 100000)))
|
||||||
OCD(temp_tif1, temp_tif2, out_normal_tif, Project().other_path)
|
OCD(temp_tif1, temp_tif2, out_normal_tif, Project().other_path)
|
||||||
# 添加投影
|
# 添加投影
|
||||||
send_message.emit('录入投影信息.....')
|
send_message.emit('录入投影信息.....')
|
||||||
@ -575,6 +632,7 @@ class OCDAlg(AlgFrontend):
|
|||||||
|
|
||||||
return out_normal_tif
|
return out_normal_tif
|
||||||
|
|
||||||
|
|
||||||
@UNSUPER_CD.register
|
@UNSUPER_CD.register
|
||||||
class LHBAAlg(AlgFrontend):
|
class LHBAAlg(AlgFrontend):
|
||||||
|
|
||||||
@ -582,6 +640,10 @@ class LHBAAlg(AlgFrontend):
|
|||||||
def get_name():
|
def get_name():
|
||||||
return 'LHBA'
|
return 'LHBA'
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_icon():
|
||||||
|
return IconInstance().ARITHMETIC3
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def run_alg(pth1: str, pth2: str, layer_parent: PairLayer, send_message=None, *args, **kargs):
|
def run_alg(pth1: str, pth2: str, layer_parent: PairLayer, send_message=None, *args, **kargs):
|
||||||
|
|
||||||
@ -592,7 +654,6 @@ class LHBAAlg(AlgFrontend):
|
|||||||
print(args)
|
print(args)
|
||||||
send_message = Empty()
|
send_message = Empty()
|
||||||
|
|
||||||
|
|
||||||
xsize = layer_parent.size[0]
|
xsize = layer_parent.size[0]
|
||||||
ysize = layer_parent.size[1]
|
ysize = layer_parent.size[1]
|
||||||
geo = layer_parent.grid.geo
|
geo = layer_parent.grid.geo
|
||||||
@ -602,17 +663,20 @@ class LHBAAlg(AlgFrontend):
|
|||||||
|
|
||||||
ds2: gdal.Dataset = gdal.Open(pth2)
|
ds2: gdal.Dataset = gdal.Open(pth2)
|
||||||
temp_tif2 = os.path.join(Project().other_path, 'temp2.tif')
|
temp_tif2 = os.path.join(Project().other_path, 'temp2.tif')
|
||||||
start2x,start2y=geo2imageRC(ds2.GetGeoTransform(),layer_parent.mask.xy[0],layer_parent.mask.xy[1])
|
start2x, start2y = geo2imageRC(ds2.GetGeoTransform(
|
||||||
end2x,end2y=geo2imageRC(ds2.GetGeoTransform(),layer_parent.mask.xy[2],layer_parent.mask.xy[3])
|
), layer_parent.mask.xy[0], layer_parent.mask.xy[1])
|
||||||
|
end2x, end2y = geo2imageRC(ds2.GetGeoTransform(
|
||||||
|
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||||
warp(temp_tif2, ds2, srcWin=[start2x, start2y, xsize, ysize])
|
warp(temp_tif2, ds2, srcWin=[start2x, start2y, xsize, ysize])
|
||||||
del ds2
|
del ds2
|
||||||
send_message.emit('图像二提取完成')
|
send_message.emit('图像二提取完成')
|
||||||
|
|
||||||
|
|
||||||
ds1: gdal.Dataset = gdal.Open(pth1)
|
ds1: gdal.Dataset = gdal.Open(pth1)
|
||||||
temp_tif1 = os.path.join(Project().other_path, 'temp1.tif')
|
temp_tif1 = os.path.join(Project().other_path, 'temp1.tif')
|
||||||
start1x,start1y=geo2imageRC(ds1.GetGeoTransform(),layer_parent.mask.xy[0],layer_parent.mask.xy[1])
|
start1x, start1y = geo2imageRC(ds1.GetGeoTransform(
|
||||||
end1x,end1y=geo2imageRC(ds1.GetGeoTransform(),layer_parent.mask.xy[2],layer_parent.mask.xy[3])
|
), layer_parent.mask.xy[0], layer_parent.mask.xy[1])
|
||||||
|
end1x, end1y = geo2imageRC(ds1.GetGeoTransform(
|
||||||
|
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||||
warp(temp_tif1, ds1, srcWin=[start1x, start1y, xsize, ysize])
|
warp(temp_tif1, ds1, srcWin=[start1x, start1y, xsize, ysize])
|
||||||
del ds1
|
del ds1
|
||||||
send_message.emit('图像一提取完成')
|
send_message.emit('图像一提取完成')
|
||||||
@ -620,7 +684,8 @@ class LHBAAlg(AlgFrontend):
|
|||||||
# 运算
|
# 运算
|
||||||
send_message.emit('开始LHBA计算.....')
|
send_message.emit('开始LHBA计算.....')
|
||||||
time.sleep(0.1)
|
time.sleep(0.1)
|
||||||
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(layer_parent.name, int(np.random.rand() * 100000)))
|
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(
|
||||||
|
layer_parent.name, int(np.random.rand() * 100000)))
|
||||||
LHBA(temp_tif1, temp_tif2, out_normal_tif)
|
LHBA(temp_tif1, temp_tif2, out_normal_tif)
|
||||||
# 添加投影
|
# 添加投影
|
||||||
send_message.emit('录入投影信息.....')
|
send_message.emit('录入投影信息.....')
|
||||||
@ -639,6 +704,10 @@ class SHAlg(AlgFrontend):
|
|||||||
def get_name():
|
def get_name():
|
||||||
return 'SH'
|
return 'SH'
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_icon():
|
||||||
|
return IconInstance().ARITHMETIC3
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def run_alg(pth1: str, pth2: str, layer_parent: PairLayer, send_message=None, *args, **kargs):
|
def run_alg(pth1: str, pth2: str, layer_parent: PairLayer, send_message=None, *args, **kargs):
|
||||||
|
|
||||||
@ -649,8 +718,6 @@ class SHAlg(AlgFrontend):
|
|||||||
print(args)
|
print(args)
|
||||||
send_message = Empty()
|
send_message = Empty()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
xsize = layer_parent.size[0]
|
xsize = layer_parent.size[0]
|
||||||
ysize = layer_parent.size[1]
|
ysize = layer_parent.size[1]
|
||||||
geo = layer_parent.grid.geo
|
geo = layer_parent.grid.geo
|
||||||
@ -660,17 +727,20 @@ class SHAlg(AlgFrontend):
|
|||||||
|
|
||||||
ds2: gdal.Dataset = gdal.Open(pth2)
|
ds2: gdal.Dataset = gdal.Open(pth2)
|
||||||
temp_tif2 = os.path.join(Project().other_path, 'temp2.tif')
|
temp_tif2 = os.path.join(Project().other_path, 'temp2.tif')
|
||||||
start2x,start2y=geo2imageRC(ds2.GetGeoTransform(),layer_parent.mask.xy[0],layer_parent.mask.xy[1])
|
start2x, start2y = geo2imageRC(ds2.GetGeoTransform(
|
||||||
end2x,end2y=geo2imageRC(ds2.GetGeoTransform(),layer_parent.mask.xy[2],layer_parent.mask.xy[3])
|
), layer_parent.mask.xy[0], layer_parent.mask.xy[1])
|
||||||
|
end2x, end2y = geo2imageRC(ds2.GetGeoTransform(
|
||||||
|
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||||
warp(temp_tif2, ds2, srcWin=[start2x, start2y, xsize, ysize])
|
warp(temp_tif2, ds2, srcWin=[start2x, start2y, xsize, ysize])
|
||||||
del ds2
|
del ds2
|
||||||
send_message.emit('图像二提取完成')
|
send_message.emit('图像二提取完成')
|
||||||
|
|
||||||
|
|
||||||
ds1: gdal.Dataset = gdal.Open(pth1)
|
ds1: gdal.Dataset = gdal.Open(pth1)
|
||||||
temp_tif1 = os.path.join(Project().other_path, 'temp1.tif')
|
temp_tif1 = os.path.join(Project().other_path, 'temp1.tif')
|
||||||
start1x,start1y=geo2imageRC(ds1.GetGeoTransform(),layer_parent.mask.xy[0],layer_parent.mask.xy[1])
|
start1x, start1y = geo2imageRC(ds1.GetGeoTransform(
|
||||||
end1x,end1y=geo2imageRC(ds1.GetGeoTransform(),layer_parent.mask.xy[2],layer_parent.mask.xy[3])
|
), layer_parent.mask.xy[0], layer_parent.mask.xy[1])
|
||||||
|
end1x, end1y = geo2imageRC(ds1.GetGeoTransform(
|
||||||
|
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||||
warp(temp_tif1, ds1, srcWin=[start1x, start1y, xsize, ysize])
|
warp(temp_tif1, ds1, srcWin=[start1x, start1y, xsize, ysize])
|
||||||
del ds1
|
del ds1
|
||||||
send_message.emit('图像一提取完成')
|
send_message.emit('图像一提取完成')
|
||||||
@ -678,7 +748,8 @@ class SHAlg(AlgFrontend):
|
|||||||
# 运算
|
# 运算
|
||||||
send_message.emit('开始SH计算.....')
|
send_message.emit('开始SH计算.....')
|
||||||
time.sleep(0.1)
|
time.sleep(0.1)
|
||||||
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(layer_parent.name, int(np.random.rand() * 100000)))
|
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(
|
||||||
|
layer_parent.name, int(np.random.rand() * 100000)))
|
||||||
SH(temp_tif1, temp_tif2, out_normal_tif)
|
SH(temp_tif1, temp_tif2, out_normal_tif)
|
||||||
# 添加投影
|
# 添加投影
|
||||||
send_message.emit('录入投影信息.....')
|
send_message.emit('录入投影信息.....')
|
||||||
|
@ -13,6 +13,7 @@ from thres import THRES
|
|||||||
from misc import table_layer, AlgSelectWidget
|
from misc import table_layer, AlgSelectWidget
|
||||||
from follow import FOLLOW
|
from follow import FOLLOW
|
||||||
|
|
||||||
|
|
||||||
class VegtationCDMethod(QDialog):
|
class VegtationCDMethod(QDialog):
|
||||||
def __init__(self, parent=None, alg: AlgFrontend = None):
|
def __init__(self, parent=None, alg: AlgFrontend = None):
|
||||||
super(VegtationCDMethod, self).__init__(parent)
|
super(VegtationCDMethod, self).__init__(parent)
|
||||||
@ -62,6 +63,7 @@ class VegtationCDMethod(QDialog):
|
|||||||
|
|
||||||
self.setLayout(totalvlayout)
|
self.setLayout(totalvlayout)
|
||||||
|
|
||||||
|
|
||||||
@FOLLOW.register
|
@FOLLOW.register
|
||||||
class VegetationCDFollow(AlgFrontend):
|
class VegetationCDFollow(AlgFrontend):
|
||||||
|
|
||||||
@ -71,7 +73,7 @@ class VegetationCDFollow(AlgFrontend):
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_icon():
|
def get_icon():
|
||||||
return IconInstance().UNSUPERVISED
|
return IconInstance().VEGETATION
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_widget(parent=None):
|
def get_widget(parent=None):
|
||||||
@ -104,7 +106,8 @@ class VegetationCDFollow(AlgFrontend):
|
|||||||
|
|
||||||
layer_combox = widget.findChild(PairLayerCombox, 'layer_combox')
|
layer_combox = widget.findChild(PairLayerCombox, 'layer_combox')
|
||||||
filter_select = widget.findChild(AlgSelectWidget, 'filter_select')
|
filter_select = widget.findChild(AlgSelectWidget, 'filter_select')
|
||||||
unsupervised_select = widget.findChild(AlgSelectWidget, 'unsupervised_select')
|
unsupervised_select = widget.findChild(
|
||||||
|
AlgSelectWidget, 'unsupervised_select')
|
||||||
thres_select = widget.findChild(AlgSelectWidget, 'thres_select')
|
thres_select = widget.findChild(AlgSelectWidget, 'thres_select')
|
||||||
|
|
||||||
layer1 = layer_combox.layer1
|
layer1 = layer_combox.layer1
|
||||||
@ -148,21 +151,21 @@ class VegetationCDFollow(AlgFrontend):
|
|||||||
name = layer1.name
|
name = layer1.name
|
||||||
|
|
||||||
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(
|
||||||
pth2 = falg.run_alg(pth2, name=name, send_message= send_message, **fparams)
|
pth1, name=name, send_message=send_message, **fparams)
|
||||||
|
pth2 = falg.run_alg(
|
||||||
|
pth2, name=name, send_message=send_message, **fparams)
|
||||||
|
|
||||||
|
cdpth = cdalg.run_alg(pth1, pth2, layer1.layer_parent,
|
||||||
cdpth = cdalg.run_alg(pth1, pth2, layer1.layer_parent, send_message= send_message,**cdparams)
|
send_message=send_message, **cdparams)
|
||||||
thpth = thalg.run_alg(cdpth, name=name, send_message= send_message, **thparams)
|
thpth = thalg.run_alg(
|
||||||
|
cdpth, name=name, send_message=send_message, **thparams)
|
||||||
|
|
||||||
table_layer(thpth, layer1, name, send_message)
|
table_layer(thpth, layer1, name, send_message)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class VegtationPlugin(BasicPlugin):
|
class VegtationPlugin(BasicPlugin):
|
||||||
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def info():
|
def info():
|
||||||
return {
|
return {
|
||||||
@ -190,7 +193,6 @@ class VegtationPlugin(BasicPlugin):
|
|||||||
|
|
||||||
veg_menu.addAction(action)
|
veg_menu.addAction(action)
|
||||||
|
|
||||||
|
|
||||||
def run_cd(self, alg):
|
def run_cd(self, alg):
|
||||||
dialog = VegtationCDMethod(self.mainwindow, alg)
|
dialog = VegtationCDMethod(self.mainwindow, alg)
|
||||||
dialog.show()
|
dialog.show()
|
||||||
@ -215,12 +217,14 @@ class VegtationPlugin(BasicPlugin):
|
|||||||
return
|
return
|
||||||
|
|
||||||
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(
|
||||||
pth2 = falg.run_alg(pth2, name=name, send_message=self.send_message, **fparams)
|
pth1, name=name, send_message=self.send_message, **fparams)
|
||||||
|
pth2 = falg.run_alg(
|
||||||
|
pth2, name=name, send_message=self.send_message, **fparams)
|
||||||
|
|
||||||
|
cdpth = cdalg.run_alg(pth1, pth2, layer1.layer_parent,
|
||||||
cdpth = cdalg.run_alg(pth1, pth2, layer1.layer_parent, send_message=self.send_message,**cdparams)
|
send_message=self.send_message, **cdparams)
|
||||||
thpth = thalg.run_alg(cdpth, name=name, send_message=self.send_message, **thparams)
|
thpth = thalg.run_alg(
|
||||||
|
cdpth, name=name, send_message=self.send_message, **thparams)
|
||||||
|
|
||||||
table_layer(thpth, layer1, name, self.send_message)
|
table_layer(thpth, layer1, name, self.send_message)
|
||||||
|
|
@ -1,21 +1,23 @@
|
|||||||
|
from .SH import SH
|
||||||
|
from .LHBA import LHBA
|
||||||
|
from .OCD import OCD
|
||||||
|
from .AHT import AHT
|
||||||
|
from .ACD import ACD
|
||||||
|
import numpy as np
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from osgeo import gdal
|
from osgeo import gdal
|
||||||
import math,os
|
import math
|
||||||
|
import os
|
||||||
import time
|
import time
|
||||||
from PyQt5 import QtWidgets
|
from PyQt5 import QtWidgets
|
||||||
from sklearn.cluster import k_means
|
from sklearn.cluster import k_means
|
||||||
from rscder.utils.geomath import geo2imageRC, imageRC2geo
|
from rscder.utils.geomath import geo2imageRC, imageRC2geo
|
||||||
|
from rscder.utils.icons import IconInstance
|
||||||
from rscder.utils.project import Project, PairLayer
|
from rscder.utils.project import Project, PairLayer
|
||||||
from misc import Register, AlgFrontend
|
from misc import Register, AlgFrontend
|
||||||
|
|
||||||
VEG_CD = Register('植被变化检测方法')
|
VEG_CD = Register('植被变化检测方法')
|
||||||
|
|
||||||
import numpy as np
|
|
||||||
from .ACD import ACD
|
|
||||||
from .AHT import AHT
|
|
||||||
from .OCD import OCD
|
|
||||||
from .LHBA import LHBA
|
|
||||||
from .SH import SH
|
|
||||||
|
|
||||||
def warp(file, ds: gdal.Dataset, srcWin=[0, 0, 0, 0]):
|
def warp(file, ds: gdal.Dataset, srcWin=[0, 0, 0, 0]):
|
||||||
driver = gdal.GetDriverByName('GTiff')
|
driver = gdal.GetDriverByName('GTiff')
|
||||||
@ -26,13 +28,16 @@ def warp(file,ds:gdal.Dataset,srcWin=[0,0,0,0]):
|
|||||||
band = ds.RasterCount
|
band = ds.RasterCount
|
||||||
if os.path.exists(file):
|
if os.path.exists(file):
|
||||||
os.remove(file)
|
os.remove(file)
|
||||||
out_ds:gdal.Dataset=driver.Create(file, xsize, ysize, band, gdal.GDT_Byte)
|
out_ds: gdal.Dataset = driver.Create(
|
||||||
|
file, xsize, ysize, band, gdal.GDT_Byte)
|
||||||
out_ds.SetGeoTransform(geo)
|
out_ds.SetGeoTransform(geo)
|
||||||
out_ds.SetProjection(orj)
|
out_ds.SetProjection(orj)
|
||||||
for b in range(1, band+1):
|
for b in range(1, band+1):
|
||||||
out_ds.GetRasterBand(b).WriteArray(ds.ReadAsArray(*srcWin,band_list=[b]),*(0,0))
|
out_ds.GetRasterBand(b).WriteArray(
|
||||||
|
ds.ReadAsArray(*srcWin, band_list=[b]), *(0, 0))
|
||||||
del out_ds
|
del out_ds
|
||||||
|
|
||||||
|
|
||||||
@VEG_CD.register
|
@VEG_CD.register
|
||||||
class BasicCD(AlgFrontend):
|
class BasicCD(AlgFrontend):
|
||||||
|
|
||||||
@ -40,6 +45,10 @@ class BasicCD(AlgFrontend):
|
|||||||
def get_name():
|
def get_name():
|
||||||
return '差分法'
|
return '差分法'
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_icon():
|
||||||
|
return IconInstance().VEGETATION
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def run_alg(pth1: str, pth2: str, layer_parent: PairLayer, send_message=None, *args, **kargs):
|
def run_alg(pth1: str, pth2: str, layer_parent: PairLayer, send_message=None, *args, **kargs):
|
||||||
|
|
||||||
@ -64,11 +73,15 @@ class BasicCD(AlgFrontend):
|
|||||||
max_diff = 0
|
max_diff = 0
|
||||||
min_diff = math.inf
|
min_diff = math.inf
|
||||||
|
|
||||||
start1x,start1y=geo2imageRC(ds1.GetGeoTransform(),layer_parent.mask.xy[0],layer_parent.mask.xy[1])
|
start1x, start1y = geo2imageRC(ds1.GetGeoTransform(
|
||||||
end1x,end1y=geo2imageRC(ds1.GetGeoTransform(),layer_parent.mask.xy[2],layer_parent.mask.xy[3])
|
), layer_parent.mask.xy[0], layer_parent.mask.xy[1])
|
||||||
|
end1x, end1y = geo2imageRC(ds1.GetGeoTransform(
|
||||||
|
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||||
|
|
||||||
start2x,start2y=geo2imageRC(ds2.GetGeoTransform(),layer_parent.mask.xy[0],layer_parent.mask.xy[1])
|
start2x, start2y = geo2imageRC(ds2.GetGeoTransform(
|
||||||
end2x,end2y=geo2imageRC(ds2.GetGeoTransform(),layer_parent.mask.xy[2],layer_parent.mask.xy[3])
|
), layer_parent.mask.xy[0], layer_parent.mask.xy[1])
|
||||||
|
end2x, end2y = geo2imageRC(ds2.GetGeoTransform(
|
||||||
|
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||||
|
|
||||||
for j in range(yblocks + 1): # 该改这里了
|
for j in range(yblocks + 1): # 该改这里了
|
||||||
if send_message is not None:
|
if send_message is not None:
|
||||||
@ -112,8 +125,10 @@ class BasicCD(AlgFrontend):
|
|||||||
send_message.emit('归一化概率中...')
|
send_message.emit('归一化概率中...')
|
||||||
temp_in_ds = gdal.Open(out_tif)
|
temp_in_ds = gdal.Open(out_tif)
|
||||||
|
|
||||||
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(layer_parent.name, int(np.random.rand() * 100000)))
|
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(
|
||||||
out_normal_ds = driver.Create(out_normal_tif, xsize, ysize, 1, gdal.GDT_Byte)
|
layer_parent.name, int(np.random.rand() * 100000)))
|
||||||
|
out_normal_ds = driver.Create(
|
||||||
|
out_normal_tif, xsize, ysize, 1, gdal.GDT_Byte)
|
||||||
out_normal_ds.SetGeoTransform(geo)
|
out_normal_ds.SetGeoTransform(geo)
|
||||||
out_normal_ds.SetProjection(proj)
|
out_normal_ds.SetProjection(proj)
|
||||||
# hist = np.zeros(256, dtype=np.int32)
|
# hist = np.zeros(256, dtype=np.int32)
|
||||||
@ -141,6 +156,7 @@ class BasicCD(AlgFrontend):
|
|||||||
send_message.emit('差分法计算完成')
|
send_message.emit('差分法计算完成')
|
||||||
return out_normal_tif
|
return out_normal_tif
|
||||||
|
|
||||||
|
|
||||||
@VEG_CD.register
|
@VEG_CD.register
|
||||||
class LSTS(AlgFrontend):
|
class LSTS(AlgFrontend):
|
||||||
|
|
||||||
@ -172,7 +188,8 @@ class LSTS(AlgFrontend):
|
|||||||
yblocks = ysize // cell_size[1]
|
yblocks = ysize // cell_size[1]
|
||||||
|
|
||||||
driver = gdal.GetDriverByName('GTiff')
|
driver = gdal.GetDriverByName('GTiff')
|
||||||
out_tif = os.path.join(Project().other_path, '%d.tif'%(int(datetime.now().timestamp() * 1000)))
|
out_tif = os.path.join(Project().other_path, '%d.tif' % (
|
||||||
|
int(datetime.now().timestamp() * 1000)))
|
||||||
out_ds = driver.Create(out_tif, xsize, ysize, 1, gdal.GDT_Float32)
|
out_ds = driver.Create(out_tif, xsize, ysize, 1, gdal.GDT_Float32)
|
||||||
geo = layer_parent.grid.geo
|
geo = layer_parent.grid.geo
|
||||||
proj = layer_parent.grid.proj
|
proj = layer_parent.grid.proj
|
||||||
@ -185,17 +202,21 @@ class LSTS(AlgFrontend):
|
|||||||
win_h = w_size[0]//2 # half hight of window
|
win_h = w_size[0]//2 # half hight of window
|
||||||
win_w = w_size[1]//2 # half width of window
|
win_w = w_size[1]//2 # half width of window
|
||||||
a = [[(i+1)**j for j in range(n+1)] for i in range(pixnum)]
|
a = [[(i+1)**j for j in range(n+1)] for i in range(pixnum)]
|
||||||
A=np.array(a).astype(np.float64)#
|
A = np.array(a).astype(np.float64)
|
||||||
|
|
||||||
k_ = np.array(range(1, n+1))
|
k_ = np.array(range(1, n+1))
|
||||||
df1 = np.zeros(pixnum).astype(np.float64)
|
df1 = np.zeros(pixnum).astype(np.float64)
|
||||||
df2 = np.zeros(pixnum).astype(np.float64)
|
df2 = np.zeros(pixnum).astype(np.float64)
|
||||||
|
|
||||||
start1x,start1y=geo2imageRC(ds1.GetGeoTransform(),layer_parent.mask.xy[0],layer_parent.mask.xy[1])
|
start1x, start1y = geo2imageRC(ds1.GetGeoTransform(
|
||||||
end1x,end1y=geo2imageRC(ds1.GetGeoTransform(),layer_parent.mask.xy[2],layer_parent.mask.xy[3])
|
), layer_parent.mask.xy[0], layer_parent.mask.xy[1])
|
||||||
|
end1x, end1y = geo2imageRC(ds1.GetGeoTransform(
|
||||||
|
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||||
|
|
||||||
start2x,start2y=geo2imageRC(ds2.GetGeoTransform(),layer_parent.mask.xy[0],layer_parent.mask.xy[1])
|
start2x, start2y = geo2imageRC(ds2.GetGeoTransform(
|
||||||
end2x,end2y=geo2imageRC(ds2.GetGeoTransform(),layer_parent.mask.xy[2],layer_parent.mask.xy[3])
|
), layer_parent.mask.xy[0], layer_parent.mask.xy[1])
|
||||||
|
end2x, end2y = geo2imageRC(ds2.GetGeoTransform(
|
||||||
|
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||||
|
|
||||||
for j in range(yblocks + 1):
|
for j in range(yblocks + 1):
|
||||||
if send_message is not None:
|
if send_message is not None:
|
||||||
@ -244,8 +265,10 @@ class LSTS(AlgFrontend):
|
|||||||
# df
|
# df
|
||||||
k_ = range(1, n+1)
|
k_ = range(1, n+1)
|
||||||
for pix in range(1, pixnum+1):
|
for pix in range(1, pixnum+1):
|
||||||
df1[pix-1]=x1[1:n+1].dot(np.array([k*(pix**(k-1)) for k in k_]))
|
df1[pix-1] = x1[1:n +
|
||||||
df2[pix-1]=x2[1:n+1].dot(np.array([k*(pix**(k-1)) for k in k_]))
|
1].dot(np.array([k*(pix**(k-1)) for k in k_]))
|
||||||
|
df2[pix-1] = x2[1:n +
|
||||||
|
1].dot(np.array([k*(pix**(k-1)) for k in k_]))
|
||||||
|
|
||||||
# distance 欧式距离
|
# distance 欧式距离
|
||||||
block_diff[i][j_] = np.dot(df1-df2, df1-df2)**0.5
|
block_diff[i][j_] = np.dot(df1-df2, df1-df2)**0.5
|
||||||
@ -263,8 +286,10 @@ class LSTS(AlgFrontend):
|
|||||||
send_message.emit('归一化概率中...')
|
send_message.emit('归一化概率中...')
|
||||||
temp_in_ds = gdal.Open(out_tif)
|
temp_in_ds = gdal.Open(out_tif)
|
||||||
|
|
||||||
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(layer_parent.name, int(np.random.rand() * 100000)))
|
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(
|
||||||
out_normal_ds = driver.Create(out_normal_tif, xsize, ysize, 1, gdal.GDT_Byte)
|
layer_parent.name, int(np.random.rand() * 100000)))
|
||||||
|
out_normal_ds = driver.Create(
|
||||||
|
out_normal_tif, xsize, ysize, 1, gdal.GDT_Byte)
|
||||||
out_normal_ds.SetGeoTransform(geo)
|
out_normal_ds.SetGeoTransform(geo)
|
||||||
out_normal_ds.SetProjection(proj)
|
out_normal_ds.SetProjection(proj)
|
||||||
# hist = np.zeros(256, dtype=np.int32)
|
# hist = np.zeros(256, dtype=np.int32)
|
||||||
@ -324,12 +349,15 @@ class CVAAlg(AlgFrontend):
|
|||||||
max_diff = 0
|
max_diff = 0
|
||||||
min_diff = math.inf
|
min_diff = math.inf
|
||||||
|
|
||||||
|
start1x, start1y = geo2imageRC(ds1.GetGeoTransform(
|
||||||
|
), layer_parent.mask.xy[0], layer_parent.mask.xy[1])
|
||||||
|
end1x, end1y = geo2imageRC(ds1.GetGeoTransform(
|
||||||
|
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||||
|
|
||||||
start1x,start1y=geo2imageRC(ds1.GetGeoTransform(),layer_parent.mask.xy[0],layer_parent.mask.xy[1])
|
start2x, start2y = geo2imageRC(ds2.GetGeoTransform(
|
||||||
end1x,end1y=geo2imageRC(ds1.GetGeoTransform(),layer_parent.mask.xy[2],layer_parent.mask.xy[3])
|
), layer_parent.mask.xy[0], layer_parent.mask.xy[1])
|
||||||
|
end2x, end2y = geo2imageRC(ds2.GetGeoTransform(
|
||||||
start2x,start2y=geo2imageRC(ds2.GetGeoTransform(),layer_parent.mask.xy[0],layer_parent.mask.xy[1])
|
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||||
end2x,end2y=geo2imageRC(ds2.GetGeoTransform(),layer_parent.mask.xy[2],layer_parent.mask.xy[3])
|
|
||||||
|
|
||||||
for j in range(yblocks + 1):
|
for j in range(yblocks + 1):
|
||||||
if send_message is not None:
|
if send_message is not None:
|
||||||
@ -369,8 +397,10 @@ class CVAAlg(AlgFrontend):
|
|||||||
send_message.emit('归一化概率中...')
|
send_message.emit('归一化概率中...')
|
||||||
temp_in_ds = gdal.Open(out_tif)
|
temp_in_ds = gdal.Open(out_tif)
|
||||||
|
|
||||||
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(layer_parent.name, int(np.random.rand() * 100000)))
|
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(
|
||||||
out_normal_ds = driver.Create(out_normal_tif, xsize, ysize, 1, gdal.GDT_Byte)
|
layer_parent.name, int(np.random.rand() * 100000)))
|
||||||
|
out_normal_ds = driver.Create(
|
||||||
|
out_normal_tif, xsize, ysize, 1, gdal.GDT_Byte)
|
||||||
out_normal_ds.SetGeoTransform(geo)
|
out_normal_ds.SetGeoTransform(geo)
|
||||||
out_normal_ds.SetProjection(proj)
|
out_normal_ds.SetProjection(proj)
|
||||||
# hist = np.zeros(256, dtype=np.int32)
|
# hist = np.zeros(256, dtype=np.int32)
|
||||||
@ -398,6 +428,7 @@ class CVAAlg(AlgFrontend):
|
|||||||
send_message.emit('欧式距离计算完成')
|
send_message.emit('欧式距离计算完成')
|
||||||
return out_normal_tif
|
return out_normal_tif
|
||||||
|
|
||||||
|
|
||||||
@VEG_CD.register
|
@VEG_CD.register
|
||||||
class ACDAlg(AlgFrontend):
|
class ACDAlg(AlgFrontend):
|
||||||
|
|
||||||
@ -425,27 +456,29 @@ class ACDAlg(AlgFrontend):
|
|||||||
|
|
||||||
ds2: gdal.Dataset = gdal.Open(pth2)
|
ds2: gdal.Dataset = gdal.Open(pth2)
|
||||||
temp_tif2 = os.path.join(Project().other_path, 'temp2.tif')
|
temp_tif2 = os.path.join(Project().other_path, 'temp2.tif')
|
||||||
start2x,start2y=geo2imageRC(ds2.GetGeoTransform(),layer_parent.mask.xy[0],layer_parent.mask.xy[1])
|
start2x, start2y = geo2imageRC(ds2.GetGeoTransform(
|
||||||
end2x,end2y=geo2imageRC(ds2.GetGeoTransform(),layer_parent.mask.xy[2],layer_parent.mask.xy[3])
|
), layer_parent.mask.xy[0], layer_parent.mask.xy[1])
|
||||||
|
end2x, end2y = geo2imageRC(ds2.GetGeoTransform(
|
||||||
|
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||||
warp(temp_tif2, ds2, srcWin=[start2x, start2y, xsize, ysize])
|
warp(temp_tif2, ds2, srcWin=[start2x, start2y, xsize, ysize])
|
||||||
del ds2
|
del ds2
|
||||||
send_message.emit('图像二提取完成')
|
send_message.emit('图像二提取完成')
|
||||||
|
|
||||||
|
|
||||||
ds1: gdal.Dataset = gdal.Open(pth1)
|
ds1: gdal.Dataset = gdal.Open(pth1)
|
||||||
temp_tif1 = os.path.join(Project().other_path, 'temp1.tif')
|
temp_tif1 = os.path.join(Project().other_path, 'temp1.tif')
|
||||||
start1x,start1y=geo2imageRC(ds1.GetGeoTransform(),layer_parent.mask.xy[0],layer_parent.mask.xy[1])
|
start1x, start1y = geo2imageRC(ds1.GetGeoTransform(
|
||||||
end1x,end1y=geo2imageRC(ds1.GetGeoTransform(),layer_parent.mask.xy[2],layer_parent.mask.xy[3])
|
), layer_parent.mask.xy[0], layer_parent.mask.xy[1])
|
||||||
|
end1x, end1y = geo2imageRC(ds1.GetGeoTransform(
|
||||||
|
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||||
warp(temp_tif1, ds1, srcWin=[start1x, start1y, xsize, ysize])
|
warp(temp_tif1, ds1, srcWin=[start1x, start1y, xsize, ysize])
|
||||||
del ds1
|
del ds1
|
||||||
send_message.emit('图像一提取完成')
|
send_message.emit('图像一提取完成')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 运算
|
# 运算
|
||||||
send_message.emit('开始ACD计算.....')
|
send_message.emit('开始ACD计算.....')
|
||||||
time.sleep(0.1)
|
time.sleep(0.1)
|
||||||
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(layer_parent.name, int(np.random.rand() * 100000)))
|
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(
|
||||||
|
layer_parent.name, int(np.random.rand() * 100000)))
|
||||||
ACD(temp_tif1, temp_tif2, out_normal_tif)
|
ACD(temp_tif1, temp_tif2, out_normal_tif)
|
||||||
# 添加投影
|
# 添加投影
|
||||||
send_message.emit('录入投影信息.....')
|
send_message.emit('录入投影信息.....')
|
||||||
@ -484,27 +517,29 @@ class AHTAlg(AlgFrontend):
|
|||||||
|
|
||||||
ds2: gdal.Dataset = gdal.Open(pth2)
|
ds2: gdal.Dataset = gdal.Open(pth2)
|
||||||
temp_tif2 = os.path.join(Project().other_path, 'temp2.tif')
|
temp_tif2 = os.path.join(Project().other_path, 'temp2.tif')
|
||||||
start2x,start2y=geo2imageRC(ds2.GetGeoTransform(),layer_parent.mask.xy[0],layer_parent.mask.xy[1])
|
start2x, start2y = geo2imageRC(ds2.GetGeoTransform(
|
||||||
end2x,end2y=geo2imageRC(ds2.GetGeoTransform(),layer_parent.mask.xy[2],layer_parent.mask.xy[3])
|
), layer_parent.mask.xy[0], layer_parent.mask.xy[1])
|
||||||
|
end2x, end2y = geo2imageRC(ds2.GetGeoTransform(
|
||||||
|
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||||
warp(temp_tif2, ds2, srcWin=[start2x, start2y, xsize, ysize])
|
warp(temp_tif2, ds2, srcWin=[start2x, start2y, xsize, ysize])
|
||||||
del ds2
|
del ds2
|
||||||
send_message.emit('图像二提取完成')
|
send_message.emit('图像二提取完成')
|
||||||
|
|
||||||
|
|
||||||
ds1: gdal.Dataset = gdal.Open(pth1)
|
ds1: gdal.Dataset = gdal.Open(pth1)
|
||||||
temp_tif1 = os.path.join(Project().other_path, 'temp1.tif')
|
temp_tif1 = os.path.join(Project().other_path, 'temp1.tif')
|
||||||
start1x,start1y=geo2imageRC(ds1.GetGeoTransform(),layer_parent.mask.xy[0],layer_parent.mask.xy[1])
|
start1x, start1y = geo2imageRC(ds1.GetGeoTransform(
|
||||||
end1x,end1y=geo2imageRC(ds1.GetGeoTransform(),layer_parent.mask.xy[2],layer_parent.mask.xy[3])
|
), layer_parent.mask.xy[0], layer_parent.mask.xy[1])
|
||||||
|
end1x, end1y = geo2imageRC(ds1.GetGeoTransform(
|
||||||
|
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||||
warp(temp_tif1, ds1, srcWin=[start1x, start1y, xsize, ysize])
|
warp(temp_tif1, ds1, srcWin=[start1x, start1y, xsize, ysize])
|
||||||
del ds1
|
del ds1
|
||||||
send_message.emit('图像一提取完成')
|
send_message.emit('图像一提取完成')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 运算
|
# 运算
|
||||||
send_message.emit('开始AHT计算.....')
|
send_message.emit('开始AHT计算.....')
|
||||||
time.sleep(0.1)
|
time.sleep(0.1)
|
||||||
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(layer_parent.name, int(np.random.rand() * 100000)))
|
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(
|
||||||
|
layer_parent.name, int(np.random.rand() * 100000)))
|
||||||
AHT(temp_tif1, temp_tif2, out_normal_tif)
|
AHT(temp_tif1, temp_tif2, out_normal_tif)
|
||||||
# 添加投影
|
# 添加投影
|
||||||
send_message.emit('录入投影信息.....')
|
send_message.emit('录入投影信息.....')
|
||||||
@ -543,27 +578,29 @@ class OCDAlg(AlgFrontend):
|
|||||||
|
|
||||||
ds2: gdal.Dataset = gdal.Open(pth2)
|
ds2: gdal.Dataset = gdal.Open(pth2)
|
||||||
temp_tif2 = os.path.join(Project().other_path, 'temp2.tif')
|
temp_tif2 = os.path.join(Project().other_path, 'temp2.tif')
|
||||||
start2x,start2y=geo2imageRC(ds2.GetGeoTransform(),layer_parent.mask.xy[0],layer_parent.mask.xy[1])
|
start2x, start2y = geo2imageRC(ds2.GetGeoTransform(
|
||||||
end2x,end2y=geo2imageRC(ds2.GetGeoTransform(),layer_parent.mask.xy[2],layer_parent.mask.xy[3])
|
), layer_parent.mask.xy[0], layer_parent.mask.xy[1])
|
||||||
|
end2x, end2y = geo2imageRC(ds2.GetGeoTransform(
|
||||||
|
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||||
warp(temp_tif2, ds2, srcWin=[start2x, start2y, xsize, ysize])
|
warp(temp_tif2, ds2, srcWin=[start2x, start2y, xsize, ysize])
|
||||||
del ds2
|
del ds2
|
||||||
send_message.emit('图像二提取完成')
|
send_message.emit('图像二提取完成')
|
||||||
|
|
||||||
|
|
||||||
ds1: gdal.Dataset = gdal.Open(pth1)
|
ds1: gdal.Dataset = gdal.Open(pth1)
|
||||||
temp_tif1 = os.path.join(Project().other_path, 'temp1.tif')
|
temp_tif1 = os.path.join(Project().other_path, 'temp1.tif')
|
||||||
start1x,start1y=geo2imageRC(ds1.GetGeoTransform(),layer_parent.mask.xy[0],layer_parent.mask.xy[1])
|
start1x, start1y = geo2imageRC(ds1.GetGeoTransform(
|
||||||
end1x,end1y=geo2imageRC(ds1.GetGeoTransform(),layer_parent.mask.xy[2],layer_parent.mask.xy[3])
|
), layer_parent.mask.xy[0], layer_parent.mask.xy[1])
|
||||||
|
end1x, end1y = geo2imageRC(ds1.GetGeoTransform(
|
||||||
|
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||||
warp(temp_tif1, ds1, srcWin=[start1x, start1y, xsize, ysize])
|
warp(temp_tif1, ds1, srcWin=[start1x, start1y, xsize, ysize])
|
||||||
del ds1
|
del ds1
|
||||||
send_message.emit('图像一提取完成')
|
send_message.emit('图像一提取完成')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 运算
|
# 运算
|
||||||
send_message.emit('开始OCD计算.....')
|
send_message.emit('开始OCD计算.....')
|
||||||
time.sleep(0.1)
|
time.sleep(0.1)
|
||||||
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(layer_parent.name, int(np.random.rand() * 100000)))
|
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(
|
||||||
|
layer_parent.name, int(np.random.rand() * 100000)))
|
||||||
OCD(temp_tif1, temp_tif2, out_normal_tif, Project().other_path)
|
OCD(temp_tif1, temp_tif2, out_normal_tif, Project().other_path)
|
||||||
# 添加投影
|
# 添加投影
|
||||||
send_message.emit('录入投影信息.....')
|
send_message.emit('录入投影信息.....')
|
||||||
@ -575,6 +612,7 @@ class OCDAlg(AlgFrontend):
|
|||||||
|
|
||||||
return out_normal_tif
|
return out_normal_tif
|
||||||
|
|
||||||
|
|
||||||
@VEG_CD.register
|
@VEG_CD.register
|
||||||
class LHBAAlg(AlgFrontend):
|
class LHBAAlg(AlgFrontend):
|
||||||
|
|
||||||
@ -592,7 +630,6 @@ class LHBAAlg(AlgFrontend):
|
|||||||
print(args)
|
print(args)
|
||||||
send_message = Empty()
|
send_message = Empty()
|
||||||
|
|
||||||
|
|
||||||
xsize = layer_parent.size[0]
|
xsize = layer_parent.size[0]
|
||||||
ysize = layer_parent.size[1]
|
ysize = layer_parent.size[1]
|
||||||
geo = layer_parent.grid.geo
|
geo = layer_parent.grid.geo
|
||||||
@ -602,17 +639,20 @@ class LHBAAlg(AlgFrontend):
|
|||||||
|
|
||||||
ds2: gdal.Dataset = gdal.Open(pth2)
|
ds2: gdal.Dataset = gdal.Open(pth2)
|
||||||
temp_tif2 = os.path.join(Project().other_path, 'temp2.tif')
|
temp_tif2 = os.path.join(Project().other_path, 'temp2.tif')
|
||||||
start2x,start2y=geo2imageRC(ds2.GetGeoTransform(),layer_parent.mask.xy[0],layer_parent.mask.xy[1])
|
start2x, start2y = geo2imageRC(ds2.GetGeoTransform(
|
||||||
end2x,end2y=geo2imageRC(ds2.GetGeoTransform(),layer_parent.mask.xy[2],layer_parent.mask.xy[3])
|
), layer_parent.mask.xy[0], layer_parent.mask.xy[1])
|
||||||
|
end2x, end2y = geo2imageRC(ds2.GetGeoTransform(
|
||||||
|
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||||
warp(temp_tif2, ds2, srcWin=[start2x, start2y, xsize, ysize])
|
warp(temp_tif2, ds2, srcWin=[start2x, start2y, xsize, ysize])
|
||||||
del ds2
|
del ds2
|
||||||
send_message.emit('图像二提取完成')
|
send_message.emit('图像二提取完成')
|
||||||
|
|
||||||
|
|
||||||
ds1: gdal.Dataset = gdal.Open(pth1)
|
ds1: gdal.Dataset = gdal.Open(pth1)
|
||||||
temp_tif1 = os.path.join(Project().other_path, 'temp1.tif')
|
temp_tif1 = os.path.join(Project().other_path, 'temp1.tif')
|
||||||
start1x,start1y=geo2imageRC(ds1.GetGeoTransform(),layer_parent.mask.xy[0],layer_parent.mask.xy[1])
|
start1x, start1y = geo2imageRC(ds1.GetGeoTransform(
|
||||||
end1x,end1y=geo2imageRC(ds1.GetGeoTransform(),layer_parent.mask.xy[2],layer_parent.mask.xy[3])
|
), layer_parent.mask.xy[0], layer_parent.mask.xy[1])
|
||||||
|
end1x, end1y = geo2imageRC(ds1.GetGeoTransform(
|
||||||
|
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||||
warp(temp_tif1, ds1, srcWin=[start1x, start1y, xsize, ysize])
|
warp(temp_tif1, ds1, srcWin=[start1x, start1y, xsize, ysize])
|
||||||
del ds1
|
del ds1
|
||||||
send_message.emit('图像一提取完成')
|
send_message.emit('图像一提取完成')
|
||||||
@ -620,7 +660,8 @@ class LHBAAlg(AlgFrontend):
|
|||||||
# 运算
|
# 运算
|
||||||
send_message.emit('开始LHBA计算.....')
|
send_message.emit('开始LHBA计算.....')
|
||||||
time.sleep(0.1)
|
time.sleep(0.1)
|
||||||
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(layer_parent.name, int(np.random.rand() * 100000)))
|
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(
|
||||||
|
layer_parent.name, int(np.random.rand() * 100000)))
|
||||||
LHBA(temp_tif1, temp_tif2, out_normal_tif)
|
LHBA(temp_tif1, temp_tif2, out_normal_tif)
|
||||||
# 添加投影
|
# 添加投影
|
||||||
send_message.emit('录入投影信息.....')
|
send_message.emit('录入投影信息.....')
|
||||||
@ -649,8 +690,6 @@ class SHAlg(AlgFrontend):
|
|||||||
print(args)
|
print(args)
|
||||||
send_message = Empty()
|
send_message = Empty()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
xsize = layer_parent.size[0]
|
xsize = layer_parent.size[0]
|
||||||
ysize = layer_parent.size[1]
|
ysize = layer_parent.size[1]
|
||||||
geo = layer_parent.grid.geo
|
geo = layer_parent.grid.geo
|
||||||
@ -660,17 +699,20 @@ class SHAlg(AlgFrontend):
|
|||||||
|
|
||||||
ds2: gdal.Dataset = gdal.Open(pth2)
|
ds2: gdal.Dataset = gdal.Open(pth2)
|
||||||
temp_tif2 = os.path.join(Project().other_path, 'temp2.tif')
|
temp_tif2 = os.path.join(Project().other_path, 'temp2.tif')
|
||||||
start2x,start2y=geo2imageRC(ds2.GetGeoTransform(),layer_parent.mask.xy[0],layer_parent.mask.xy[1])
|
start2x, start2y = geo2imageRC(ds2.GetGeoTransform(
|
||||||
end2x,end2y=geo2imageRC(ds2.GetGeoTransform(),layer_parent.mask.xy[2],layer_parent.mask.xy[3])
|
), layer_parent.mask.xy[0], layer_parent.mask.xy[1])
|
||||||
|
end2x, end2y = geo2imageRC(ds2.GetGeoTransform(
|
||||||
|
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||||
warp(temp_tif2, ds2, srcWin=[start2x, start2y, xsize, ysize])
|
warp(temp_tif2, ds2, srcWin=[start2x, start2y, xsize, ysize])
|
||||||
del ds2
|
del ds2
|
||||||
send_message.emit('图像二提取完成')
|
send_message.emit('图像二提取完成')
|
||||||
|
|
||||||
|
|
||||||
ds1: gdal.Dataset = gdal.Open(pth1)
|
ds1: gdal.Dataset = gdal.Open(pth1)
|
||||||
temp_tif1 = os.path.join(Project().other_path, 'temp1.tif')
|
temp_tif1 = os.path.join(Project().other_path, 'temp1.tif')
|
||||||
start1x,start1y=geo2imageRC(ds1.GetGeoTransform(),layer_parent.mask.xy[0],layer_parent.mask.xy[1])
|
start1x, start1y = geo2imageRC(ds1.GetGeoTransform(
|
||||||
end1x,end1y=geo2imageRC(ds1.GetGeoTransform(),layer_parent.mask.xy[2],layer_parent.mask.xy[3])
|
), layer_parent.mask.xy[0], layer_parent.mask.xy[1])
|
||||||
|
end1x, end1y = geo2imageRC(ds1.GetGeoTransform(
|
||||||
|
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||||
warp(temp_tif1, ds1, srcWin=[start1x, start1y, xsize, ysize])
|
warp(temp_tif1, ds1, srcWin=[start1x, start1y, xsize, ysize])
|
||||||
del ds1
|
del ds1
|
||||||
send_message.emit('图像一提取完成')
|
send_message.emit('图像一提取完成')
|
||||||
@ -678,7 +720,8 @@ class SHAlg(AlgFrontend):
|
|||||||
# 运算
|
# 运算
|
||||||
send_message.emit('开始SH计算.....')
|
send_message.emit('开始SH计算.....')
|
||||||
time.sleep(0.1)
|
time.sleep(0.1)
|
||||||
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(layer_parent.name, int(np.random.rand() * 100000)))
|
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(
|
||||||
|
layer_parent.name, int(np.random.rand() * 100000)))
|
||||||
SH(temp_tif1, temp_tif2, out_normal_tif)
|
SH(temp_tif1, temp_tif2, out_normal_tif)
|
||||||
# 添加投影
|
# 添加投影
|
||||||
send_message.emit('录入投影信息.....')
|
send_message.emit('录入投影信息.....')
|
||||||
|
@ -2,6 +2,7 @@ from PyQt5.QtGui import QIcon
|
|||||||
from PyQt5.QtCore import QObject
|
from PyQt5.QtCore import QObject
|
||||||
from .misc import singleton
|
from .misc import singleton
|
||||||
|
|
||||||
|
|
||||||
@singleton
|
@singleton
|
||||||
class IconInstance(QObject):
|
class IconInstance(QObject):
|
||||||
|
|
||||||
@ -46,6 +47,10 @@ class IconInstance(QObject):
|
|||||||
self.RASTER = QIcon('./icons/影像.png')
|
self.RASTER = QIcon('./icons/影像.png')
|
||||||
self.VEGETATION = QIcon('./icons/植被变化.png')
|
self.VEGETATION = QIcon('./icons/植被变化.png')
|
||||||
self.NOISE = QIcon('./icons/噪声处理.png')
|
self.NOISE = QIcon('./icons/噪声处理.png')
|
||||||
|
self.ARITHMETIC1 = QIcon('./icons/Algorithm_icon/功能-01.png')
|
||||||
|
self.ARITHMETIC2 = QIcon('./icons/Algorithm_icon/功能-02.png')
|
||||||
|
self.ARITHMETIC3 = QIcon('./icons/Algorithm_icon/功能-03.png')
|
||||||
|
self.ARITHMETIC3.QSize()
|
||||||
|
|
||||||
self.DATA_LOAD = QIcon('./icons/数据加载.png')
|
self.DATA_LOAD = QIcon('./icons/数据加载.png')
|
||||||
|
|
||||||
|
BIN
test-data/AAA.tif.ovr
Normal file
BIN
test-data/AAA.tif.ovr
Normal file
Binary file not shown.
BIN
test-data/BBB.tif.ovr
Normal file
BIN
test-data/BBB.tif.ovr
Normal file
Binary file not shown.
22
test-data/test01/test01.prj
Normal file
22
test-data/test01/test01.prj
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
cell_size:
|
||||||
|
- 100
|
||||||
|
- 100
|
||||||
|
layers:
|
||||||
|
- enable: true
|
||||||
|
layers: []
|
||||||
|
name: AAA.-BBB.
|
||||||
|
pth1: E:/xhong/CVEOdemo/fourth/rscder/test-data/AAA.tif
|
||||||
|
pth2: E:/xhong/CVEOdemo/fourth/rscder/test-data/BBB.tif
|
||||||
|
style_info1:
|
||||||
|
NIR: 4
|
||||||
|
b: 3
|
||||||
|
g: 2
|
||||||
|
r: 1
|
||||||
|
style_info2:
|
||||||
|
NIR: 4
|
||||||
|
b: 3
|
||||||
|
g: 2
|
||||||
|
r: 1
|
||||||
|
max_memory: 100
|
||||||
|
max_threads: 4
|
||||||
|
root: E:\xhong\CVEOdemo\fourth\rscder\test-data\test01
|
Loading…
x
Reference in New Issue
Block a user