8

Kogan (2004) (p. 2891) provides the following formula for the Vegetation Condition Index (VCI): VCI = 100 * (NDVI - NDVImin) / (NDVImax - NDVImin) where, NDVI = Smoothed weekly NDVI value NDVImin = Multiyear minimum NDVI value NDVImax = Multiyear maximum NDVI value As you know, NDVI ranges from -1 to 1 and functionally ranges from 0 - 1. VCI rescales ...


8

Both ways work just fine and give the same results: https://code.earthengine.google.com/3f766772035a8890b0caf231eb652a1f. There is also a small mistake in the formula in your code - wrong bracket. // compute composite for all images aquired in the last 3 days var now = ee.Date(Date.now()) var composite = s2 .filterDate(now.advance(-3, 'day'), now) ....


6

The sensitivity of the normalized difference vegetation index (NDVI) to the soil background and atmospheric effects has generated an increasing interest in the development of new indices. The NDVI index is saturated in high biomass and it is sensitive to a number of perturbing factors, such as atmospheric effects, cloud, soil ...


5

Bare soil and urban areas are notoriously hard to segregate. Even with a perfect atmospheric correction, there will be relatively high confusion between the two, particularly when limited to multispectral datasets. The atmospheric correction technique you are doing is a simple dark object subtraction, wherein the darkest objects in the landscape should have ...


5

In your code, S2 is an ImageCollection, so when you "create band variables" you're just getting ImageCollections in which every image inside has only the selected band, which is useful. As you well commented, add_reNDVI is a function that will take every image in the collection and calculate reNDVI. So you have to map that function over the collection to get ...


4

This index has a slope correction so is not bound to a theoretical -1 to 1 range. Just for reference, here is the pseudo-code for the MSAVI2 that does not require the estimation of L. You may want to either check it against your code or, if using a software function, manually derive the index to see if it makes a difference. msavi2 = (2 * nir + 1 - sqrt( (...


4

The common definitions for these coefficients when using MODIS are: L=1, C1 = 6, C2 = 7.5. The C1 and C2 coefficients are aerosol resistance terms that rely on the blue band to partial out atmospheric influence in the red band. The gain is commonly defined as 2.5 So, here is the thing. One would not expect the same atmospheric influences in UAV imagery as ...


3

QGIS has a plugin called zonal statistics that will allow you to calculate the mean NDVI. It will also calculate the pixel count, and the sum of all pixel values within each polygon. If you wish to sample multiple rasters, I'd recommend using the Zonal Stats module in RSGISLib. This will allow you to iterate over multiple rasters using the same shapefile, ...


3

Depending on the camera you are using, and what bands, (Sounds like the micasense), you may want something that reaches towards the SWIR to see water characteristics. Anyways, from what I know- it is best to pair thermal imagery (measuring canopy temperature) with atmospheric temperature, and use something like the crop water stress index (CWSI) - see ...


3

Potentials that I'd suggest that you look at are: NDVI percentiles - to indicate the highest & lowest NDVI values, without having the issues associated with anomalous min & max values. Range of NDVI values in a year - to indicate variability over the year. Potentially based on the percentiles, instead of min & max values. Bi-modality, to ...


3

These are two questions: First question: Explore the NDVI If you want to explore the values, without having to create a new raster, you can do it through the symbolism. Previously: The first thing, which I recommend, is to know its statistics and distribution. See the histogram, know the mean, standard deviation, maximum and minimum value. In the styles ...


3

I would suggest OTB BandMath tool (from QGIS Processing Toolbox > OTB > Image Manipulation), which can handle bands calculation. Given ExG = 2 * G - R - B, the corresponding OTB Expression is 2*im1b2 - im1b1 - im1b3. (Please note im1 means the first image and each band is represented as b1 = red, b2= green and b3 = blue). (Above: Output Image - used ...


3

By definition, Percentile Rank (not to be confused with Percentile function or Percentile) is expressed as percentage so, if you want values from 0-1 you can only divide by 100. For calculating Percentile Rank (PR), the formula is as follows; where CF—the cumulative frequency—is the count of all scores less than or equal to the score of interest, F is the ...


2

According to me there are three (or four) possible way so far. 1)Leaf Area index from Statistics or water cloud model. 2) Radar Vegetation Index (RVI) from Dual-pol or quad-pol system and Radar degradation forest index from Dual-pol system. However, all these approaches are not simple and have lots of difficulties and limitations. Please try to read some ...


2

No way to calculate NDVI from SAR imagery, like Sentinel-1 images(any polarisations). To calculate NDVI you could get 2 bands (Near Infrared and Red bands) from Sentinel-2 or Landsat-8. So, about SAR. You just only can get some value about biomass or LAI (Leaf Area Index) and after that you can try to search some formulas to indexing vegetation for ...


2

NDVI= (NIR-RED) / (NIR+RED) Found this which may help - http://www.harrisgeospatial.com/docs/broadbandgreenness.html Other resources which may be useful - https://blogs.esri.com/esri/arcgis/2013/07/24/band-combinations-for-landsat-8/ Band Combinations for Landsat 8 by kevin_butler on July 24, 2013 1763 208 50K Landsat 8 has been online for a couple of ...


2

In QGIS: Raster menu -> Miscellaneous -> Build Virtual Raster (Catalog)... Ensure the "Separate" option is ticked so each raster is put into a separate band Raster menu -> Conversion -> Translate (Convert Format)... Output to GeoTIFF Command-line GDAL: gdalbuildvrt -separate NRG.vrt NIR.tif RED.tif GREEN.tif gdal_translate NRG.vrt NRG.tif Note there are ...


2

I think the equation in the raster calculator should be written as follows: (("TOA_B5.tif"+1) * (256-"TOA_B4.tif") * ("TOA_B5.tif"-"TOA_B4.tif"))**(1.0/3.0) **: means power convert (1/3) integer division into float division (1.0/3.0) You need to change "TOA_B5.tif" and "TOA_B4.tif" to the corresponding layer names exist in the table of content in ArcMap


2

Classification: (in case you don´t have a classified image already and/or if that´s new to you) Try the Semi-Automatic Classification Plugin, you find the user manual and some examples/tutorials here. The general steps are to enhance spectral signature/general image preprocessing: Especially multi band imagery should be spectrally cleaned and enhanced in ...


2

You can use Zonal Statistics as Table to accomplish this. The zonal data can be either raster or vector.


2

You need to assign band designations based on the information provided by the sensor manufacturer. For example, if you are using landsat data, you can find them here: https://www.usgs.gov/faqs/what-are-band-designations-landsat-satellites?qt-news_science_products=0#qt-news_science_products. Set your bands as A, B, C, D, etc.., taking note of which is ...


2

You dont mention how fast your model executes. I tried code below for three polygons, generating about 60000 random trees in one minute. Make sure not to input impossible combination of tree density and minimum tree distance or it will run forever. import arcpy from random import randint arcpy.env.overwriteOutput = True #Change these five lines arcpy.env....


2

You only need one semicolon at the end when you are applying map several times. Just remove the others: // Download the Sentinel-2 imagery collection var imgs = ee.ImageCollection('COPERNICUS/S2') .filterDate(start, end) .filterBounds(aoi) .map(maskS2clouds) .map(addNDVI) .map(addNDWI1) .map(addNDWI2);


2

I'm assuming that you want one output row per input point, with columns for each of the properties you're computing. In that case, the best thing to do is to combine your multiple reduceRegions calls into a single one — that way you get one collection as a result, and it will be much more efficient because it's processing the input table and image collection ...


2

You can try using the "Graphical Modeler..." placed in the Processing tab. As input use the "Multiple input" for storing the list of raster files, see image below And later connect this input with a "Raster calculator" from Algorithms. Mind the formula References: Docs » QGIS User Guide » 22. QGIS processing framework » 22.5. ...


2

I've never calculated this index, and am not convinced I got it completely right. But based on what you provided, it could look something like this: https://code.earthengine.google.com/c94ed6bb713d414a265d4817244f287a var addANIR = function(image) { var a = ee.Image().expression( 'sqrt((832.8 - 644.6)**2 + (i.B8 - i.B4)**2)', {i: image} ) var b = ...


2

Having only RGB you cannot calculate the NDVI. As stated in the comment, you need as well the NIR (near-infrared) channel (https://gisgeography.com/ndvi-normalized-difference-vegetation-index/)


2

If you have some issue with OTB, it can also be used Raster Calculator as follows: After click in OK, result is totally equivalent.


2

With changes in following lines submitted complete code (not commented) works (you cannot use an image collection in your function as a single image and roi is the "geometry" for your chart). var MonthlyMIN_img = MonthlyMIN.mean(); var MonthlyMAX_img = MonthlyMAX.mean(); /////////////////////////////////////////////////////// Calculation of VCI ///...


1

map() function is for ImageCollection object. Computing median, you're converting ImageCollection object in Image object, thas why doesn't work your code. Try this: // Creating a buffer around my region of interest var buffer = ee.Geometry.Point([103.83841283715412,1.3736828122619071]).buffer(10000); Map.centerObject(buffer, 12); // Load Landsat 8 surface ...


Only top voted, non community-wiki answers of a minimum length are eligible