mirror of
				https://github.com/giswqs/earthengine-py-notebooks.git
				synced 2022-05-07 18:24:49 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			93 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # %%
 | |
| """
 | |
| <table class="ee-notebook-buttons" align="left">
 | |
|     <td><a target="_blank"  href="https://github.com/giswqs/earthengine-py-notebooks/tree/master/Algorithms/CloudMasking/sentinel-2.ipynb"><img width=32px src="https://www.tensorflow.org/images/GitHub-Mark-32px.png" /> View source on GitHub</a></td>
 | |
|     <td><a target="_blank"  href="https://nbviewer.jupyter.org/github/giswqs/earthengine-py-notebooks/blob/master/Algorithms/CloudMasking/sentinel-2.ipynb"><img width=26px src="https://upload.wikimedia.org/wikipedia/commons/thumb/3/38/Jupyter_logo.svg/883px-Jupyter_logo.svg.png" />Notebook Viewer</a></td>
 | |
|     <td><a target="_blank"  href="https://colab.research.google.com/github/giswqs/earthengine-py-notebooks/blob/master/Algorithms/CloudMasking/sentinel-2.ipynb"><img src="https://www.tensorflow.org/images/colab_logo_32px.png" /> Run in Google Colab</a></td>
 | |
| </table>
 | |
| """
 | |
| 
 | |
| # %%
 | |
| """
 | |
| ## Install Earth Engine API and geemap
 | |
| Install the [Earth Engine Python API](https://developers.google.com/earth-engine/python_install) and [geemap](https://geemap.org). The **geemap** Python package is built upon the [ipyleaflet](https://github.com/jupyter-widgets/ipyleaflet) and [folium](https://github.com/python-visualization/folium) packages and implements several methods for interacting with Earth Engine data layers, such as `Map.addLayer()`, `Map.setCenter()`, and `Map.centerObject()`.
 | |
| The following script checks if the geemap package has been installed. If not, it will install geemap, which automatically installs its [dependencies](https://github.com/giswqs/geemap#dependencies), including earthengine-api, folium, and ipyleaflet.
 | |
| """
 | |
| 
 | |
| # %%
 | |
| # Installs geemap package
 | |
| import subprocess
 | |
| 
 | |
| try:
 | |
|     import geemap
 | |
| except ImportError:
 | |
|     print('Installing geemap ...')
 | |
|     subprocess.check_call(["python", '-m', 'pip', 'install', 'geemap'])
 | |
| 
 | |
| # %%
 | |
| import ee
 | |
| import geemap
 | |
| 
 | |
| # %%
 | |
| """
 | |
| ## Create an interactive map 
 | |
| The default basemap is `Google Maps`. [Additional basemaps](https://github.com/giswqs/geemap/blob/master/geemap/basemaps.py) can be added using the `Map.add_basemap()` function. 
 | |
| """
 | |
| 
 | |
| # %%
 | |
| Map = geemap.Map(center=[40,-100], zoom=4)
 | |
| Map
 | |
| 
 | |
| # %%
 | |
| """
 | |
| ## Add Earth Engine Python script 
 | |
| """
 | |
| 
 | |
| # %%
 | |
| # Add Earth Engine dataset
 | |
| # This example uses the Sentinel-2 QA band to cloud mask
 | |
| # the collection.  The Sentinel-2 cloud flags are less
 | |
| # selective, so the collection is also pre-filtered by the
 | |
| # CLOUDY_PIXEL_PERCENTAGE flag, to use only relatively
 | |
| # cloud-free granule.
 | |
| 
 | |
| # Function to mask clouds using the Sentinel-2 QA band.
 | |
| # function maskS2clouds(image) {
 | |
| def maskS2clouds(image):
 | |
|   qa = image.select('QA60')
 | |
| 
 | |
|   # Bits 10 and 11 are clouds and cirrus, respectively.
 | |
|   cloudBitMask = 1 << 10
 | |
|   cirrusBitMask = 1 << 11
 | |
| 
 | |
|   # Both flags should be set to zero, indicating clear conditions.
 | |
|   mask = qa.bitwiseAnd(cloudBitMask).eq(0).And(
 | |
|              qa.bitwiseAnd(cirrusBitMask).eq(0))
 | |
| 
 | |
|   # Return the masked and scaled data, without the QA bands.
 | |
|   return image.updateMask(mask).divide(10000) \
 | |
|       .select("B.*") \
 | |
|       .copyProperties(image, ["system:time_start"])
 | |
| # }
 | |
| 
 | |
| # Map the function over one year of data and take the median.
 | |
| # Load Sentinel-2 TOA reflectance data.
 | |
| collection = ee.ImageCollection('COPERNICUS/S2') \
 | |
|     .filterDate('2016-01-01', '2016-12-31') \
 | |
|     .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20)) \
 | |
|     .map(maskS2clouds)
 | |
| 
 | |
| composite = collection.median()
 | |
| 
 | |
| # Display the results.
 | |
| Map.addLayer(composite, {'bands': ['B4', 'B3', 'B2'], 'min': 0, 'max': 0.3}, 'RGB')
 | |
| 
 | |
| 
 | |
| # %%
 | |
| """
 | |
| ## Display Earth Engine data layers 
 | |
| """
 | |
| 
 | |
| # %%
 | |
| Map.addLayerControl() # This line is not needed for ipyleaflet-based Map.
 | |
| Map | 
