7

Aldo's answer is the correct one, no doubt, but if you want to make the code shorter and you don't mind loosing the 'core' of cloud masking, you can use a module: var point = /* color: #98ff00 */ee.Geometry.Point([35.83946228027344, -3.5380934964711126]); //load images for composite var sr14= ee.ImageCollection('LANDSAT/LC08/C01/T1_SR') .filterBounds(point)...


6

Do you want an interactive map, or are you fine with plotting the NDVI timeseries for one (or few) specific points? In the latter you raster::extract() the NDVI-Stack values under your points, and use the returned dataframe as input for your plot. Edit: I was thinking... You actually can do some interactive point-selection using raster::click(). So as a ...


6

var sst = ee.ImageCollection('NASA/OCEANDATA/MODIS-Aqua/L3SMI') .select('sst') .filterDate(ee.Date('2013-01-01'), ee.Date('2017-12-31')) var months = ee.List.sequence(1, 12); var years = ee.List.sequence(2013, 2017); var byMonthYear = ee.ImageCollection.fromImages( years.map(function(y) { return months.map(function (m) { return sst ...


5

Please, read the related answer. Use the right parameters and always check metadata You're trying to filter with BQA band and in SR product, there is no BQA band, there is pixel_qa band instead. Also, bits used are different (3 and 5). Finally, if you are trying to create a cloud-free composite, first sort by cloud cover. var point = /* color: #98ff00 */...


5

In the QGIS/FOSS world, you can use the GRASS algorithm called r.sunmask.datetime from the Processing toolbox. You provide the date and time, and it creates a shadow mask. Here's one, derived from Lidar data:-


4

Rather than looking for a specific package for raster time series you could look for functions for smoothing, and then use these with the calc function in the raster package. Here is an example for Savitzky-Golay: https://stackoverflow.com/questions/37843942/smoothen-rasterstack-using-the-savitzky-golay-sgolayfilt-signal-in-r/37846229#37846229


4

You can remove the geometry by using .setGeometry(null) on a feature. To remove every geometry you need to map over the collection. In your script that could be in the same function as setting the imageID return f.set('imageId', image.id()).setGeometry(null); As a full script: var regions = ee.FeatureCollection([ ee.Feature( // San Francisco. ee....


4

Here is a modification of the first example from this presentation about tables and vectors. Note that you can "transpose" the table if there are other properties in the points that are of interest: var rectangle = ee.Geometry.Rectangle(96.01669, 18.52621, 96.04819, 18.49634); Map.centerObject(rectangle); Map.addLayer(rectangle, {}, 'rectangle') var ...


4

Hope you find useful this tutorial: http://www.loicdutrieux.net/landsat-extract-gee/examples.html from geextract import ts_extract, get_date from datetime import datetime import numpy as np import matplotlib.pyplot as plt plt.figure(figsize=(10,5)) # Extract a Landsat 7 time-series for a 500m radius circular buffer around # a location in Yucatan lon = -89....


4

It looks like like Leaflet TimeDimension plugin and https://geo.weather.gc.ca/geomet WMS service do not go very well along together. TimeDimension plugin uses getCapabilities call to get time series from WMS service. Response has hefty 14MB. Plugin analyzes this response to get times for time series calls to WMS service (time parameter). Obviously ...


3

Here is an approach that imputes NA values based on a local polynomial regression (loess). The default smoothing parameter (s) is fairly stable but, if the data is stochastic (say, climate data), is also something that you may want to test. I would also point out that, in the temporal analysis literature, it is common practice to smooth a time-series using ...


3

In ArcGIS the tool would be: Area Solar Radiation (Spatial Analyst > Solar Radiation) You could also do it in QGIS with the GRASS tool r.sun I used this tools to create several images along the day from which later I made a video. But now that I reread your question this may not be exactly what you want. I think what you need is: r.sunmask.datetime or r....


3

Using technique described here I populated the table of integer grid by values from 3 rasters of interest. I used IS NULL query to populate records with no match (NO DATA) by -999 during data transfer from zonal statistics table. Finally I added field “SLOPE” and computed it using Python field calculator expression: import numpy def getSlope(yList): x,...


3

There is a plugin tool in QGIS called Mutant. Load all Rasters into a layer. Choose a point. (Make sure that in the Options Tab in Mutant the "Plot values only when mouse is clicked" is checked.) In the Mutant plugin in the Table tab there should now be a long list of values, click 'Export to CSV'. Open in Excel and manipulate the data as desired into ...


3

I guess I found a way to my own problem: Basically, I parsed the time variable from the filename and added it back to regression model. Below is the peice of code I used. library(raster) all <- list.files("/home/R_test/", full.names = TRUE, pattern = "*.tif") fn <- list.files("/home/R_test/", full.names = FALSE, pattern = "*.tif") #Stack rasters ...


3

As you want to calculate the number of days between the first and last day where the temperature dropped below zero, you will have to change the scaled Kelvin values first to temperature in degrees. In this post I came across a definition for that: // map over the image collection and use server side functions var tempToDegrees = NightSA.map(function(image){...


2

We recently went through something similar to this and found the following tools helpful: tippecanoe (https://github.com/mapbox/tippecanoe) - We used this to convert our high resolution geojson files to manageable vector tiles. This was used as the base. tile-join (same address) - after we had the base tiles, we joined the data to the vector set. This ...


2

I've tried out a bit and found that: RasterBricks, as mentioned by RobertH's answer, do work and are more user-friendly and easy to use; Rgdal methods like readGDAL also work, but with more parameters it's a little bit less user-friendly; So which option should one use? According to my tests (on my 420GB GeoTiff with dimensions of 18660x21592 and 374 ...


2

ENVI doesn't have topographic correction tool. You can do it as a secondary product using ATCOR trough ENVI. If you don't have license for that, I recommend you to correct your scenes via QGIS or R.


2

code2 works. Adapt it properly with right parameters (Always check metadata): var l8_mayo = ee.ImageCollection('LANDSAT/LC08/C01/T1_TOA') .filterDate('2000-01-01', '2018-12-31') .filter(ee.Filter.eq('WRS_PATH', 208)) .filter(ee.Filter.eq('WRS_ROW', 23)); var visParams = {bands: ['B4', 'B3', 'B2'], max: 0.3}; Map.setCenter(-9, 53, 8); Map.addLayer(...


2

A bit tricky, but you can use arrays to achieve this: https://code.earthengine.google.com/7f79588ccca7a31b9aeee7710aa1779e. For example, you can add a timestamp band to associate NDVI values with images and then sort array to find maximum values, keeping both NDVI and timestamp bands together. // turn image collection into an array var array = NDVI.toArray(...


2

I will just say that Excel is not a statistical software and many statistical/mathematical operators are just not available or extremely difficult to implement. This type of data is inherently an array and best analyzed in a matrix type framework. Collapsing it to a row/column flat file with coordinate pairs and then a series of values in subsequent columns, ...


2

This question has no GIS component, but anyway. I ran this field calculator expression: import numpy as np x=[2001,2002,2003,2004,2005] def getSlope(y): a,b=np.polyfit(x, y, 1) return a #---------------- getSlope([ !Y_2001!, !Y_2002!, !Y_2003!, !Y_2004!, !Y_2005!]) on the field "SLOPE" in below table: To get a slope of a trend. Look at numpy functions ...


2

Instead of your own data, you should try to use example data created by code or from R examples. That avoids unnecessary work, and makes the answers more useful --- they will be easier to use, also after those links go dead. Example data: library(raster) r <- raster(system.file("external/test.grd", package="raster")) s <- stack(r, r*2, r/2) s #class ...


2

Not sure what you are trying to accomplish here. If it is simply to sort by date you do not need the xts package and can just use bracket indexing to resort the data.frame. ( x <- data.frame(ID = c(rep(1,5), rep(2,5),rep(5,5)), date = seq(as.Date("2010-01-01",format='%F'), as.Date("2010-01-05",format='%F'),length.out=...


2

As this is a common operation, there's a function to do it in one go, so you don't have to do your own multi-temporal aggregation: ui.Chart.image.seriesByRegion. var modis = ee.ImageCollection('MODIS/006/MOD11A1'); var modisLST = modis.filterBounds(fc2) .filterDate('2003-12-25', '2004-02-25') .select('LST_Day_1km'); /...


2

I think your problem problem lies in your scale, as you specifically say it should be 1M in your reduceRegion(). The nominal Scale for the MODIS/006/MOD11A1 is 1000M. Set scale to 1000 to see if it works. I can't test it out for you because I don't have the Python module for ee installed properly.


2

I found the issue. It wasn't the scale, since anything below the native resolution of the product returns the value at the native resolution. The problem was actually a missing parameter in the following line: data = im.select(band_name)\ .reduceRegion(ee.Reducer.first(), point, 1)\ .get(band_name) I changed this to: data = im....


2

first2001 is in milliseconds since 1970-01-01T00:00:00Z to turn that back into a date that you will be able to understand, just make this change. var first2001 = ee.Date(count2001.first().get('system:time_start')); // sort the collection in descending to find the last var last2001 = ee.Date(count2001.sort('system:time_start',false).first().get('system:...


2

In the first graph you have selected only the NDVI band using l5.select('NDVI') While in the second graph you do not do that, and then the band defaults to the first band values. That's why the values differ. Try: //Create a graph of the time-series. var graph = ui.Chart.image.seriesByRegion({ imageCollection: l5.select('NDVI'), regions: col, reducer: ...


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