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;








1















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"
)











share|improve this question






























    1















    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"
    )











    share|improve this question


























      1












      1








      1








      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"
      )











      share|improve this question
















      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






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Apr 9 at 23:22









      Rodrigo E. Principe

      4,32611021




      4,32611021










      asked Apr 8 at 13:50









      myzhenghrmyzhenghr

      84




      84




















          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
          );



          );













          draft saved

          draft discarded


















          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















          draft saved

          draft discarded
















































          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.




          draft saved


          draft discarded














          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





















































          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







          Popular posts from this blog

          រឿង រ៉ូមេអូ និង ហ្ស៊ុយលីយេ សង្ខេបរឿង តួអង្គ បញ្ជីណែនាំ

          Crop image to path created in TikZ? Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)Crop an inserted image?TikZ pictures does not appear in posterImage behind and beyond crop marks?Tikz picture as large as possible on A4 PageTransparency vs image compression dilemmaHow to crop background from image automatically?Image does not cropTikzexternal capturing crop marks when externalizing pgfplots?How to include image path that contains a dollar signCrop image with left size given

          Romeo and Juliet ContentsCharactersSynopsisSourcesDate and textThemes and motifsCriticism and interpretationLegacyScene by sceneSee alsoNotes and referencesSourcesExternal linksNavigation menu"Consumer Price Index (estimate) 1800–"10.2307/28710160037-3222287101610.1093/res/II.5.31910.2307/45967845967810.2307/2869925286992510.1525/jams.1982.35.3.03a00050"Dada Masilo: South African dancer who breaks the rules"10.1093/res/os-XV.57.1610.2307/28680942868094"Sweet Sorrow: Mann-Korman's Romeo and Juliet Closes Sept. 5 at MN's Ordway"the original10.2307/45957745957710.1017/CCOL0521570476.009"Ram Leela box office collections hit massive Rs 100 crore, pulverises prediction"Archived"Broadway Revival of Romeo and Juliet, Starring Orlando Bloom and Condola Rashad, Will Close Dec. 8"Archived10.1075/jhp.7.1.04hon"Wherefore art thou, Romeo? To make us laugh at Navy Pier"the original10.1093/gmo/9781561592630.article.O006772"Ram-leela Review Roundup: Critics Hail Film as Best Adaptation of Romeo and Juliet"Archived10.2307/31946310047-77293194631"Romeo and Juliet get Twitter treatment""Juliet's Nurse by Lois Leveen""Romeo and Juliet: Orlando Bloom's Broadway Debut Released in Theaters for Valentine's Day"Archived"Romeo and Juliet Has No Balcony"10.1093/gmo/9781561592630.article.O00778110.2307/2867423286742310.1076/enst.82.2.115.959510.1080/00138380601042675"A plague o' both your houses: error in GCSE exam paper forces apology""Juliet of the Five O'Clock Shadow, and Other Wonders"10.2307/33912430027-4321339124310.2307/28487440038-7134284874410.2307/29123140149-661129123144728341M"Weekender Guide: Shakespeare on The Drive""balcony"UK public library membership"romeo"UK public library membership10.1017/CCOL9780521844291"Post-Zionist Critique on Israel and the Palestinians Part III: Popular Culture"10.2307/25379071533-86140377-919X2537907"Capulets and Montagues: UK exam board admit mixing names up in Romeo and Juliet paper"Istoria Novellamente Ritrovata di Due Nobili Amanti2027/mdp.390150822329610820-750X"GCSE exam error: Board accidentally rewrites Shakespeare"10.2307/29176390149-66112917639"Exam board apologises after error in English GCSE paper which confused characters in Shakespeare's Romeo and Juliet""From Mariotto and Ganozza to Romeo and Guilietta: Metamorphoses of a Renaissance Tale"10.2307/37323537323510.2307/2867455286745510.2307/28678912867891"10 Questions for Taylor Swift"10.2307/28680922868092"Haymarket Theatre""The Zeffirelli Way: Revealing Talk by Florentine Director""Michael Smuin: 1938-2007 / Prolific dance director had showy career"The Life and Art of Edwin BoothRomeo and JulietRomeo and JulietRomeo and JulietRomeo and JulietEasy Read Romeo and JulietRomeo and Julieteeecb12003684p(data)4099369-3n8211610759dbe00d-a9e2-41a3-b2c1-977dd692899302814385X313670221313670221