Extracting time series from image collection in Google Earth Engine? Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) Announcing the arrival of Valued Associate #679: Cesar Manara Unicorn Meta Zoo #1: Why another podcast?Export data from time-series image collection to a table in Google Earth EngineSampling Image collection google earth engineApply a cloud mask to a Landsat8 collection in Google Earth Engine - time seriesExtracting index/position of maximum value in annual time series in Google Earth Engine?Get image names from image collection in Google Earth EngineExport data from time-series image collection to a table in Google Earth EngineCreate time series for multi-polygon Google Earth EngineGoogle Earth Engine, Image Collection Statistics?Extracting pixel time series from Google Earth EngineNested loop in time series change detection in Google Earth Engine?Data organization in Google Earth Engine image collection?
If A makes B more likely then B makes A more likely"
How to politely respond to generic emails requesting a PhD/job in my lab? Without wasting too much time
Why don't the Weasley twins use magic outside of school if the Trace can only find the location of spells cast?
Working around an AWS network ACL rule limit
Classification of bundles, Postnikov towers, obstruction theory, local coefficients
How does modal jazz use chord progressions?
Windows 10: How to Lock (not sleep) laptop on lid close?
How to rotate it perfectly?
How can I make names more distinctive without making them longer?
Active filter with series inductor and resistor - do these exist?
Stop battery usage [Ubuntu 18]
How do I automatically answer y in bash script?
When communicating altitude with a '9' in it, should it be pronounced "nine hundred" or "niner hundred"?
How are presidential pardons supposed to be used?
Why does this iterative way of solving of equation work?
Array/tabular for long multiplication
Blender game recording at the wrong time
Two different pronunciation of "понял"
How to market an anarchic city as a tourism spot to people living in civilized areas?
Can a zero nonce be safely used with AES-GCM if the key is random and never used again?
Should you tell Jews they are breaking a commandment?
Can smartphones with the same camera sensor have different image quality?
How to say that you spent the night with someone, you were only sleeping and nothing else?
Problem when applying foreach loop
Extracting time series from image collection in Google Earth Engine?
Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)
Announcing the arrival of Valued Associate #679: Cesar Manara
Unicorn Meta Zoo #1: Why another podcast?Export data from time-series image collection to a table in Google Earth EngineSampling Image collection google earth engineApply a cloud mask to a Landsat8 collection in Google Earth Engine - time seriesExtracting index/position of maximum value in annual time series in Google Earth Engine?Get image names from image collection in Google Earth EngineExport data from time-series image collection to a table in Google Earth EngineCreate time series for multi-polygon Google Earth EngineGoogle Earth Engine, Image Collection Statistics?Extracting pixel time series from Google Earth EngineNested loop in time series change detection in Google Earth Engine?Data organization in Google Earth Engine image collection?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
I tried to perform a pixel based time series change detection algorithm in GEE for a defined region, so i intended to extract every pixel time series values into something like a table or matrix, and implement the pixel based algorithm by rows or columns.
I find out a similar question and rewrite the code by following the solution given by Nicholas Clinton as follows:
#define the interested path and row to select the images
path = 120
row = 32
#define the time period to filter the images you want
start = ee.Date.fromYMD(1983, 1, 1)
finish = ee.Date.fromYMD(2019, 1, 1)
#rename the OLI images
l8_bandlist = ee.List(['B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'B10', 'pixel_qa'])
rename_list = ee.List(['blue', 'green', 'red', 'nir', 'swir1', 'swir2', 'tbb', 'qa'])
#build the image collection
l8_sr = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR').filter(
ee.Filter.eq('WRS_PATH', path)).filter(ee.Filter.eq('WRS_ROW', row)).filterDate(
start, finish).select(l8_bandlist, rename_list).sort('system:time_start')
# using shapefile to restrict the area of interest
shp = ee.FeatureCollection('users/myzhenghrsc/testarea').geometry()
#reduce the region restricted by uploaded shapfile into points correspond to OLI pixels
dictionary = ee.Image.pixelLonLat().reduceRegion(
reducer=ee.Reducer.toCollection(['longitude', 'latitude']),
geometry=shp,
scale=30)
#function to build the piont featureCollection
def __rebuildpoints(feature):
lon = feature.get('longitude'),
lat = feature.get('latitude'),
return ee.Feature(ee.Geometry.Point([lon, lat])),
'featureID':
ee.Number(lon).multiply(1000).round().format('%5.0f').cat('_').cat(
ee.Number(lat).multiply(1000).round().format('%5.0f'))
#perform the function above
points = ee.FeatureCollection(dictionary.get('features')).map(__rebuildpoints)
def triplets(image):
def feature(value):
return value.set(
'imageID': pointvalue.id(),
'timeMillis': pointvalue.get('system:time_start')
)
pointvalue = image.reduceRegion(
'collection': points,
'reducer': ee.Reducer.first().setOutputs(image.bandNames()),
'scale': 30
)
return pointvalue
turplets = l8_sr.select('red').map(triplets)
def newformat(table, rowId, colId, rowProperty, colProperty):
rows = table.distinct(rowId),
joined = ee.Join.saveAll('matches').apply(
primary=rows,
secondary=table,
condition=ee.Filter.equals(
leftField=rowId,
rightField=colId
)
)
def __row(row):
def __feature(feature):
feature = ee.Feature(feature),
return [feature.get(colId), feature.get(colProperty)].flatten()
values = ee.List(row.get('matches')).map(__feature)
return row.select([rowId, rowProperty]).set(ee.Dictionary(values))
return joined.map(__row)
results = newformat(triplets, 'imageID', 'featureID', 'timemillis', 'RED')
But i got a error as follows when i perform this code:
Invalid argument specified for ee.Number(): ee.ComputedObject(
"type": "Invocation",
"arguments":
"object":
"type": "ArgumentRef",
"value": null
,
"property": "longitude"
,
"functionName": "Element.get"
)
google-earth-engine time-series
add a comment |
I tried to perform a pixel based time series change detection algorithm in GEE for a defined region, so i intended to extract every pixel time series values into something like a table or matrix, and implement the pixel based algorithm by rows or columns.
I find out a similar question and rewrite the code by following the solution given by Nicholas Clinton as follows:
#define the interested path and row to select the images
path = 120
row = 32
#define the time period to filter the images you want
start = ee.Date.fromYMD(1983, 1, 1)
finish = ee.Date.fromYMD(2019, 1, 1)
#rename the OLI images
l8_bandlist = ee.List(['B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'B10', 'pixel_qa'])
rename_list = ee.List(['blue', 'green', 'red', 'nir', 'swir1', 'swir2', 'tbb', 'qa'])
#build the image collection
l8_sr = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR').filter(
ee.Filter.eq('WRS_PATH', path)).filter(ee.Filter.eq('WRS_ROW', row)).filterDate(
start, finish).select(l8_bandlist, rename_list).sort('system:time_start')
# using shapefile to restrict the area of interest
shp = ee.FeatureCollection('users/myzhenghrsc/testarea').geometry()
#reduce the region restricted by uploaded shapfile into points correspond to OLI pixels
dictionary = ee.Image.pixelLonLat().reduceRegion(
reducer=ee.Reducer.toCollection(['longitude', 'latitude']),
geometry=shp,
scale=30)
#function to build the piont featureCollection
def __rebuildpoints(feature):
lon = feature.get('longitude'),
lat = feature.get('latitude'),
return ee.Feature(ee.Geometry.Point([lon, lat])),
'featureID':
ee.Number(lon).multiply(1000).round().format('%5.0f').cat('_').cat(
ee.Number(lat).multiply(1000).round().format('%5.0f'))
#perform the function above
points = ee.FeatureCollection(dictionary.get('features')).map(__rebuildpoints)
def triplets(image):
def feature(value):
return value.set(
'imageID': pointvalue.id(),
'timeMillis': pointvalue.get('system:time_start')
)
pointvalue = image.reduceRegion(
'collection': points,
'reducer': ee.Reducer.first().setOutputs(image.bandNames()),
'scale': 30
)
return pointvalue
turplets = l8_sr.select('red').map(triplets)
def newformat(table, rowId, colId, rowProperty, colProperty):
rows = table.distinct(rowId),
joined = ee.Join.saveAll('matches').apply(
primary=rows,
secondary=table,
condition=ee.Filter.equals(
leftField=rowId,
rightField=colId
)
)
def __row(row):
def __feature(feature):
feature = ee.Feature(feature),
return [feature.get(colId), feature.get(colProperty)].flatten()
values = ee.List(row.get('matches')).map(__feature)
return row.select([rowId, rowProperty]).set(ee.Dictionary(values))
return joined.map(__row)
results = newformat(triplets, 'imageID', 'featureID', 'timemillis', 'RED')
But i got a error as follows when i perform this code:
Invalid argument specified for ee.Number(): ee.ComputedObject(
"type": "Invocation",
"arguments":
"object":
"type": "ArgumentRef",
"value": null
,
"property": "longitude"
,
"functionName": "Element.get"
)
google-earth-engine time-series
add a comment |
I tried to perform a pixel based time series change detection algorithm in GEE for a defined region, so i intended to extract every pixel time series values into something like a table or matrix, and implement the pixel based algorithm by rows or columns.
I find out a similar question and rewrite the code by following the solution given by Nicholas Clinton as follows:
#define the interested path and row to select the images
path = 120
row = 32
#define the time period to filter the images you want
start = ee.Date.fromYMD(1983, 1, 1)
finish = ee.Date.fromYMD(2019, 1, 1)
#rename the OLI images
l8_bandlist = ee.List(['B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'B10', 'pixel_qa'])
rename_list = ee.List(['blue', 'green', 'red', 'nir', 'swir1', 'swir2', 'tbb', 'qa'])
#build the image collection
l8_sr = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR').filter(
ee.Filter.eq('WRS_PATH', path)).filter(ee.Filter.eq('WRS_ROW', row)).filterDate(
start, finish).select(l8_bandlist, rename_list).sort('system:time_start')
# using shapefile to restrict the area of interest
shp = ee.FeatureCollection('users/myzhenghrsc/testarea').geometry()
#reduce the region restricted by uploaded shapfile into points correspond to OLI pixels
dictionary = ee.Image.pixelLonLat().reduceRegion(
reducer=ee.Reducer.toCollection(['longitude', 'latitude']),
geometry=shp,
scale=30)
#function to build the piont featureCollection
def __rebuildpoints(feature):
lon = feature.get('longitude'),
lat = feature.get('latitude'),
return ee.Feature(ee.Geometry.Point([lon, lat])),
'featureID':
ee.Number(lon).multiply(1000).round().format('%5.0f').cat('_').cat(
ee.Number(lat).multiply(1000).round().format('%5.0f'))
#perform the function above
points = ee.FeatureCollection(dictionary.get('features')).map(__rebuildpoints)
def triplets(image):
def feature(value):
return value.set(
'imageID': pointvalue.id(),
'timeMillis': pointvalue.get('system:time_start')
)
pointvalue = image.reduceRegion(
'collection': points,
'reducer': ee.Reducer.first().setOutputs(image.bandNames()),
'scale': 30
)
return pointvalue
turplets = l8_sr.select('red').map(triplets)
def newformat(table, rowId, colId, rowProperty, colProperty):
rows = table.distinct(rowId),
joined = ee.Join.saveAll('matches').apply(
primary=rows,
secondary=table,
condition=ee.Filter.equals(
leftField=rowId,
rightField=colId
)
)
def __row(row):
def __feature(feature):
feature = ee.Feature(feature),
return [feature.get(colId), feature.get(colProperty)].flatten()
values = ee.List(row.get('matches')).map(__feature)
return row.select([rowId, rowProperty]).set(ee.Dictionary(values))
return joined.map(__row)
results = newformat(triplets, 'imageID', 'featureID', 'timemillis', 'RED')
But i got a error as follows when i perform this code:
Invalid argument specified for ee.Number(): ee.ComputedObject(
"type": "Invocation",
"arguments":
"object":
"type": "ArgumentRef",
"value": null
,
"property": "longitude"
,
"functionName": "Element.get"
)
google-earth-engine time-series
I tried to perform a pixel based time series change detection algorithm in GEE for a defined region, so i intended to extract every pixel time series values into something like a table or matrix, and implement the pixel based algorithm by rows or columns.
I find out a similar question and rewrite the code by following the solution given by Nicholas Clinton as follows:
#define the interested path and row to select the images
path = 120
row = 32
#define the time period to filter the images you want
start = ee.Date.fromYMD(1983, 1, 1)
finish = ee.Date.fromYMD(2019, 1, 1)
#rename the OLI images
l8_bandlist = ee.List(['B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'B10', 'pixel_qa'])
rename_list = ee.List(['blue', 'green', 'red', 'nir', 'swir1', 'swir2', 'tbb', 'qa'])
#build the image collection
l8_sr = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR').filter(
ee.Filter.eq('WRS_PATH', path)).filter(ee.Filter.eq('WRS_ROW', row)).filterDate(
start, finish).select(l8_bandlist, rename_list).sort('system:time_start')
# using shapefile to restrict the area of interest
shp = ee.FeatureCollection('users/myzhenghrsc/testarea').geometry()
#reduce the region restricted by uploaded shapfile into points correspond to OLI pixels
dictionary = ee.Image.pixelLonLat().reduceRegion(
reducer=ee.Reducer.toCollection(['longitude', 'latitude']),
geometry=shp,
scale=30)
#function to build the piont featureCollection
def __rebuildpoints(feature):
lon = feature.get('longitude'),
lat = feature.get('latitude'),
return ee.Feature(ee.Geometry.Point([lon, lat])),
'featureID':
ee.Number(lon).multiply(1000).round().format('%5.0f').cat('_').cat(
ee.Number(lat).multiply(1000).round().format('%5.0f'))
#perform the function above
points = ee.FeatureCollection(dictionary.get('features')).map(__rebuildpoints)
def triplets(image):
def feature(value):
return value.set(
'imageID': pointvalue.id(),
'timeMillis': pointvalue.get('system:time_start')
)
pointvalue = image.reduceRegion(
'collection': points,
'reducer': ee.Reducer.first().setOutputs(image.bandNames()),
'scale': 30
)
return pointvalue
turplets = l8_sr.select('red').map(triplets)
def newformat(table, rowId, colId, rowProperty, colProperty):
rows = table.distinct(rowId),
joined = ee.Join.saveAll('matches').apply(
primary=rows,
secondary=table,
condition=ee.Filter.equals(
leftField=rowId,
rightField=colId
)
)
def __row(row):
def __feature(feature):
feature = ee.Feature(feature),
return [feature.get(colId), feature.get(colProperty)].flatten()
values = ee.List(row.get('matches')).map(__feature)
return row.select([rowId, rowProperty]).set(ee.Dictionary(values))
return joined.map(__row)
results = newformat(triplets, 'imageID', 'featureID', 'timemillis', 'RED')
But i got a error as follows when i perform this code:
Invalid argument specified for ee.Number(): ee.ComputedObject(
"type": "Invocation",
"arguments":
"object":
"type": "ArgumentRef",
"value": null
,
"property": "longitude"
,
"functionName": "Element.get"
)
google-earth-engine time-series
google-earth-engine time-series
edited Apr 9 at 23:22
Rodrigo E. Principe
4,32611021
4,32611021
asked Apr 8 at 13:50
myzhenghrmyzhenghr
84
84
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "79"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f318123%2fextracting-time-series-from-image-collection-in-google-earth-engine%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Geographic Information Systems Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f318123%2fextracting-time-series-from-image-collection-in-google-earth-engine%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown