当前位置:   article > 正文

项目 使用HBase进行NOAA OISST 海洋表面温度 数据集存储 数据可视化_js海洋温度热力图

js海洋温度热力图

        GEE中包含了完整的OISST 海温数据,考虑GEE。        

        GEE国内资料较少,考虑官方教程即可

        以81年到19年的NOAA OISST 海洋表面温度为例(制作出来的是动态海洋热力图)

        

        GEE使用js语言,规则和js基本一致,但是在处理数据集时也做了filter等更加方便地补充,上图代码如下:

  1. // Define an area of interest geometry with a global non-polar extent.
  2. var aoi = ee.Geometry.Polygon(
  3. [[[-179.0, 78.0], [-179.0, -58.0], [179.0, -58.0], [179.0, 78.0]]], null,
  4. false);
  5. var geometry = /* color: #d63000 */ee.Geometry.Point([3.663621145272657, -42.364883474766835]);
  6. // Import hourly predicted temperature image collection for northern winter
  7. // solstice. Note that predictions extend for 384 hours; limit the collection
  8. // to the first 24 hours.
  9. var tempCol = ee.ImageCollection('NOAA/CDR/OISST/V2_1')
  10. // .filterDate('2018-12-1', '2018-12-23')
  11. // .limit(24)
  12. // .select('sst');
  13. // .filterDate('2017-01-01', '2017-12-31')
  14. .filter(ee.Filter.calendarRange(1981,2019,'year'))
  15. .filter(ee.Filter.calendarRange(3,3,'month'))
  16. .filter(ee.Filter.calendarRange(15,15,'DAY_OF_MONTH'))
  17. // .filter(ee.Filter.calendarRange(1,12,'month'))
  18. // .mean()
  19. .select('sst');
  20. print(tempCol)
  21. // Define arguments for animation function parameters.
  22. var videoArgs = {
  23. dimensions: 768,
  24. region: aoi,
  25. framesPerSecond: 5,
  26. crs: 'EPSG:3857',
  27. };
  28. var text = require('users/gena/packages:text'); // Import gena's package which allows text overlay on image
  29. var annotations = [
  30. {position: 'right', offset: '1%', margin: '1%', property: 'label', scale: 200000} //large scale because image if of the whole world. Use smaller scale otherwise
  31. ]
  32. function addText(image){
  33. // var timeStamp = ee.Number(image.get(Date)).toByte(); // get the time stamp of each frame. This can be any string. Date, Years, Hours, etc.
  34. // var timeStamp = ee.String('Forecast: ').cat(ee.String(timeStamp)).cat(ee.String(' hours')); //convert time stamp to string
  35. var timeStamp = ee.String('Observe: ').cat(ee.String(image.get('system:index')).slice(0,4)).cat(ee.String(' years'));
  36. var image = image.visualize({ //convert each frame to RGB image explicitly since it is a 1 band image
  37. forceRgbOutput: true,
  38. min: -180.0,
  39. max: 3000.0,
  40. palette: ['blue', 'purple', 'cyan', 'green', 'yellow', 'red']
  41. }).set({'label':timeStamp}); // set a property called label for each image
  42. var annotated = text.annotateImage(image, {}, geometry, annotations); // create a new image with the label overlayed using gena's package
  43. return annotated
  44. }
  45. var tempCol = tempCol.map(addText) //add time stamp to all images
  46. print(tempCol)
  47. print(ui.Thumbnail(tempCol, videoArgs)); //print gif

        语法规则基本和js一致。

        接下来以一年内海洋变化为例,考虑可视化的更多优化方法:        

  1. // Define an area of interest geometry with a global non-polar extent.
  2. var aoi = ee.Geometry.Polygon(
  3. [[[-179.0, 78.0], [-179.0, -58.0], [179.0, -58.0], [179.0, 78.0]]], null,
  4. false);
  5. var geometry = /* color: #d63000 */ee.Geometry.Point([19.663621145272657, -42.364883474766835]);
  6. // Import hourly predicted temperature image collection for northern winter
  7. // solstice. Note that predictions extend for 384 hours; limit the collection
  8. // to the first 24 hours.
  9. var tempCol = ee.ImageCollection('NOAA/CDR/OISST/V2_1')
  10. // .filterDate('2018-12-1', '2018-12-23')
  11. // .limit(24)
  12. // .select('sst');
  13. // .filterDate('2017-01-01', '2017-12-31')
  14. .filter(ee.Filter.calendarRange(2017,2017,'year'))
  15. .filter(ee.Filter.calendarRange(15,15,'DAY_OF_MONTH'))
  16. // .filter(ee.Filter.calendarRange(1,12,'month'))
  17. // .mean()
  18. .limit(24)
  19. .select('sst');
  20. print(tempCol)
  21. // Define arguments for animation function parameters.
  22. var videoArgs = {
  23. dimensions: 768,
  24. region: aoi,
  25. framesPerSecond: 7,
  26. crs: 'EPSG:3857',
  27. };
  28. var text = require('users/gena/packages:text'); // Import gena's package which allows text overlay on image
  29. var annotations = [
  30. {position: 'right', offset: '1%', margin: '1%', property: 'label', scale: 200000} //large scale because image if of the whole world. Use smaller scale otherwise
  31. ]
  32. function addText(image){
  33. // var timeStamp = ee.Number(image.get(Date)).toByte(); // get the time stamp of each frame. This can be any string. Date, Years, Hours, etc.
  34. // var timeStamp = ee.String('Forecast: ').cat(ee.String(timeStamp)).cat(ee.String(' hours')); //convert time stamp to string
  35. var timeStamp = ee.String('Observe: ').cat(ee.String(image.get('system:index')).slice(4,6)).cat(ee.String(' months'));
  36. var image = image.visualize({ //convert each frame to RGB image explicitly since it is a 1 band image
  37. forceRgbOutput: true,
  38. min: -180.0,
  39. max: 3000.0,
  40. palette: ['blue', 'purple', 'cyan', 'green', 'yellow', 'red']
  41. }).set({'label':timeStamp}); // set a property called label for each image
  42. var annotated = text.annotateImage(image, {}, geometry, annotations); // create a new image with the label overlayed using gena's package
  43. return annotated
  44. }
  45. var tempCol = tempCol.map(addText) //add time stamp to all images
  46. print(tempCol)
  47. print(ui.Thumbnail(tempCol, videoArgs)); //print gif

        这样的可视化方法并不平滑,可以考虑使用更多数据处理的方法使图像更加平滑。

        效果图:

        

        

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/856661
推荐阅读
相关标签
  

闽ICP备14008679号