Guest User

Untitled

a guest
Apr 19th, 2018
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.79 KB | None | 0 0
  1. // imports
  2.  
  3. var l8Reflectance = ee.ImageCollection("LANDSAT/LC08/C01/T1_TOA"),
  4. l8Collection = ee.ImageCollection("LANDSAT/LC08/C01/T1_RT"),
  5. Copiapo = /* color: #0b4a8b */ee.Geometry.Point([-70.740966796875, -27.790491224830877]),
  6. DEM = ee.Image("USGS/SRTMGL1_003"),
  7. cloudVisParam = {"opacity":1,"bands":["B1"],"min":1,"palette": ["3888ff","ff0000"]};
  8. var borders = ee.FeatureCollection('ft:1Li-jBAaNhqKaW2WxAPJspU9mvZp4qTtBIuHqOkpB').geometry();
  9. var digitalElevation = ee.Image("USGS/SRTMGL1_003");
  10.  
  11. //filtering image collection to region of choice
  12.  
  13. var chileanLayers = l8Collection.filterBounds(borders);
  14.  
  15. //using the simpleCloudScore function to find areas with clouds
  16.  
  17. var cloudLayers = chileanLayers.map(function(image) {
  18. var cloud = ee.Algorithms.Landsat.simpleCloudScore(image).select('cloud');
  19. return(cloud);
  20. })
  21.  
  22. //selecting images with a cloud score of 60 or more and adding them into 1 image
  23.  
  24. var cloudScoredLayers = cloudLayers.map(function(image) {
  25. var cloudScore = image.select(['cloud']).gte(60);
  26. return(cloudScore);
  27. })
  28. var cloudSum = cloudScoredLayers.sum();
  29.  
  30. //using a different method to create a cloud image by using high reflectance
  31. //values
  32.  
  33. var maxReflectance = l8Reflectance.map(function(image) {
  34. var cloud1Reflectance = image.select('B1');
  35. var cloud2Reflectance = image.select('B2');
  36. var cloud3Reflectance = image.select('B3');
  37. var cloud4Reflectance = image.select('B4');
  38. var cloud5Reflectance = image.select('B5');
  39. var possibleClouds = cloud1Reflectance.add(cloud2Reflectance)
  40. .add(cloud3Reflectance).add(cloud4Reflectance).add(cloud5Reflectance);
  41. var onlyClouds = possibleClouds.gte(4);
  42. return(onlyClouds);
  43. });
  44. var cloudReflectance = maxReflectance.sum();
  45.  
  46. //creating a mask of altitude for the altitude range I want
  47.  
  48. var DEM = DEM.clip(borders);
  49. var desiredMinAltitude = DEM.gte(650);
  50. var desiredMaxAltitude = DEM.gte(900);
  51. var desiredAltitude = desiredMinAltitude.subtract(desiredMaxAltitude);
  52. var desiredAltitude = desiredAltitude.mask(desiredAltitude);
  53.  
  54. //creating 2 binary images for both methods used to calculate clouds, then
  55. //adding them creating an image where a value of 1 shows clouds in either of
  56. //the methods, and a value of 2 shows clouds found in both methods
  57.  
  58. var cloudsAltitude = cloudReflectance.gte(3).mask(desiredAltitude);
  59. var cloudSumAltitude = cloudSum.gte(75).mask(desiredAltitude);
  60. var cloudMean = cloudsAltitude.add(cloudSumAltitude);
  61. var cloudsMasked = cloudMean.eq(0).not();
  62. var cloudResult = cloudMean.mask(cloudsMasked);
  63.  
  64. //centres image and applies visualisation parameters
  65.  
  66. Map.centerObject(Copiapo, 7);
  67. Map.addLayer(cloudResult, cloudVisParam, "Cloud Layer");
  68.  
  69. //with this I tried to calculate the area of all cloud pixels in the
  70. //cloudResult image, this is where the problem begins
  71.  
  72. var area = ee.Image.pixelArea().mask(cloudResult);
  73. var cloudArea = area.multiply(cloudResult.gte(1));
  74. var cloudAreaSqkm = cloudArea.divide(1000000);
  75. var totalCloudArea = cloudAreaSqkm.reduceRegion({
  76. reducer: ee.Reducer.sum(),
  77. geometry: borders,
  78. scale: 1000,
  79. maxPixels: 1e9
  80. });
  81. print("Total Cloud Area: ", totalCloudArea.get('area'), 'sq. km');
  82.  
  83. //this calculates the area of a smaller altitude range than the one before,
  84. //this also causes me some problems
  85.  
  86. var optimalMinAltitude = DEM.gte(700);
  87. var optimalMaxAltitude = DEM.gte(800);
  88. var optimalAltitude = optimalMinAltitude.subtract(optimalMaxAltitude);
  89. var optimalAltitude = optimalAltitude.mask(optimalAltitude);
  90.  
  91. var optimalClouds = cloudResult.mask(optimalAltitude);
  92.  
  93. var optimalCloudArea = area.multiply(optimalClouds.gte(1));
  94. var optimalCloudAreaSqkm = optimalCloudArea.divide(1000000);
  95. var optimalTotalCloudArea = optimalCloudAreaSqkm.reduceRegion({
  96. reducer: ee.Reducer.sum(),
  97. geometry: borders,
  98. scale: 1000,
  99. maxPixels: 1e9
  100. });
  101. print("Optimal Cloud Area:", optimalTotalCloudArea.get('area'), 'sq. km');
Add Comment
Please, Sign In to add comment