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

          QGIS export composer to PDF scale the map [closed] Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) Announcing the arrival of Valued Associate #679: Cesar Manara Unicorn Meta Zoo #1: Why another podcast?Print Composer QGIS 2.6, how to export image?QGIS 2.8.1 print composer won't export all OpenCycleMap base layer tilesSave Print/Map QGIS composer view as PNG/PDF using Python (without changing anything in visible layout)?Export QGIS Print Composer PDF with searchable text labelsQGIS Print Composer does not change from landscape to portrait orientation?How can I avoid map size and scale changes in print composer?Fuzzy PDF export in QGIS running on macSierra OSExport the legend into its 100% size using Print ComposerScale-dependent rendering in QGIS PDF output