add some icons
This commit is contained in:
parent
3d753a88a5
commit
2445b7aec0
@ -6,7 +6,15 @@ CVEO团队
|
||||
Python3.7 + PyQt + QGIS
|
||||
|
||||
## 配置方式
|
||||
|
||||
```
|
||||
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
|
||||
- python=3.7.10=h7840368_101_cpython
|
||||
- python_abi=3.7=2_cp37m
|
||||
- pip
|
||||
- pyyaml=5.4.1=py37hcc03f2d_1
|
||||
- qgis=3.18.3=py37h3dc7164_2
|
||||
- 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 osgeo import gdal
|
||||
import math,os
|
||||
import math
|
||||
import os
|
||||
import time
|
||||
from PyQt5 import QtWidgets
|
||||
from sklearn.cluster import k_means
|
||||
@ -10,12 +18,6 @@ from misc import Register, AlgFrontend
|
||||
|
||||
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]):
|
||||
driver = gdal.GetDriverByName('GTiff')
|
||||
@ -26,13 +28,16 @@ def warp(file,ds:gdal.Dataset,srcWin=[0,0,0,0]):
|
||||
band = ds.RasterCount
|
||||
if os.path.exists(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.SetProjection(orj)
|
||||
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
|
||||
|
||||
|
||||
@UNSUPER_CD.register
|
||||
class BasicCD(AlgFrontend):
|
||||
|
||||
@ -40,6 +45,10 @@ class BasicCD(AlgFrontend):
|
||||
def get_name():
|
||||
return '差分法'
|
||||
|
||||
@staticmethod
|
||||
def get_icon():
|
||||
return IconInstance().ARITHMETIC3
|
||||
|
||||
@staticmethod
|
||||
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
|
||||
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])
|
||||
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])
|
||||
end2x,end2y=geo2imageRC(ds2.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])
|
||||
end2x, end2y = geo2imageRC(ds2.GetGeoTransform(
|
||||
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||
|
||||
for j in range(yblocks + 1): # 该改这里了
|
||||
if send_message is not None:
|
||||
@ -112,8 +125,10 @@ class BasicCD(AlgFrontend):
|
||||
send_message.emit('归一化概率中...')
|
||||
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_ds = driver.Create(out_normal_tif, xsize, ysize, 1, gdal.GDT_Byte)
|
||||
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(
|
||||
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.SetProjection(proj)
|
||||
# hist = np.zeros(256, dtype=np.int32)
|
||||
@ -141,6 +156,7 @@ class BasicCD(AlgFrontend):
|
||||
send_message.emit('差分法计算完成')
|
||||
return out_normal_tif
|
||||
|
||||
|
||||
@UNSUPER_CD.register
|
||||
class LSTS(AlgFrontend):
|
||||
|
||||
@ -148,6 +164,10 @@ class LSTS(AlgFrontend):
|
||||
def get_name():
|
||||
return 'LSTS'
|
||||
|
||||
@staticmethod
|
||||
def get_icon():
|
||||
return IconInstance().ARITHMETIC3
|
||||
|
||||
@staticmethod
|
||||
def get_widget(parent=None):
|
||||
|
||||
@ -172,7 +192,8 @@ class LSTS(AlgFrontend):
|
||||
yblocks = ysize // cell_size[1]
|
||||
|
||||
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)
|
||||
geo = layer_parent.grid.geo
|
||||
proj = layer_parent.grid.proj
|
||||
@ -185,17 +206,21 @@ class LSTS(AlgFrontend):
|
||||
win_h = w_size[0]//2 # half hight 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=np.array(a).astype(np.float64)#
|
||||
A = np.array(a).astype(np.float64)
|
||||
|
||||
k_ = np.array(range(1, n+1))
|
||||
df1 = 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])
|
||||
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])
|
||||
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])
|
||||
end2x,end2y=geo2imageRC(ds2.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])
|
||||
end2x, end2y = geo2imageRC(ds2.GetGeoTransform(
|
||||
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||
|
||||
for j in range(yblocks + 1):
|
||||
if send_message is not None:
|
||||
@ -244,8 +269,10 @@ class LSTS(AlgFrontend):
|
||||
# df
|
||||
k_ = range(1, n+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_]))
|
||||
df2[pix-1]=x2[1:n+1].dot(np.array([k*(pix**(k-1)) for k in k_]))
|
||||
df1[pix-1] = x1[1:n +
|
||||
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 欧式距离
|
||||
block_diff[i][j_] = np.dot(df1-df2, df1-df2)**0.5
|
||||
@ -263,8 +290,10 @@ class LSTS(AlgFrontend):
|
||||
send_message.emit('归一化概率中...')
|
||||
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_ds = driver.Create(out_normal_tif, xsize, ysize, 1, gdal.GDT_Byte)
|
||||
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(
|
||||
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.SetProjection(proj)
|
||||
# hist = np.zeros(256, dtype=np.int32)
|
||||
@ -301,6 +330,10 @@ class CVAAlg(AlgFrontend):
|
||||
def get_name():
|
||||
return 'CVA'
|
||||
|
||||
@staticmethod
|
||||
def get_icon():
|
||||
return IconInstance().ARITHMETIC3
|
||||
|
||||
@staticmethod
|
||||
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
|
||||
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])
|
||||
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])
|
||||
end2x,end2y=geo2imageRC(ds2.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])
|
||||
end2x, end2y = geo2imageRC(ds2.GetGeoTransform(
|
||||
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||
|
||||
for j in range(yblocks + 1):
|
||||
if send_message is not None:
|
||||
@ -369,8 +405,10 @@ class CVAAlg(AlgFrontend):
|
||||
send_message.emit('归一化概率中...')
|
||||
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_ds = driver.Create(out_normal_tif, xsize, ysize, 1, gdal.GDT_Byte)
|
||||
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(
|
||||
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.SetProjection(proj)
|
||||
# hist = np.zeros(256, dtype=np.int32)
|
||||
@ -398,6 +436,7 @@ class CVAAlg(AlgFrontend):
|
||||
send_message.emit('欧式距离计算完成')
|
||||
return out_normal_tif
|
||||
|
||||
|
||||
@UNSUPER_CD.register
|
||||
class ACDAlg(AlgFrontend):
|
||||
|
||||
@ -405,6 +444,10 @@ class ACDAlg(AlgFrontend):
|
||||
def get_name():
|
||||
return 'ACD'
|
||||
|
||||
@staticmethod
|
||||
def get_icon():
|
||||
return IconInstance().ARITHMETIC3
|
||||
|
||||
@staticmethod
|
||||
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)
|
||||
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])
|
||||
end2x,end2y=geo2imageRC(ds2.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])
|
||||
end2x, end2y = geo2imageRC(ds2.GetGeoTransform(
|
||||
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||
warp(temp_tif2, ds2, srcWin=[start2x, start2y, xsize, ysize])
|
||||
del ds2
|
||||
send_message.emit('图像二提取完成')
|
||||
|
||||
|
||||
ds1: gdal.Dataset = gdal.Open(pth1)
|
||||
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])
|
||||
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])
|
||||
end1x, end1y = geo2imageRC(ds1.GetGeoTransform(
|
||||
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||
warp(temp_tif1, ds1, srcWin=[start1x, start1y, xsize, ysize])
|
||||
del ds1
|
||||
send_message.emit('图像一提取完成')
|
||||
|
||||
|
||||
|
||||
# 运算
|
||||
send_message.emit('开始ACD计算.....')
|
||||
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)
|
||||
# 添加投影
|
||||
send_message.emit('录入投影信息.....')
|
||||
@ -465,6 +510,10 @@ class AHTAlg(AlgFrontend):
|
||||
def get_name():
|
||||
return 'AHT'
|
||||
|
||||
@staticmethod
|
||||
def get_icon():
|
||||
return IconInstance().ARITHMETIC3
|
||||
|
||||
@staticmethod
|
||||
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)
|
||||
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])
|
||||
end2x,end2y=geo2imageRC(ds2.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])
|
||||
end2x, end2y = geo2imageRC(ds2.GetGeoTransform(
|
||||
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||
warp(temp_tif2, ds2, srcWin=[start2x, start2y, xsize, ysize])
|
||||
del ds2
|
||||
send_message.emit('图像二提取完成')
|
||||
|
||||
|
||||
ds1: gdal.Dataset = gdal.Open(pth1)
|
||||
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])
|
||||
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])
|
||||
end1x, end1y = geo2imageRC(ds1.GetGeoTransform(
|
||||
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||
warp(temp_tif1, ds1, srcWin=[start1x, start1y, xsize, ysize])
|
||||
del ds1
|
||||
send_message.emit('图像一提取完成')
|
||||
|
||||
|
||||
|
||||
# 运算
|
||||
send_message.emit('开始AHT计算.....')
|
||||
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)
|
||||
# 添加投影
|
||||
send_message.emit('录入投影信息.....')
|
||||
@ -524,6 +575,10 @@ class OCDAlg(AlgFrontend):
|
||||
def get_name():
|
||||
return 'OCD'
|
||||
|
||||
@staticmethod
|
||||
def get_icon():
|
||||
return IconInstance().ARITHMETIC3
|
||||
|
||||
@staticmethod
|
||||
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)
|
||||
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])
|
||||
end2x,end2y=geo2imageRC(ds2.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])
|
||||
end2x, end2y = geo2imageRC(ds2.GetGeoTransform(
|
||||
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||
warp(temp_tif2, ds2, srcWin=[start2x, start2y, xsize, ysize])
|
||||
del ds2
|
||||
send_message.emit('图像二提取完成')
|
||||
|
||||
|
||||
ds1: gdal.Dataset = gdal.Open(pth1)
|
||||
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])
|
||||
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])
|
||||
end1x, end1y = geo2imageRC(ds1.GetGeoTransform(
|
||||
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||
warp(temp_tif1, ds1, srcWin=[start1x, start1y, xsize, ysize])
|
||||
del ds1
|
||||
send_message.emit('图像一提取完成')
|
||||
|
||||
|
||||
|
||||
# 运算
|
||||
send_message.emit('开始OCD计算.....')
|
||||
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)
|
||||
# 添加投影
|
||||
send_message.emit('录入投影信息.....')
|
||||
@ -575,6 +632,7 @@ class OCDAlg(AlgFrontend):
|
||||
|
||||
return out_normal_tif
|
||||
|
||||
|
||||
@UNSUPER_CD.register
|
||||
class LHBAAlg(AlgFrontend):
|
||||
|
||||
@ -582,6 +640,10 @@ class LHBAAlg(AlgFrontend):
|
||||
def get_name():
|
||||
return 'LHBA'
|
||||
|
||||
@staticmethod
|
||||
def get_icon():
|
||||
return IconInstance().ARITHMETIC3
|
||||
|
||||
@staticmethod
|
||||
def run_alg(pth1: str, pth2: str, layer_parent: PairLayer, send_message=None, *args, **kargs):
|
||||
|
||||
@ -592,7 +654,6 @@ class LHBAAlg(AlgFrontend):
|
||||
print(args)
|
||||
send_message = Empty()
|
||||
|
||||
|
||||
xsize = layer_parent.size[0]
|
||||
ysize = layer_parent.size[1]
|
||||
geo = layer_parent.grid.geo
|
||||
@ -602,17 +663,20 @@ class LHBAAlg(AlgFrontend):
|
||||
|
||||
ds2: gdal.Dataset = gdal.Open(pth2)
|
||||
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])
|
||||
end2x,end2y=geo2imageRC(ds2.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])
|
||||
end2x, end2y = geo2imageRC(ds2.GetGeoTransform(
|
||||
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||
warp(temp_tif2, ds2, srcWin=[start2x, start2y, xsize, ysize])
|
||||
del ds2
|
||||
send_message.emit('图像二提取完成')
|
||||
|
||||
|
||||
ds1: gdal.Dataset = gdal.Open(pth1)
|
||||
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])
|
||||
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])
|
||||
end1x, end1y = geo2imageRC(ds1.GetGeoTransform(
|
||||
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||
warp(temp_tif1, ds1, srcWin=[start1x, start1y, xsize, ysize])
|
||||
del ds1
|
||||
send_message.emit('图像一提取完成')
|
||||
@ -620,7 +684,8 @@ class LHBAAlg(AlgFrontend):
|
||||
# 运算
|
||||
send_message.emit('开始LHBA计算.....')
|
||||
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)
|
||||
# 添加投影
|
||||
send_message.emit('录入投影信息.....')
|
||||
@ -639,6 +704,10 @@ class SHAlg(AlgFrontend):
|
||||
def get_name():
|
||||
return 'SH'
|
||||
|
||||
@staticmethod
|
||||
def get_icon():
|
||||
return IconInstance().ARITHMETIC3
|
||||
|
||||
@staticmethod
|
||||
def run_alg(pth1: str, pth2: str, layer_parent: PairLayer, send_message=None, *args, **kargs):
|
||||
|
||||
@ -649,8 +718,6 @@ class SHAlg(AlgFrontend):
|
||||
print(args)
|
||||
send_message = Empty()
|
||||
|
||||
|
||||
|
||||
xsize = layer_parent.size[0]
|
||||
ysize = layer_parent.size[1]
|
||||
geo = layer_parent.grid.geo
|
||||
@ -660,17 +727,20 @@ class SHAlg(AlgFrontend):
|
||||
|
||||
ds2: gdal.Dataset = gdal.Open(pth2)
|
||||
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])
|
||||
end2x,end2y=geo2imageRC(ds2.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])
|
||||
end2x, end2y = geo2imageRC(ds2.GetGeoTransform(
|
||||
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||
warp(temp_tif2, ds2, srcWin=[start2x, start2y, xsize, ysize])
|
||||
del ds2
|
||||
send_message.emit('图像二提取完成')
|
||||
|
||||
|
||||
ds1: gdal.Dataset = gdal.Open(pth1)
|
||||
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])
|
||||
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])
|
||||
end1x, end1y = geo2imageRC(ds1.GetGeoTransform(
|
||||
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||
warp(temp_tif1, ds1, srcWin=[start1x, start1y, xsize, ysize])
|
||||
del ds1
|
||||
send_message.emit('图像一提取完成')
|
||||
@ -678,7 +748,8 @@ class SHAlg(AlgFrontend):
|
||||
# 运算
|
||||
send_message.emit('开始SH计算.....')
|
||||
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)
|
||||
# 添加投影
|
||||
send_message.emit('录入投影信息.....')
|
||||
|
@ -13,6 +13,7 @@ from thres import THRES
|
||||
from misc import table_layer, AlgSelectWidget
|
||||
from follow import FOLLOW
|
||||
|
||||
|
||||
class VegtationCDMethod(QDialog):
|
||||
def __init__(self, parent=None, alg: AlgFrontend = None):
|
||||
super(VegtationCDMethod, self).__init__(parent)
|
||||
@ -62,6 +63,7 @@ class VegtationCDMethod(QDialog):
|
||||
|
||||
self.setLayout(totalvlayout)
|
||||
|
||||
|
||||
@FOLLOW.register
|
||||
class VegetationCDFollow(AlgFrontend):
|
||||
|
||||
@ -71,7 +73,7 @@ class VegetationCDFollow(AlgFrontend):
|
||||
|
||||
@staticmethod
|
||||
def get_icon():
|
||||
return IconInstance().UNSUPERVISED
|
||||
return IconInstance().VEGETATION
|
||||
|
||||
@staticmethod
|
||||
def get_widget(parent=None):
|
||||
@ -104,7 +106,8 @@ class VegetationCDFollow(AlgFrontend):
|
||||
|
||||
layer_combox = widget.findChild(PairLayerCombox, 'layer_combox')
|
||||
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')
|
||||
|
||||
layer1 = layer_combox.layer1
|
||||
@ -148,21 +151,21 @@ class VegetationCDFollow(AlgFrontend):
|
||||
name = layer1.name
|
||||
|
||||
if falg is not None:
|
||||
pth1 = falg.run_alg(pth1, name=name, send_message= send_message, **fparams)
|
||||
pth2 = falg.run_alg(pth2, 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)
|
||||
|
||||
|
||||
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)
|
||||
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)
|
||||
|
||||
table_layer(thpth, layer1, name, send_message)
|
||||
|
||||
|
||||
|
||||
|
||||
class VegtationPlugin(BasicPlugin):
|
||||
|
||||
|
||||
@staticmethod
|
||||
def info():
|
||||
return {
|
||||
@ -190,7 +193,6 @@ class VegtationPlugin(BasicPlugin):
|
||||
|
||||
veg_menu.addAction(action)
|
||||
|
||||
|
||||
def run_cd(self, alg):
|
||||
dialog = VegtationCDMethod(self.mainwindow, alg)
|
||||
dialog.show()
|
||||
@ -215,12 +217,14 @@ class VegtationPlugin(BasicPlugin):
|
||||
return
|
||||
|
||||
if falg is not None:
|
||||
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)
|
||||
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)
|
||||
|
||||
|
||||
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)
|
||||
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)
|
||||
|
@ -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 osgeo import gdal
|
||||
import math,os
|
||||
import math
|
||||
import os
|
||||
import time
|
||||
from PyQt5 import QtWidgets
|
||||
from sklearn.cluster import k_means
|
||||
from rscder.utils.geomath import geo2imageRC, imageRC2geo
|
||||
from rscder.utils.icons import IconInstance
|
||||
from rscder.utils.project import Project, PairLayer
|
||||
from misc import Register, AlgFrontend
|
||||
|
||||
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]):
|
||||
driver = gdal.GetDriverByName('GTiff')
|
||||
@ -26,13 +28,16 @@ def warp(file,ds:gdal.Dataset,srcWin=[0,0,0,0]):
|
||||
band = ds.RasterCount
|
||||
if os.path.exists(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.SetProjection(orj)
|
||||
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
|
||||
|
||||
|
||||
@VEG_CD.register
|
||||
class BasicCD(AlgFrontend):
|
||||
|
||||
@ -40,6 +45,10 @@ class BasicCD(AlgFrontend):
|
||||
def get_name():
|
||||
return '差分法'
|
||||
|
||||
@staticmethod
|
||||
def get_icon():
|
||||
return IconInstance().VEGETATION
|
||||
|
||||
@staticmethod
|
||||
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
|
||||
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])
|
||||
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])
|
||||
end2x,end2y=geo2imageRC(ds2.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])
|
||||
end2x, end2y = geo2imageRC(ds2.GetGeoTransform(
|
||||
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||
|
||||
for j in range(yblocks + 1): # 该改这里了
|
||||
if send_message is not None:
|
||||
@ -112,8 +125,10 @@ class BasicCD(AlgFrontend):
|
||||
send_message.emit('归一化概率中...')
|
||||
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_ds = driver.Create(out_normal_tif, xsize, ysize, 1, gdal.GDT_Byte)
|
||||
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(
|
||||
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.SetProjection(proj)
|
||||
# hist = np.zeros(256, dtype=np.int32)
|
||||
@ -141,6 +156,7 @@ class BasicCD(AlgFrontend):
|
||||
send_message.emit('差分法计算完成')
|
||||
return out_normal_tif
|
||||
|
||||
|
||||
@VEG_CD.register
|
||||
class LSTS(AlgFrontend):
|
||||
|
||||
@ -172,7 +188,8 @@ class LSTS(AlgFrontend):
|
||||
yblocks = ysize // cell_size[1]
|
||||
|
||||
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)
|
||||
geo = layer_parent.grid.geo
|
||||
proj = layer_parent.grid.proj
|
||||
@ -185,17 +202,21 @@ class LSTS(AlgFrontend):
|
||||
win_h = w_size[0]//2 # half hight 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=np.array(a).astype(np.float64)#
|
||||
A = np.array(a).astype(np.float64)
|
||||
|
||||
k_ = np.array(range(1, n+1))
|
||||
df1 = 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])
|
||||
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])
|
||||
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])
|
||||
end2x,end2y=geo2imageRC(ds2.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])
|
||||
end2x, end2y = geo2imageRC(ds2.GetGeoTransform(
|
||||
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||
|
||||
for j in range(yblocks + 1):
|
||||
if send_message is not None:
|
||||
@ -244,8 +265,10 @@ class LSTS(AlgFrontend):
|
||||
# df
|
||||
k_ = range(1, n+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_]))
|
||||
df2[pix-1]=x2[1:n+1].dot(np.array([k*(pix**(k-1)) for k in k_]))
|
||||
df1[pix-1] = x1[1:n +
|
||||
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 欧式距离
|
||||
block_diff[i][j_] = np.dot(df1-df2, df1-df2)**0.5
|
||||
@ -263,8 +286,10 @@ class LSTS(AlgFrontend):
|
||||
send_message.emit('归一化概率中...')
|
||||
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_ds = driver.Create(out_normal_tif, xsize, ysize, 1, gdal.GDT_Byte)
|
||||
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(
|
||||
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.SetProjection(proj)
|
||||
# hist = np.zeros(256, dtype=np.int32)
|
||||
@ -324,12 +349,15 @@ class CVAAlg(AlgFrontend):
|
||||
max_diff = 0
|
||||
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])
|
||||
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])
|
||||
end2x,end2y=geo2imageRC(ds2.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])
|
||||
end2x, end2y = geo2imageRC(ds2.GetGeoTransform(
|
||||
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||
|
||||
for j in range(yblocks + 1):
|
||||
if send_message is not None:
|
||||
@ -369,8 +397,10 @@ class CVAAlg(AlgFrontend):
|
||||
send_message.emit('归一化概率中...')
|
||||
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_ds = driver.Create(out_normal_tif, xsize, ysize, 1, gdal.GDT_Byte)
|
||||
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(
|
||||
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.SetProjection(proj)
|
||||
# hist = np.zeros(256, dtype=np.int32)
|
||||
@ -398,6 +428,7 @@ class CVAAlg(AlgFrontend):
|
||||
send_message.emit('欧式距离计算完成')
|
||||
return out_normal_tif
|
||||
|
||||
|
||||
@VEG_CD.register
|
||||
class ACDAlg(AlgFrontend):
|
||||
|
||||
@ -425,27 +456,29 @@ class ACDAlg(AlgFrontend):
|
||||
|
||||
ds2: gdal.Dataset = gdal.Open(pth2)
|
||||
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])
|
||||
end2x,end2y=geo2imageRC(ds2.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])
|
||||
end2x, end2y = geo2imageRC(ds2.GetGeoTransform(
|
||||
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||
warp(temp_tif2, ds2, srcWin=[start2x, start2y, xsize, ysize])
|
||||
del ds2
|
||||
send_message.emit('图像二提取完成')
|
||||
|
||||
|
||||
ds1: gdal.Dataset = gdal.Open(pth1)
|
||||
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])
|
||||
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])
|
||||
end1x, end1y = geo2imageRC(ds1.GetGeoTransform(
|
||||
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||
warp(temp_tif1, ds1, srcWin=[start1x, start1y, xsize, ysize])
|
||||
del ds1
|
||||
send_message.emit('图像一提取完成')
|
||||
|
||||
|
||||
|
||||
# 运算
|
||||
send_message.emit('开始ACD计算.....')
|
||||
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)
|
||||
# 添加投影
|
||||
send_message.emit('录入投影信息.....')
|
||||
@ -484,27 +517,29 @@ class AHTAlg(AlgFrontend):
|
||||
|
||||
ds2: gdal.Dataset = gdal.Open(pth2)
|
||||
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])
|
||||
end2x,end2y=geo2imageRC(ds2.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])
|
||||
end2x, end2y = geo2imageRC(ds2.GetGeoTransform(
|
||||
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||
warp(temp_tif2, ds2, srcWin=[start2x, start2y, xsize, ysize])
|
||||
del ds2
|
||||
send_message.emit('图像二提取完成')
|
||||
|
||||
|
||||
ds1: gdal.Dataset = gdal.Open(pth1)
|
||||
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])
|
||||
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])
|
||||
end1x, end1y = geo2imageRC(ds1.GetGeoTransform(
|
||||
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||
warp(temp_tif1, ds1, srcWin=[start1x, start1y, xsize, ysize])
|
||||
del ds1
|
||||
send_message.emit('图像一提取完成')
|
||||
|
||||
|
||||
|
||||
# 运算
|
||||
send_message.emit('开始AHT计算.....')
|
||||
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)
|
||||
# 添加投影
|
||||
send_message.emit('录入投影信息.....')
|
||||
@ -543,27 +578,29 @@ class OCDAlg(AlgFrontend):
|
||||
|
||||
ds2: gdal.Dataset = gdal.Open(pth2)
|
||||
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])
|
||||
end2x,end2y=geo2imageRC(ds2.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])
|
||||
end2x, end2y = geo2imageRC(ds2.GetGeoTransform(
|
||||
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||
warp(temp_tif2, ds2, srcWin=[start2x, start2y, xsize, ysize])
|
||||
del ds2
|
||||
send_message.emit('图像二提取完成')
|
||||
|
||||
|
||||
ds1: gdal.Dataset = gdal.Open(pth1)
|
||||
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])
|
||||
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])
|
||||
end1x, end1y = geo2imageRC(ds1.GetGeoTransform(
|
||||
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||
warp(temp_tif1, ds1, srcWin=[start1x, start1y, xsize, ysize])
|
||||
del ds1
|
||||
send_message.emit('图像一提取完成')
|
||||
|
||||
|
||||
|
||||
# 运算
|
||||
send_message.emit('开始OCD计算.....')
|
||||
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)
|
||||
# 添加投影
|
||||
send_message.emit('录入投影信息.....')
|
||||
@ -575,6 +612,7 @@ class OCDAlg(AlgFrontend):
|
||||
|
||||
return out_normal_tif
|
||||
|
||||
|
||||
@VEG_CD.register
|
||||
class LHBAAlg(AlgFrontend):
|
||||
|
||||
@ -592,7 +630,6 @@ class LHBAAlg(AlgFrontend):
|
||||
print(args)
|
||||
send_message = Empty()
|
||||
|
||||
|
||||
xsize = layer_parent.size[0]
|
||||
ysize = layer_parent.size[1]
|
||||
geo = layer_parent.grid.geo
|
||||
@ -602,17 +639,20 @@ class LHBAAlg(AlgFrontend):
|
||||
|
||||
ds2: gdal.Dataset = gdal.Open(pth2)
|
||||
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])
|
||||
end2x,end2y=geo2imageRC(ds2.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])
|
||||
end2x, end2y = geo2imageRC(ds2.GetGeoTransform(
|
||||
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||
warp(temp_tif2, ds2, srcWin=[start2x, start2y, xsize, ysize])
|
||||
del ds2
|
||||
send_message.emit('图像二提取完成')
|
||||
|
||||
|
||||
ds1: gdal.Dataset = gdal.Open(pth1)
|
||||
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])
|
||||
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])
|
||||
end1x, end1y = geo2imageRC(ds1.GetGeoTransform(
|
||||
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||
warp(temp_tif1, ds1, srcWin=[start1x, start1y, xsize, ysize])
|
||||
del ds1
|
||||
send_message.emit('图像一提取完成')
|
||||
@ -620,7 +660,8 @@ class LHBAAlg(AlgFrontend):
|
||||
# 运算
|
||||
send_message.emit('开始LHBA计算.....')
|
||||
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)
|
||||
# 添加投影
|
||||
send_message.emit('录入投影信息.....')
|
||||
@ -649,8 +690,6 @@ class SHAlg(AlgFrontend):
|
||||
print(args)
|
||||
send_message = Empty()
|
||||
|
||||
|
||||
|
||||
xsize = layer_parent.size[0]
|
||||
ysize = layer_parent.size[1]
|
||||
geo = layer_parent.grid.geo
|
||||
@ -660,17 +699,20 @@ class SHAlg(AlgFrontend):
|
||||
|
||||
ds2: gdal.Dataset = gdal.Open(pth2)
|
||||
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])
|
||||
end2x,end2y=geo2imageRC(ds2.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])
|
||||
end2x, end2y = geo2imageRC(ds2.GetGeoTransform(
|
||||
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||
warp(temp_tif2, ds2, srcWin=[start2x, start2y, xsize, ysize])
|
||||
del ds2
|
||||
send_message.emit('图像二提取完成')
|
||||
|
||||
|
||||
ds1: gdal.Dataset = gdal.Open(pth1)
|
||||
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])
|
||||
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])
|
||||
end1x, end1y = geo2imageRC(ds1.GetGeoTransform(
|
||||
), layer_parent.mask.xy[2], layer_parent.mask.xy[3])
|
||||
warp(temp_tif1, ds1, srcWin=[start1x, start1y, xsize, ysize])
|
||||
del ds1
|
||||
send_message.emit('图像一提取完成')
|
||||
@ -678,7 +720,8 @@ class SHAlg(AlgFrontend):
|
||||
# 运算
|
||||
send_message.emit('开始SH计算.....')
|
||||
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)
|
||||
# 添加投影
|
||||
send_message.emit('录入投影信息.....')
|
||||
|
@ -2,6 +2,7 @@ from PyQt5.QtGui import QIcon
|
||||
from PyQt5.QtCore import QObject
|
||||
from .misc import singleton
|
||||
|
||||
|
||||
@singleton
|
||||
class IconInstance(QObject):
|
||||
|
||||
@ -46,6 +47,10 @@ class IconInstance(QObject):
|
||||
self.RASTER = QIcon('./icons/影像.png')
|
||||
self.VEGETATION = 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')
|
||||
|
||||
|
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