{"name": "LEE RS Lab", "package_name": "rs_lab", "version": "2.4.1", "experimental": true, "qgis_min": "3.22.0", "qgis_max": "3.99.0", "downloads": 63, "uploaded_by": "khgeo", "upload_datetime": "2026-11-08T10:26:33.241552", "changelog": "2.4.1 Code-safety fixes for the QGIS plugin repository scan: no silent try/except/pass (Planetary Computer token expiry is now checked explicitly and logged), no ambiguous variable names. No change in behaviour.\n2.4.0 Simpler panel: Basic / Advanced switch in the header (Basic is the default and hides filters, PCA, ISODATA, extra algorithms and parameters, signatures, WorldCover training, polygon export and the LEE tab; nothing is removed). Magic wand (click-to-grow) training: pick a class, click a pixel, similar connected pixels become a training polygon (tolerance, max. area, undo, counts per class; the training layer is created automatically).\n2.3.1 Fixes: (1) Map layout scale bar \u2014 labels no longer overlap (\"2,5005,000 m\"): kilometres, 2 segments with a round length (1, 2, 5 \u00d7 10^n) of about a quarter of the map width. (2) Change \u203a one-transition map: the layer name, legend and status line use the class names in the current language (Khmer: \u00ab\u178f\u17c6\u1794\u1793\u17cb\u179f\u17c6\u178e\u1784\u17cb \u2192 \u179f\u17d2\u179a\u17bc\u179c / \u178a\u17b8\u178a\u17c6\u178e\u17b6\u17c6\u00bb instead of \"Built-up \u2192 Rice / cropland\"). (3) Cluster / class spectra charts: when radar bands in dB (VV, VH, e.g. the multi-season stack) are mixed with reflectance or indices, the radar bands get their own panel and dB axis, so the index lines are no longer squashed flat.\n2.3.0 Classify \u203a Unsupervised, from the Land Cover Mapper: \"Multi-season stack (local, no login)\" builds a 13-band feature stack for the AOI with LEE \u2014 Sentinel-2 dry season (Feb\u2013Apr) and green season (Sep\u2013Nov) medians (NDVI, seasonal swing, NDMI, red-edge, MNDWI, NDBI, SWIR, brightness) plus Sentinel-1 VH/VV dry and wet season \u2014 so K-means separates evergreen from deciduous trees, paddy from upland crops, permanent from seasonal water and built-up land; the stack is chosen for clustering automatically. The cluster table has a Hint column (also for ordinary images, from NDVI/MNDWI/NDBI); clicking a row zooms to a random pixel of that cluster on Esri imagery (click again for the next one); \"Suggest classes from hints\" fills empty \u2192 class boxes from the active scheme; \"Split selected cluster into n\" re-clusters a mixed cluster. Khmer: reflectance = \u1780\u17b6\u179a\u1785\u17b6\u17c6\u1784\u1795\u17d2\u179b\u17b6\u178f.\n2.2.4 Fix: MODIS NDVI/EVI (and any Planetary Computer data) failed with \"HTTP response code: 403\" for every image. Files are now signed with a token for their own storage container (like the official planetary_computer library) instead of a token by collection name; a rejected or expired token is refreshed and the read retried once; a clear message if the server still refuses.\n2.2.3 The AOI is kept: it is saved in the project and, by default, as a GeoPackage layer \"AOI\" in the Layers panel, and it comes back automatically after a plugin update, a reload or reopening the project. New imagery: Landsat 1-5 MSS Collection 2 Level-1 (raw DN, 60 m, 1972-2013) from Planetary Computer; choosing it moves the dates into the sensor lifetime.\n2.2.2 More datasets and every LEE layer are now cut to the AOI shape (DEM, slope, hillshade, land cover\u2026), and class statistics count only the AOI; land-cover legends list only the classes found in the AOI (no \"Snow and ice\" in Cambodia); lee.config(clip=False) and img.clip() for scripts. Band combination: \"Apply automatically when a setting changes\" (on by default; choosing another image never restyles it by itself).\n2.2.1 First release on plugins.qgis.org (experimental). LICENSE file in the plugin; only http(s) URLs are opened; ignored errors are logged at debug level; Khmer text in charts is drawn by Qt so it is shaped correctly; change detection refuses results made from raw images; PDF report keeps the map on page 1; Help links to the online manual. Khmer terms: plugin = \u1780\u1798\u17d2\u1798\u179c\u17b7\u1792\u17b8\u1787\u17c6\u1793\u17bd\u1799, remote sensing = \u1780\u17b6\u179a\u1799\u1780\u1796\u17d0\u178f\u17cc\u1798\u17b6\u1793\u1796\u17b8\u1785\u1798\u17d2\u1784\u17b6\u1799.\n2.2.0 Renamed LEE RS Lab. One toolbar icon (no basemap arrow; basemaps stay in the panel header). Fix: installing scikit-learn on macOS crashed (\"init_sys_streams \u2026 text_encoding\") \u2014 only a Python of the same version as QGIS is used, never with QGIS's standard library; otherwise pip runs inside QGIS; the button shows when scikit-learn is already installed. Fix: \"&\" in section titles showed as an underline. Khmer: band = \u1794\u17ca\u17c2\u1793, reflectance = \u1780\u17b6\u179a\u1785\u17b6\u17c6\u1795\u17d2\u179b\u17b6\u178f. Classify: one shared Classes (legend) section with schemes (RS Lab, LULC level 1, Auto 7, ESA WorldCover), save/open CSV; clusters are labelled with class drop-downs; K-means / ISODATA enable only their own parameters. From the GEE LULC Toolkit: Cochran sample size with proportional / equal allocation and a minimum per class; point labelling with class buttons, next / previous / next unlabelled, zoom and an optional map-class hint; automatic training points from ESA WorldCover (Auto 7, pure pixels); print map layout (title, legend, scale bar, north arrow, sources, accuracy). Change: from \u2192 to is the default, with gains / losses per class, the largest transitions, net-change chart, Sankey diagram of the from \u2192 to flows (offline HTML, from the GEE LULC Toolkit), date 1 vs date 2 area chart, CSV, map of one chosen transition (e.g. Forest \u2192 Cropland) and the tables in the PDF report; codes are now from\u00d71000+to (class ids up to 999, e.g. WorldCover 100). LEE: \"Use a result in the other tabs\" (Enhance, Classify, Accuracy, Change date 1/2), class maps go to the accuracy/change boxes, and lee.Image.open(\"layer name\" or path) reads project rasters into scripts. 18 new LEE examples (32 in all): indices pack, red-edge chlorophyll, land surface temperature, urban expansion, forest loss / gain, NDVI-drop deforestation, rice calendar from Sentinel-1 VH, radar colour composite, S2 + S1 fusion clustering, dry vs rainy season water, JRC water seasonality, elevation zones, MODIS drought anomaly, Landsat 5 vs today, clear-observation count, haze-free percentile composite, mangroves & wetlands, Image.open. Reversed colour ramps (e.g. \"Spectral_r\").\n2.1.0 Compact panel: 10 tabs \u2192 5 (1 Data \u00b7 2 Enhance \u00b7 3 Classify \u00b7 4 Change \u00b7 5 LEE) with collapsible one-at-a-time sections, lessons inside each section, result tables shown only when there are results, button rows that wrap, combo boxes and form rows that fit a narrow dock (tab bar scrolls on macOS). One toolbar icon: click opens the panel, its arrow lists the basemaps (also in the panel header). New: area-adjusted accuracy and class areas with 95 percent confidence intervals (Olofsson et al. 2014) in the accuracy section, CSV and PDF report; Clean up & export polygons (sieve to a minimum mapping unit, polygonize to GeoPackage with class name and area). Fix: Search scenes / Preview / Download failed (missing scene-parameter helpers).\n2.0.2 Fix a QGIS crash (segmentation fault in QLocale::doubleToString) when styling a layer whose pixels all have one value (e.g. a water or flood mask): colour ramps and legend labels are now built by RS Lab with a guarded min/max.\n2.0.1 Accuracy: points are sampled at their exact pixel; a clear message (and the attribute table opens) when ref_class is still empty, points fall outside the map, or only on unclassified pixels. LEE label: \"LEE \u00b7 Local Earth Engine\" tag, tab \"9 LEE Script\", LEE badge on the icon.\n2.0.0 No Google Earth Engine: everything uses free data without login and runs locally. New tab 9 Script \u2014 LEE (Local Earth Engine), GEE-style scripting with 14 examples. More datasets for the AOI: Copernicus DEM, NASADEM, ESA WorldCover, annual land cover, JRC surface water, MODIS NDVI. Setup tab: connection test and cache control.\n1.3.1 Fix: \"wrapped C/C++ object of type QToolBar has been deleted\" when unloading or reloading the plugin.\n1.3.0 Project CRS follows the AOI (UTM zone at the AOI centre, Web Mercator for very wide AOIs; can be switched off); Auto download CRS shows the detected zone. Basemaps: 10 one-click XYZ basemaps (Esri, Google, EOX Sentinel-2 cloudless, OSM, OpenTopoMap, CARTO) from the toolbar or the Download tab, added under the imagery; attribution goes into the report.\n1.2.0 Renamed RS Lab (was RS Teaching Lab; settings and installed Earth Engine package are reused). Own toolbar. AOI preset to administrative units with a country level for any country (HDX COD-AB \u2192 ODC \u2192 geoBoundaries \u2192 Earth Engine), preset Cambodia; whole-country AOI; boundaries load automatically. Imagery source preset to Microsoft Planetary Computer.\n1.1.2 Fix: panel failed to open when a web basemap (Google Satellite XYZ/WMS) was in the project; image boxes now list only file-based rasters.\n1.1.1 Faster cloud downloads: cloud masks read first so only the clearest scenes over the AOI are downloaded; parallel connections (setting); direct window reads without reprojection when the image is already in the target UTM zone; HTTP/2 and caching. Earth Search tile ids shown.\n1.1.0 Imagery without GEE: Earth Search (AWS) and Microsoft Planetary Computer STAC sources (Sentinel-2 L2A, Landsat 5/7/8/9 L2, Sentinel-1 RTC) with local cloud-masked composites and quick look; local band-set builder for EarthExplorer / Copernicus Browser / SAFE files. Admin boundaries: robust HDX COD-AB reader (both schemas, P-code cascade, Khmer names), ODC fallback, own boundary file, add AOI to map. Language switch now also translates legend class labels and keeps the province/district/commune selection.\n1.0.0 First release.", "external_deps": null, "download_url": "https://plugins.qgis.org/plugins/rs_lab/version/2.4.1/download/"}