20230202: selection: Solved selecting a subset of bands which would produce a multiband rastercoverage having the bands in the wrong order. multiband rastercoverage processing: the first line of the 2nd band onwards was filled with nodata values. Made solving installation issues easier, by now showing the .dll or .so file that couldn't be loaded at start up (import ilwis). On linux made the libgdal.so always load when it is installed on the system, whatever its location. 20230224: Renamed the python-package of the extension to 'ilwis' instead of 'ilwispy'. If you have pip-installed the previous version, you can pip-uninstall it with pip uninstall ilwispy. All subsequent versions are named ilwis. The python extension now incorporates the release date in the version number, for easier comparison and easier upgrades. rastercoverage / reprojectRaster(): simplified this function: no need to supply an output name, as it was not used anyway. reprojectRaster() now preserves the cornerofcorners property of the source georeference whern computing the target georeference. georeference: Added an optional parameter for creating a georeference from csy, envelope and size, indicating whether it should be cornerofcorners. The default (when omitting the parameter) is now cornerofcorners, thus the opposite of what it was. The other allowed value for the parameter is centerofcorners. ellipsoids: Corrected the WGS84 inverse flattening number. resample: Corrected the computation of the source pixel location, which was causing the output image to be shifted. timesat: Spike detection now works properly, both with option "extendwindow" True or False. featurecoverage / table: features or table-records with a date/time attribute would occasionally show an error that seconds must be between 0..59, while there was nothing wrong with the date/time. multiband rastercoverage processing: now sufficient memory is allocated to perform the processing without hickups. projections: solved typos in Equidistant Cylindrical (atitude->latitude) and Lambert Conformal Conic (1SP->2SP). operation clusterraster now works properly (it computes correctly, and creates a domain and representation). linearstretch now processes all bands of multiband-input. Previously it was only processing the first band. ellipsoids: enhanced parsing of proj4 strings, by now also supporting +rf (which is there when +b is not). representations: now they are properly stored when storing data in the ilwis3 format. domains: storing a domain in ilwis3 format now creates a filename better than ANONYMOUS.. histograms: solved computation issue whereby the last histogram bin (before the undef bin) was not having any pixels. ilwis3 store domains, vectormaps and tables: corrected the time format (last changed time) so that ilwis3 can read the files. statistics: corrected computation of the indices (PropertySets -> pBASIC, pALL etc). statistics: now pALL computes all indices, instead of crashing. 20230307: mapcalc: Now it is possible to combine single and multiband rastercoverages; the single band rastercoverage will be used multiple times. resample is now aware of ellipsoide differences between rastercoverages and will convert from one ellipsoid to another (e.g. Clarke to WGS84). rastercoverage: Solve crash when opening a rastercoverage with a coordinatesystem that is not recognized. ellipsoids: higher precision (more digits) when exporting a proj4 string (major axis and inverse flattening). georeference: added a toString() function to get the "code" string with which the georeference can be re-created. georeference: converting a pixel-box to an envelope would shift the entire envelope by 1 pixel. ellipsoids: corrected Clarke 1880 (IGN) and Clarke 1866 (the inverse flattenings were wrong). rastertopoint: the points were placed at the topleft corner of pixels (now in the middle of pixels). hydroflow: added MapFillSinks as the first operation to be ported from the ilwis3 hydroflow operations. ilwis3 store coordinatesystem: a user-defined ellipsoid is now properly stored (instead of becoming wgs84). ilwis3 store coordinatesystem: the coordinatesystem now has as far as possible the same name as the rastercoverage, instead of a long name describing it. The long name is now in the description. ilwis3 store rastercoverage: when the domain is image, all values were 1 too low. errors that occur during an ilwis.do() operation: an attempt is made to provide more details (instead of "check the parameters"). polygon2raster: output the pixel values were taken from the wrong location in the polygon (shifted by 1 pixel). Solve memory-leak in array2raster (an out-of-memory error would occur after several calls to array2raster). Corrected storing numeric domains in the ilwis3 format (value.dom); a domain would be created on disk which was not used. reprojectRaster() now computes a correct size and envelope for the output rastercoverage. reprojectRaster(): solved a crash that prevented this operation from being available. 20230309: Solved a resource-leak as objects resulting from an ilwis.do() or ilwis.Engine.do() operation would never be garbage-collected (filling the python-temporary-folder with cacheblock files) 20230329: Solved occasional "error loading ilwiscore.dll or _ilwisobjects.pyd on Windows configurations when importing ilwis. Solved interference with sqlite3.dll from python\Dlls folder when using jupyter. FeatureCoverage: properly look-up and show the cell-value of class-columns. Corrections in the statistics/histogram computations (1 percent intervals). Round pixel values when converting images to an integer format (or a less-precise format than the image is). linearstretch operation: the auto-computed stretch-limits for multiband images are now per-band, instead of for the entire image. clusterraster operation: this operation no longer computes an 1% interval before clustering. If an interval is required, it can be computed beforehand (with linearstretch). Repaired boxclassification: computation now works without issues. Renamed operation boxclassification(...) to classificatio('box',...). Thus the call is now ilwis.do('classification', 'box', ...) Added classifications Minimum Distance (mindist) and Minimum Mahalanobis Distance (minmahadist). Calling: ilwis.do('classification', 'mindist', ...) and ilwis.do('classification', 'minmahadist', ...). Added MapFlowDirection (first working version). Solved the per-band and overall minimum and maximum values of multiband raster images being wrong (they were always the ones of the first band). The classification operations can now use a samplemap of any domain type (not only class, but also group and numeric (integers)). The classification operations no longer ask for a domain in the input-parameter-list. The domain of the sample map is used for the output classified map. 20230330: RasterCoverages resulting from a "selection" operation, selecting a subset of bands, would not be chained well to subsequent operations like clusterraster and linearstretch. The per-band min/max statistics of multiband raster coverages that are the result of an operation (mapcalc, linearstretch etc) would be wrong / correspond to the wrong band. 20230403: Hydroflow/MapFlowDirection: the parallel drainage correction algorithm was added. Reading ILWIS3 MapLists: the "scale" factor would not be correctly read from the maps, potentially making the maplist a factor 10 or 100 more. 20230428: Added Hydroflow/MapFlowAccumulation Solved an issue whereby calling store() on an object for storing it on disk, the object could not be used anymore (error: Invalid IlwisObject) 20230510: Coverages that used the "geos" projection would not properly transform coordinates to any other projection. setvaluerange would produce bad "undef/nodata" values when the values of the input rastercoverage were outside the destination value-range. 20230619: Added Maximum Likelihood (maxlikelihood) Spectral Angle (spectralangle) and Prior Probability (priorprob) classifiers. Classification: improved parameter checking and error messages for the compulsory and optional parameters. Improved the ilwis.do() error messages when something went wrong with an operation. polygon2raster: properly convert coordinates when the polygon layer and the target georeference have a different coordinate system. Corrected the range of the image16 domain (the "max" was one too far, triggering 32-bits storage). polygon2raster: improved performance Added "nodata" handling when storing raster coverages via gdal (e.g. as GeoTIFF). Other software should now recognize the nodata pixels when opening the resulting .tif file. setvaluerange: prevent making the output value range more precise than the original raster coverage. Store ilwis3 domains: do not accidentally skip storing domains that are labeled as ilwis4-system-domains. Ilwis3 would not be able to open the file that uses such a domain. 20230703: Corrected the computation of histogram stretch values based on a percentage. The function that performed this computation was stretchLinear, which was renamed to calcStretchRange, in order to attend existing python code that uses the old function to the erroneous output. 20230704: array2raster: increased the internal addressing pointers from 32 to 64 bits, in order to be able to work with larger arrays. 20230712: timesat: solved crash for an array being indexed beyond its bounds when the last flag (Extend Window) is False and the last images of the timeseries have cloudy pixels. The pixel iterator can now address raster coverages that exceed 2 Giga pixels (previously 32-bit addressing was used). Added function ilwis.showProgress(True/False) to show the commandline progress indicator for debugging purposes. It will show in the console window that was used to start jupyter (thus not in notebook cells). 20230714: Corrections in operation 'setattributetable' for assigning an attribute table to a rastercoverage. Prior probability classification: now a numeric sample map can be used, with a custom-created attribute table (which can e.g. be programmatically created and filled). 20230929: Hydroflow: added MapCatchmentExtraction, MapDrainageNetworkExtraction, MapVariableThresholdComputation, DrainageNetworkOrdering, and support for domain FlowDirection. Operation "selection": the coordinate system was not correctly set in case of changing the georeference. linearstretch now sets the min/max property of the output rastercoverage. Solved a resource-leak when the ilwis.do() or ilwis.Engine.do() operation would result in a Collection (multiple outputs). Storing a class domain of an ilwis3 table/column now also stores the corresponding representation. When storing a class-coverage, the domain receives the same filename as the coverage, with extension .dom (if the domain's name is not set), instead of a randomized filename. Reading ilwis3 raster images with a domain submap would have a pixel-position-shift error. The folder for the log file in C:\Users\\AppData\Roaming\Python(w)\log is now properly created. Timesat: corrected resolving bounds 20240429: Correction in reading ilwis3 polygon files (format "37"). The reader was losing track of the polygon "start" positions. When writing Ilwis3 files, distinguish between domain class (thematic) and group (slicing). Made areanumbering and raster2polygon produce exactly the same result as ilwis3. Hydroflow: improvements in the DrainageNetworkOrdering application output. Operation mapcalc: added a number of operations. Now the following list is supported: iff,sin,cos,tan,asin,acos,atan,tanh,sinh,tanh,cosh,asinh,acosh,atahn,log10,ln,exp,abs,ceil,int,round,floor,sq,sqrt,max,log,min,pow,not,xor,ifundef,ifnotundef. Operation select now handles partial spatial extents in which the rectangle of the target raster and the selection rectangle only partially overlap.