Skip to content

Commit 59b184f

Browse files
8.1.2
1 parent 31f1a59 commit 59b184f

7 files changed

Lines changed: 15691 additions & 15675 deletions

File tree

__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ def description():
3434

3535

3636
def version():
37-
return 'Version 8.1.1 - Infinity'
37+
return 'Version 8.1.2 - Infinity'
3838

3939

4040
def icon():

docs/repository.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<pyqgis_plugin name="Semi-Automatic Classification Plugin - master" version="8.1.1" plugin_id="284">
44
<description><![CDATA[The Semi-Automatic Classification Plugin (SCP) allows for the supervised classification of remote sensing images, providing tools for the download, the preprocessing and postprocessing of images.]]></description>
55
<about><![CDATA[Developed by Luca Congedo, the Semi-Automatic Classification Plugin (SCP) allows for the supervised classification of remote sensing images, providing tools for the download, the preprocessing and postprocessing of images. Search and download is available for Landsat, Sentinel-2 images. Several algorithms are available for the land cover classification. This plugin requires the installation of Remotior Sensus, GDAL, OGR, Numpy, SciPy, and Matplotlib. For more information please visit https://fromgistors.blogspot.com .]]></about>
6-
<version>8.1.1</version>
6+
<version>8.1.2</version>
77
<qgis_minimum_version>3.0.0</qgis_minimum_version>
88
<qgis_maximum_version>3.99.0</qgis_maximum_version>
99
<homepage><![CDATA[https://fromgistors.blogspot.com/p/semi-automatic-classification-plugin.html]]></homepage>

interface/classification_tab.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -490,6 +490,15 @@ def run_classifier(save_classifier=None, preview_point=None):
490490
cfg.util_qgis.save_qml_style(
491491
raster, '%s/%s.qml' % (directory, name)
492492
)
493+
if output.extra['algorithm_raster'] is not None:
494+
# add raster to layers
495+
cfg.util_qgis.add_raster_layer(
496+
output.extra['algorithm_raster']
497+
)
498+
if output.extra['signature_rasters'] is not None:
499+
# add raster to layers
500+
for s in output.extra['signature_rasters']:
501+
cfg.util_qgis.add_raster_layer(s)
493502
else:
494503
cfg.mx.msg_err_1()
495504
cfg.ui_utils.remove_progress_bar(smtp=str(__name__))

interface/scp_dock.py

Lines changed: 29 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -424,33 +424,35 @@ def roi_signature_table_tree(self, tree=None):
424424
signatures = self.signature_catalog.table.signature_id.tolist()
425425
class_name_list = []
426426
for signature in signatures:
427-
signature_array = self.signature_catalog.table[
428-
self.signature_catalog.table['signature_id'] == signature]
429-
macroclass_id = signature_array.macroclass_id[0]
430-
class_id = signature_array.class_id[0]
431-
class_name = signature_array.class_name[0]
432-
class_name_list.append(class_name)
433-
selected = signature_array.selected[0]
434-
geometry_check = signature_array.geometry[0]
435-
signature_check = signature_array.signature[0]
436-
color = signature_array.color[0]
437-
if signature_check == 1 and geometry_check == 1:
438-
type_info = cfg.roi_and_signature_type
439-
elif geometry_check == 1:
440-
type_info = cfg.roi_type
441-
elif signature_check == 1:
442-
type_info = cfg.signature_type
443-
else:
444-
type_info = ''
445-
cfg.logger.log.error('type_info empty')
446-
# replace for checkbox state
447-
if selected == 1:
448-
selected = 2
449-
self.add_class_tree_item(
450-
macroclass_id=macroclass_id, class_id=class_id,
451-
class_info=class_name, type_info=type_info,
452-
signature_id=signature, color=color, checkbox_state=selected
453-
)
427+
if signature != 'N/A':
428+
signature_array = self.signature_catalog.table[
429+
self.signature_catalog.table['signature_id'] == signature]
430+
macroclass_id = signature_array.macroclass_id[0]
431+
class_id = signature_array.class_id[0]
432+
class_name = signature_array.class_name[0]
433+
class_name_list.append(class_name)
434+
selected = signature_array.selected[0]
435+
geometry_check = signature_array.geometry[0]
436+
signature_check = signature_array.signature[0]
437+
color = signature_array.color[0]
438+
if signature_check == 1 and geometry_check == 1:
439+
type_info = cfg.roi_and_signature_type
440+
elif geometry_check == 1:
441+
type_info = cfg.roi_type
442+
elif signature_check == 1:
443+
type_info = cfg.signature_type
444+
else:
445+
type_info = ''
446+
cfg.logger.log.error('type_info empty')
447+
# replace for checkbox state
448+
if selected == 1:
449+
selected = 2
450+
self.add_class_tree_item(
451+
macroclass_id=macroclass_id, class_id=class_id,
452+
class_info=class_name, type_info=type_info,
453+
signature_id=signature, color=color,
454+
checkbox_state=selected
455+
)
454456
cfg.logger.log.debug('class_name_list: %s' % str(class_name_list))
455457
self.tree.show()
456458
self.tree.setSortingEnabled(True)

interface/signature_threshold_tab.py

Lines changed: 42 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -44,46 +44,48 @@ def signature_thresholds_to_table():
4444
ids = sig_table.signature_id.tolist()
4545
row = 0
4646
for signature_id in ids:
47-
signature_array = cfg.scp_training.signature_catalog.table[
48-
cfg.scp_training.signature_catalog.table[
49-
'signature_id'] == signature_id]
50-
macroclass_id = signature_array.macroclass_id[0]
51-
class_id = signature_array.class_id[0]
52-
class_name = signature_array.class_name[0]
53-
macroclass_name = (
54-
cfg.scp_training.signature_catalog.macroclasses[
55-
macroclass_id
56-
]
57-
)
58-
min_dist_thr = signature_array.min_dist_thr[0]
59-
max_like_thr = signature_array.max_like_thr[0]
60-
spec_angle_thr = signature_array.spec_angle_thr[0]
61-
cfg.util_qt.insert_table_row(table, row)
62-
cfg.util_qt.add_table_item(
63-
table, int(macroclass_id), row, 0, False
64-
)
65-
cfg.util_qt.add_table_item(
66-
table, str(macroclass_name), row, 1, False
67-
)
68-
cfg.util_qt.add_table_item(
69-
table, int(class_id), row, 2, False
70-
)
71-
cfg.util_qt.add_table_item(
72-
table, str(class_name), row, 3, False
73-
)
74-
cfg.util_qt.add_table_item(
75-
table, str(min_dist_thr), row, 4
76-
)
77-
cfg.util_qt.add_table_item(
78-
table, str(max_like_thr), row, 5
79-
)
80-
cfg.util_qt.add_table_item(
81-
table, str(spec_angle_thr), row, 6
82-
)
83-
cfg.util_qt.add_table_item(
84-
table, str(signature_id), row, 7, False
85-
)
86-
row += 1
47+
if signature_id != 'N/A':
48+
signature_array = \
49+
cfg.scp_training.signature_catalog.table[
50+
cfg.scp_training.signature_catalog.table[
51+
'signature_id'] == signature_id]
52+
macroclass_id = signature_array.macroclass_id[0]
53+
class_id = signature_array.class_id[0]
54+
class_name = signature_array.class_name[0]
55+
macroclass_name = (
56+
cfg.scp_training.signature_catalog.macroclasses[
57+
macroclass_id
58+
]
59+
)
60+
min_dist_thr = signature_array.min_dist_thr[0]
61+
max_like_thr = signature_array.max_like_thr[0]
62+
spec_angle_thr = signature_array.spec_angle_thr[0]
63+
cfg.util_qt.insert_table_row(table, row)
64+
cfg.util_qt.add_table_item(
65+
table, int(macroclass_id), row, 0, False
66+
)
67+
cfg.util_qt.add_table_item(
68+
table, str(macroclass_name), row, 1, False
69+
)
70+
cfg.util_qt.add_table_item(
71+
table, int(class_id), row, 2, False
72+
)
73+
cfg.util_qt.add_table_item(
74+
table, str(class_name), row, 3, False
75+
)
76+
cfg.util_qt.add_table_item(
77+
table, str(min_dist_thr), row, 4
78+
)
79+
cfg.util_qt.add_table_item(
80+
table, str(max_like_thr), row, 5
81+
)
82+
cfg.util_qt.add_table_item(
83+
table, str(spec_angle_thr), row, 6
84+
)
85+
cfg.util_qt.add_table_item(
86+
table, str(signature_id), row, 7, False
87+
)
88+
row += 1
8789
table.blockSignals(False)
8890
cfg.util_qt.sort_table_column(table, 7)
8991

metadata.txt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
name=Semi-Automatic Classification Plugin
33
qgisMinimumVersion=3.00
44
description=The Semi-Automatic Classification Plugin (SCP) allows for the supervised classification of remote sensing images, providing tools for the download, the preprocessing and postprocessing of images.
5-
version=8.1.1
5+
version=8.1.2
66
about=Developed by Luca Congedo, the Semi-Automatic Classification Plugin (SCP) allows for the supervised classification of remote sensing images, providing tools for the download, the preprocessing and postprocessing of images. Search and download is available for Landsat, Sentinel-2 images. Several algorithms are available for the land cover classification. This plugin requires the installation of Remotior Sensus, GDAL, OGR, Numpy, SciPy, and Matplotlib. For more information please visit https://fromgistors.blogspot.com .
77

88
author=Luca Congedo
@@ -13,6 +13,9 @@ icon=semiautomaticclassificationplugin.png
1313

1414
changelog=
1515

16+
8.1.2
17+
-fixed classification tool
18+
1619
8.1.1
1720
-fixed band set tools integration with image conversion
1821

0 commit comments

Comments
 (0)