Spaces:
Running
Running
Commit
·
399c5f6
1
Parent(s):
72e288a
Upload MODIS_NDVI_A year.ipynb
Browse files
notebooks/MODIS_NDVI_A year.ipynb
ADDED
@@ -0,0 +1,381 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"cells": [
|
3 |
+
{
|
4 |
+
"cell_type": "code",
|
5 |
+
"execution_count": null,
|
6 |
+
"id": "3d55b3a5",
|
7 |
+
"metadata": {},
|
8 |
+
"outputs": [],
|
9 |
+
"source": [
|
10 |
+
"ee.Authenticate() ### authenticate to google earth engine"
|
11 |
+
]
|
12 |
+
},
|
13 |
+
{
|
14 |
+
"cell_type": "code",
|
15 |
+
"execution_count": 12,
|
16 |
+
"id": "b2a68706",
|
17 |
+
"metadata": {},
|
18 |
+
"outputs": [],
|
19 |
+
"source": [
|
20 |
+
"# Initialize geemap\n",
|
21 |
+
"geemap.ee_initialize()"
|
22 |
+
]
|
23 |
+
},
|
24 |
+
{
|
25 |
+
"cell_type": "code",
|
26 |
+
"execution_count": null,
|
27 |
+
"id": "cc548866",
|
28 |
+
"metadata": {},
|
29 |
+
"outputs": [
|
30 |
+
{
|
31 |
+
"name": "stdout",
|
32 |
+
"output_type": "stream",
|
33 |
+
"text": [
|
34 |
+
"Generating URL ...\n",
|
35 |
+
"Downloading data from https://earthengine.googleapis.com/v1/projects/earthengine-legacy/thumbnails/66982d5e1e5ace8c58edb50649b9e90d-1e765a1d78eb6bb6c9b5e8db80dd82a5:getPixels\n",
|
36 |
+
"Please wait ...\n",
|
37 |
+
"Data downloaded to C:\\Users\\Sayed\\Desktop\\Hawaii NDVI\\NDVI final\\New folder\\New folder (2)\\bi\\bi_NDVI_20230914.tif\n",
|
38 |
+
"Generating URL ...\n",
|
39 |
+
"Downloading data from https://earthengine.googleapis.com/v1/projects/earthengine-legacy/thumbnails/077304d9e50c291342c68d933992bb82-09ba9cab3f2dfa2a5c2dddfd049ce0b4:getPixels\n",
|
40 |
+
"Please wait ...\n",
|
41 |
+
"Data downloaded to C:\\Users\\Sayed\\Desktop\\Hawaii NDVI\\NDVI final\\New folder\\New folder (2)\\bi\\bi_NDVI_20230915.tif\n",
|
42 |
+
"Generating URL ...\n",
|
43 |
+
"Downloading data from https://earthengine.googleapis.com/v1/projects/earthengine-legacy/thumbnails/39c75ba2b71724d64161e22ae7fbdf4a-cb3f8431ba228c14f098fe6b9f313563:getPixels\n",
|
44 |
+
"Please wait ...\n",
|
45 |
+
"Data downloaded to C:\\Users\\Sayed\\Desktop\\Hawaii NDVI\\NDVI final\\New folder\\New folder (2)\\bi\\bi_NDVI_20230916.tif\n",
|
46 |
+
"Generating URL ...\n",
|
47 |
+
"Downloading data from https://earthengine.googleapis.com/v1/projects/earthengine-legacy/thumbnails/7413fd0b2acedde8acf9a26cdc46e956-e74e6910b0b930be181cc1d1b178ff75:getPixels\n",
|
48 |
+
"Please wait ...\n",
|
49 |
+
"Data downloaded to C:\\Users\\Sayed\\Desktop\\Hawaii NDVI\\NDVI final\\New folder\\New folder (2)\\bi\\bi_NDVI_20230917.tif\n",
|
50 |
+
"Generating URL ...\n",
|
51 |
+
"Downloading data from https://earthengine.googleapis.com/v1/projects/earthengine-legacy/thumbnails/89de084e2442303c937d886cd288bbe5-cf330ca0f89090e4fb1441e25920425d:getPixels\n",
|
52 |
+
"Please wait ...\n",
|
53 |
+
"Data downloaded to C:\\Users\\Sayed\\Desktop\\Hawaii NDVI\\NDVI final\\New folder\\New folder (2)\\bi\\bi_NDVI_20230918.tif\n",
|
54 |
+
"Generating URL ...\n",
|
55 |
+
"Downloading data from https://earthengine.googleapis.com/v1/projects/earthengine-legacy/thumbnails/f12f12d390e0bc2952ee91d9c21fef81-587b960ac780037dbc84303254119fc9:getPixels\n",
|
56 |
+
"Please wait ...\n",
|
57 |
+
"Data downloaded to C:\\Users\\Sayed\\Desktop\\Hawaii NDVI\\NDVI final\\New folder\\New folder (2)\\bi\\bi_NDVI_20230919.tif\n",
|
58 |
+
"Generating URL ...\n",
|
59 |
+
"Downloading data from https://earthengine.googleapis.com/v1/projects/earthengine-legacy/thumbnails/512ac1a414670714edbe762738ff6651-54172f5fc989452d640d9c82a1eceebb:getPixels\n",
|
60 |
+
"Please wait ...\n",
|
61 |
+
"Data downloaded to C:\\Users\\Sayed\\Desktop\\Hawaii NDVI\\NDVI final\\New folder\\New folder (2)\\bi\\bi_NDVI_20230920.tif\n",
|
62 |
+
"Generating URL ...\n",
|
63 |
+
"Downloading data from https://earthengine.googleapis.com/v1/projects/earthengine-legacy/thumbnails/7d37d74e076e694963ebb999882ef622-149bf9dcff823079302eab275921430e:getPixels\n",
|
64 |
+
"Please wait ...\n",
|
65 |
+
"Data downloaded to C:\\Users\\Sayed\\Desktop\\Hawaii NDVI\\NDVI final\\New folder\\New folder (2)\\bi\\bi_NDVI_20230921.tif\n",
|
66 |
+
"Generating URL ...\n",
|
67 |
+
"Downloading data from https://earthengine.googleapis.com/v1/projects/earthengine-legacy/thumbnails/a62a89cad3b7e2215144f552040b0366-eeb4a8213b2a1e03de7e3c6b6f8dce86:getPixels\n",
|
68 |
+
"Please wait ...\n",
|
69 |
+
"File is not a zip file\n"
|
70 |
+
]
|
71 |
+
}
|
72 |
+
],
|
73 |
+
"source": [
|
74 |
+
"import geemap ### packge for google earth engine analysis \n",
|
75 |
+
"\n",
|
76 |
+
"import ee ### packge neccsary for using geemap\n",
|
77 |
+
"import os \n",
|
78 |
+
"\n",
|
79 |
+
"\n",
|
80 |
+
"# Create a list of extents\n",
|
81 |
+
"extents = [\n",
|
82 |
+
" {\n",
|
83 |
+
" 'name': 'bi',\n",
|
84 |
+
" 'geometry': ee.Geometry.Polygon([[[-154.668, 18.849],[-154.668, 20.334],[-156.243, 20.334],[-156.243, 18.849]]]),\n",
|
85 |
+
" },\n",
|
86 |
+
" {\n",
|
87 |
+
" 'name': 'ka',\n",
|
88 |
+
" 'geometry': ee.Geometry.Polygon([[[-159.2512, 21.819],[-159.2512, 22.269],[-159.816, 22.269],[-159.816, 21.819]]]),\n",
|
89 |
+
" },\n",
|
90 |
+
" {\n",
|
91 |
+
" 'name': 'mn',\n",
|
92 |
+
" 'geometry': ee.Geometry.Polygon([[[-155.9257, 20.343],[-155.9257, 21.32175],[-157.35, 21.32175],[-157.35, 20.343]]]),\n",
|
93 |
+
" },\n",
|
94 |
+
" {\n",
|
95 |
+
" 'name': 'oa',\n",
|
96 |
+
" 'geometry': ee.Geometry.Polygon([[[-157.602, 21.18],[-157.602, 21.7425],[-158.322, 21.7425],[-158.322, 21.18]]]),\n",
|
97 |
+
" }\n",
|
98 |
+
"]\n",
|
99 |
+
"\n",
|
100 |
+
"# Loop through each extent\n",
|
101 |
+
"for extent in extents:\n",
|
102 |
+
" # Create a Map for visualization\n",
|
103 |
+
" Map = geemap.Map()\n",
|
104 |
+
" Map.centerObject(extent['geometry'])\n",
|
105 |
+
" Map.addLayer(extent['geometry'], {'color': 'red'}, extent['name'])\n",
|
106 |
+
"\n",
|
107 |
+
" # Load MODIS data\n",
|
108 |
+
" modis = ee.ImageCollection('MODIS/061/MOD09GA')\n",
|
109 |
+
"\n",
|
110 |
+
" # Define date range and other parameters\n",
|
111 |
+
" startDate = ee.Date('2023-09-01')\n",
|
112 |
+
" endDate = ee.Date('2023-09-30')\n",
|
113 |
+
" interval = 1\n",
|
114 |
+
" dates = ee.List.sequence(startDate.millis(), endDate.millis(), interval * 24 * 60 * 60 * 1000)\n",
|
115 |
+
"\n",
|
116 |
+
" # Loop over the dates\n",
|
117 |
+
" date_list = dates.getInfo()\n",
|
118 |
+
" for dateMillis in date_list:\n",
|
119 |
+
" date = ee.Date(dateMillis)\n",
|
120 |
+
"\n",
|
121 |
+
" # Filter the collection for the current date and extent\n",
|
122 |
+
" filtered = modis.filterDate(date, date.advance(interval, 'day')).filterBounds(extent['geometry'])\n",
|
123 |
+
"\n",
|
124 |
+
" # Cloud masking function\n",
|
125 |
+
" def maskMODISclouds(image):\n",
|
126 |
+
" qa = image.select('state_1km')\n",
|
127 |
+
" cloudBitMask = 1 << 10\n",
|
128 |
+
" mask = qa.bitwiseAnd(cloudBitMask).eq(0)\n",
|
129 |
+
" return image.updateMask(mask)\n",
|
130 |
+
"\n",
|
131 |
+
" filtered1 = filtered.map(maskMODISclouds)\n",
|
132 |
+
"\n",
|
133 |
+
" # NDVI calculation function\n",
|
134 |
+
" def addNDVI(image):\n",
|
135 |
+
" ndvi = image.normalizedDifference(['sur_refl_b02', 'sur_refl_b01']).rename('ndvi')\n",
|
136 |
+
" return image.addBands(ndvi)\n",
|
137 |
+
"\n",
|
138 |
+
" withNdvi = filtered1.map(addNDVI)\n",
|
139 |
+
"\n",
|
140 |
+
" # Gap-filling function\n",
|
141 |
+
" def fill(image):\n",
|
142 |
+
" ima = image.focal_mean(1, 'square', 'pixels', 20)\n",
|
143 |
+
" return ima.blend(image)\n",
|
144 |
+
"\n",
|
145 |
+
" filled = withNdvi.map(fill)\n",
|
146 |
+
"\n",
|
147 |
+
" # Clip NDVI based on the extent\n",
|
148 |
+
" NDVIsen = filled.median().clip(extent['geometry'])\n",
|
149 |
+
"# Create a folder based on the extent's name\n",
|
150 |
+
" folder_name = extent['name']\n",
|
151 |
+
" out_dir = os.path.expanduser(f'C:/Users/Sayed\\Desktop/Hawaii NDVI/NDVI final/New folder/New folder (2)/{folder_name}')\n",
|
152 |
+
" \n",
|
153 |
+
" # Ensure the folder exists or create it if not\n",
|
154 |
+
" os.makedirs(out_dir, exist_ok=True)\n",
|
155 |
+
"\n",
|
156 |
+
" # Export the image to the folder with a unique name\n",
|
157 |
+
" file_name = f'{extent[\"name\"]}_NDVI_{date.format(\"YYYYMMdd\").getInfo()}.tif'\n",
|
158 |
+
" file_path = os.path.join(out_dir, file_name)\n",
|
159 |
+
"\n",
|
160 |
+
" geemap.ee_export_image(NDVIsen.select('ndvi'), filename=file_path, scale=250, region=extent['geometry'])"
|
161 |
+
]
|
162 |
+
},
|
163 |
+
{
|
164 |
+
"cell_type": "code",
|
165 |
+
"execution_count": null,
|
166 |
+
"id": "4e1a743a",
|
167 |
+
"metadata": {},
|
168 |
+
"outputs": [],
|
169 |
+
"source": [
|
170 |
+
"# Initialize MODIS ImageCollection\n",
|
171 |
+
"modis = ee.ImageCollection('MODIS/061/MYD09Q1')\n",
|
172 |
+
"image = modis.first()\n",
|
173 |
+
"print(image.bandNames().getInfo())"
|
174 |
+
]
|
175 |
+
},
|
176 |
+
{
|
177 |
+
"cell_type": "code",
|
178 |
+
"execution_count": 9,
|
179 |
+
"id": "46d90d65",
|
180 |
+
"metadata": {},
|
181 |
+
"outputs": [
|
182 |
+
{
|
183 |
+
"name": "stdout",
|
184 |
+
"output_type": "stream",
|
185 |
+
"text": [
|
186 |
+
"Generating URL ...\n",
|
187 |
+
"Downloading data from https://earthengine.googleapis.com/v1/projects/earthengine-legacy/thumbnails/9e5a57dfa1c5398d2b047640752030cc-0773e965f12868558f067b9363da1f4d:getPixels\n",
|
188 |
+
"Please wait ...\n",
|
189 |
+
"Data downloaded to C:\\Users\\Sayed\\Desktop\\Hawaii NDVI\\NDVI final\\New folder\\New folder\\bi\\bi_NDVI_20230829.tif\n",
|
190 |
+
"Generating URL ...\n",
|
191 |
+
"Downloading data from https://earthengine.googleapis.com/v1/projects/earthengine-legacy/thumbnails/695d02d2d9a1d238a648201f29482e6d-082c66feb81f1411239d8580ebe69916:getPixels\n",
|
192 |
+
"Please wait ...\n",
|
193 |
+
"Data downloaded to C:\\Users\\Sayed\\Desktop\\Hawaii NDVI\\NDVI final\\New folder\\New folder\\bi\\bi_NDVI_20230906.tif\n",
|
194 |
+
"Generating URL ...\n",
|
195 |
+
"Downloading data from https://earthengine.googleapis.com/v1/projects/earthengine-legacy/thumbnails/dc0d4371bd0f54ecd7bd08b4050d350e-e04df5559bf7105089922a89e3fc39f1:getPixels\n",
|
196 |
+
"Please wait ...\n",
|
197 |
+
"Data downloaded to C:\\Users\\Sayed\\Desktop\\Hawaii NDVI\\NDVI final\\New folder\\New folder\\bi\\bi_NDVI_20230914.tif\n",
|
198 |
+
"Generating URL ...\n",
|
199 |
+
"An error occurred while downloading.\n",
|
200 |
+
"Image.select: Pattern 'ndvi' did not match any bands.\n",
|
201 |
+
"Generating URL ...\n",
|
202 |
+
"An error occurred while downloading.\n",
|
203 |
+
"Image.select: Pattern 'ndvi' did not match any bands.\n",
|
204 |
+
"Generating URL ...\n",
|
205 |
+
"Downloading data from https://earthengine.googleapis.com/v1/projects/earthengine-legacy/thumbnails/6dc3b845d4e2b672f0b6253846f8120b-33bf749d4384a7b39f219607899649ce:getPixels\n",
|
206 |
+
"Please wait ...\n",
|
207 |
+
"Data downloaded to C:\\Users\\Sayed\\Desktop\\Hawaii NDVI\\NDVI final\\New folder\\New folder\\ka\\ka_NDVI_20230829.tif\n",
|
208 |
+
"Generating URL ...\n",
|
209 |
+
"Downloading data from https://earthengine.googleapis.com/v1/projects/earthengine-legacy/thumbnails/f1c86dc2354f4566a41bf2124408e7b5-fb1cfdad37f86b050cc3a154dd40a275:getPixels\n",
|
210 |
+
"Please wait ...\n",
|
211 |
+
"Data downloaded to C:\\Users\\Sayed\\Desktop\\Hawaii NDVI\\NDVI final\\New folder\\New folder\\ka\\ka_NDVI_20230906.tif\n",
|
212 |
+
"Generating URL ...\n",
|
213 |
+
"Downloading data from https://earthengine.googleapis.com/v1/projects/earthengine-legacy/thumbnails/303aad18ead090b31bfde52106f09c31-dac34f5fa958cec70b2a0bf2ac87d6b0:getPixels\n",
|
214 |
+
"Please wait ...\n",
|
215 |
+
"Data downloaded to C:\\Users\\Sayed\\Desktop\\Hawaii NDVI\\NDVI final\\New folder\\New folder\\ka\\ka_NDVI_20230914.tif\n",
|
216 |
+
"Generating URL ...\n",
|
217 |
+
"An error occurred while downloading.\n",
|
218 |
+
"Image.select: Pattern 'ndvi' did not match any bands.\n",
|
219 |
+
"Generating URL ...\n",
|
220 |
+
"An error occurred while downloading.\n",
|
221 |
+
"Image.select: Pattern 'ndvi' did not match any bands.\n",
|
222 |
+
"Generating URL ...\n",
|
223 |
+
"Downloading data from https://earthengine.googleapis.com/v1/projects/earthengine-legacy/thumbnails/68d45eba564acc8fecfa24289a5bf98a-732b255bd968fc789e41ec03600bd189:getPixels\n",
|
224 |
+
"Please wait ...\n",
|
225 |
+
"Data downloaded to C:\\Users\\Sayed\\Desktop\\Hawaii NDVI\\NDVI final\\New folder\\New folder\\mn\\mn_NDVI_20230829.tif\n",
|
226 |
+
"Generating URL ...\n",
|
227 |
+
"Downloading data from https://earthengine.googleapis.com/v1/projects/earthengine-legacy/thumbnails/ff8353423dfe97fdcf2bd34ee8ec8b10-ec1494020f628890f34a4ddd98e94910:getPixels\n",
|
228 |
+
"Please wait ...\n",
|
229 |
+
"Data downloaded to C:\\Users\\Sayed\\Desktop\\Hawaii NDVI\\NDVI final\\New folder\\New folder\\mn\\mn_NDVI_20230906.tif\n",
|
230 |
+
"Generating URL ...\n",
|
231 |
+
"Downloading data from https://earthengine.googleapis.com/v1/projects/earthengine-legacy/thumbnails/134cebee28cdc4a1c2154749e526c2c8-f5009d388a066834125fca54d186b28f:getPixels\n",
|
232 |
+
"Please wait ...\n",
|
233 |
+
"Data downloaded to C:\\Users\\Sayed\\Desktop\\Hawaii NDVI\\NDVI final\\New folder\\New folder\\mn\\mn_NDVI_20230914.tif\n",
|
234 |
+
"Generating URL ...\n",
|
235 |
+
"An error occurred while downloading.\n",
|
236 |
+
"Image.select: Pattern 'ndvi' did not match any bands.\n",
|
237 |
+
"Generating URL ...\n",
|
238 |
+
"An error occurred while downloading.\n",
|
239 |
+
"Image.select: Pattern 'ndvi' did not match any bands.\n",
|
240 |
+
"Generating URL ...\n",
|
241 |
+
"Downloading data from https://earthengine.googleapis.com/v1/projects/earthengine-legacy/thumbnails/b1d03d3310f9b65031a4945671caac81-7a169784691d0df9981b191764622c01:getPixels\n",
|
242 |
+
"Please wait ...\n",
|
243 |
+
"Data downloaded to C:\\Users\\Sayed\\Desktop\\Hawaii NDVI\\NDVI final\\New folder\\New folder\\oa\\oa_NDVI_20230829.tif\n",
|
244 |
+
"Generating URL ...\n",
|
245 |
+
"Downloading data from https://earthengine.googleapis.com/v1/projects/earthengine-legacy/thumbnails/7c069ce7b240df3719285e6ba3f97d30-c81a2022b8f66280384daa8b05ddb983:getPixels\n",
|
246 |
+
"Please wait ...\n",
|
247 |
+
"Data downloaded to C:\\Users\\Sayed\\Desktop\\Hawaii NDVI\\NDVI final\\New folder\\New folder\\oa\\oa_NDVI_20230906.tif\n",
|
248 |
+
"Generating URL ...\n",
|
249 |
+
"Downloading data from https://earthengine.googleapis.com/v1/projects/earthengine-legacy/thumbnails/cb23fe24eee578f7a2ddb05a73c9d185-62efe1ef80e35797757afbb739bee59f:getPixels\n",
|
250 |
+
"Please wait ...\n",
|
251 |
+
"Data downloaded to C:\\Users\\Sayed\\Desktop\\Hawaii NDVI\\NDVI final\\New folder\\New folder\\oa\\oa_NDVI_20230914.tif\n",
|
252 |
+
"Generating URL ...\n",
|
253 |
+
"An error occurred while downloading.\n",
|
254 |
+
"Image.select: Pattern 'ndvi' did not match any bands.\n",
|
255 |
+
"Generating URL ...\n",
|
256 |
+
"An error occurred while downloading.\n",
|
257 |
+
"Image.select: Pattern 'ndvi' did not match any bands.\n"
|
258 |
+
]
|
259 |
+
}
|
260 |
+
],
|
261 |
+
"source": [
|
262 |
+
"import geemap ### packge for google earth engine analysis \n",
|
263 |
+
"\n",
|
264 |
+
"import ee ### packge neccsary for using geemap\n",
|
265 |
+
"import os \n",
|
266 |
+
"\n",
|
267 |
+
"\n",
|
268 |
+
"# Create a list of extents\n",
|
269 |
+
"extents = [\n",
|
270 |
+
" {\n",
|
271 |
+
" 'name': 'bi',\n",
|
272 |
+
" 'geometry': ee.Geometry.Polygon([[[-154.668, 18.849],[-154.668, 20.334],[-156.243, 20.334],[-156.243, 18.849]]]),\n",
|
273 |
+
" },\n",
|
274 |
+
" {\n",
|
275 |
+
" 'name': 'ka',\n",
|
276 |
+
" 'geometry': ee.Geometry.Polygon([[[-159.2512, 21.819],[-159.2512, 22.269],[-159.816, 22.269],[-159.816, 21.819]]]),\n",
|
277 |
+
" },\n",
|
278 |
+
" {\n",
|
279 |
+
" 'name': 'mn',\n",
|
280 |
+
" 'geometry': ee.Geometry.Polygon([[[-155.9257, 20.343],[-155.9257, 21.32175],[-157.35, 21.32175],[-157.35, 20.343]]]),\n",
|
281 |
+
" },\n",
|
282 |
+
" {\n",
|
283 |
+
" 'name': 'oa',\n",
|
284 |
+
" 'geometry': ee.Geometry.Polygon([[[-157.602, 21.18],[-157.602, 21.7425],[-158.322, 21.7425],[-158.322, 21.18]]]),\n",
|
285 |
+
" }\n",
|
286 |
+
"]\n",
|
287 |
+
"\n",
|
288 |
+
"# Loop through each extent\n",
|
289 |
+
"for extent in extents:\n",
|
290 |
+
" # Create a Map for visualization\n",
|
291 |
+
" Map = geemap.Map()\n",
|
292 |
+
" Map.centerObject(extent['geometry'])\n",
|
293 |
+
" Map.addLayer(extent['geometry'], {'color': 'red'}, extent['name'])\n",
|
294 |
+
"\n",
|
295 |
+
" # Load MODIS data\n",
|
296 |
+
" modis = ee.ImageCollection('MODIS/061/MYD09A1')\n",
|
297 |
+
"\n",
|
298 |
+
" # Define date range and other parameters\n",
|
299 |
+
" startDate = ee.Date('2023-08-29')\n",
|
300 |
+
" endDate = ee.Date('2023-09-30')\n",
|
301 |
+
" interval = 8\n",
|
302 |
+
" dates = ee.List.sequence(startDate.millis(), endDate.millis(), interval * 24 * 60 * 60 * 1000)\n",
|
303 |
+
"\n",
|
304 |
+
" # Loop over the dates\n",
|
305 |
+
" date_list = dates.getInfo()\n",
|
306 |
+
" for dateMillis in date_list:\n",
|
307 |
+
" date = ee.Date(dateMillis)\n",
|
308 |
+
"\n",
|
309 |
+
" # Filter the collection for the current date and extent\n",
|
310 |
+
" filtered = modis.filterDate(date, date.advance(interval, 'day')).filterBounds(extent['geometry'])\n",
|
311 |
+
"\n",
|
312 |
+
" # Cloud masking function\n",
|
313 |
+
" def maskMODISclouds(image):\n",
|
314 |
+
" qa = image.select('StateQA')\n",
|
315 |
+
" cloudBitMask = 1 << 10\n",
|
316 |
+
" mask = qa.bitwiseAnd(cloudBitMask).eq(0)\n",
|
317 |
+
" return image.updateMask(mask)\n",
|
318 |
+
"\n",
|
319 |
+
" filtered1 = filtered.map(maskMODISclouds)\n",
|
320 |
+
"\n",
|
321 |
+
" # NDVI calculation function\n",
|
322 |
+
" def addNDVI(image):\n",
|
323 |
+
" ndvi = image.normalizedDifference(['sur_refl_b02', 'sur_refl_b01']).rename('ndvi')\n",
|
324 |
+
" return image.addBands(ndvi)\n",
|
325 |
+
"\n",
|
326 |
+
" withNdvi = filtered1.map(addNDVI)\n",
|
327 |
+
"\n",
|
328 |
+
" # Gap-filling function\n",
|
329 |
+
" def fill(image):\n",
|
330 |
+
" ima = image.focal_mean(1, 'square', 'pixels', 20)\n",
|
331 |
+
" return ima.blend(image)\n",
|
332 |
+
"\n",
|
333 |
+
" filled = withNdvi.map(fill)\n",
|
334 |
+
"\n",
|
335 |
+
" # Clip NDVI based on the extent\n",
|
336 |
+
" NDVIsen = filled.median().clip(extent['geometry'])\n",
|
337 |
+
"# Create a folder based on the extent's name\n",
|
338 |
+
" folder_name = extent['name']\n",
|
339 |
+
" out_dir = os.path.expanduser(f'C:/Users/Sayed\\Desktop/Hawaii NDVI/NDVI final/New folder/New folder/{folder_name}')\n",
|
340 |
+
" \n",
|
341 |
+
" # Ensure the folder exists or create it if not\n",
|
342 |
+
" os.makedirs(out_dir, exist_ok=True)\n",
|
343 |
+
"\n",
|
344 |
+
" # Export the image to the folder with a unique name\n",
|
345 |
+
" file_name = f'{extent[\"name\"]}_NDVI_{date.format(\"YYYYMMdd\").getInfo()}.tif'\n",
|
346 |
+
" file_path = os.path.join(out_dir, file_name)\n",
|
347 |
+
"\n",
|
348 |
+
" geemap.ee_export_image(NDVIsen.select('ndvi'), filename=file_path, scale=250, region=extent['geometry'])"
|
349 |
+
]
|
350 |
+
},
|
351 |
+
{
|
352 |
+
"cell_type": "code",
|
353 |
+
"execution_count": null,
|
354 |
+
"id": "864adc1d",
|
355 |
+
"metadata": {},
|
356 |
+
"outputs": [],
|
357 |
+
"source": []
|
358 |
+
}
|
359 |
+
],
|
360 |
+
"metadata": {
|
361 |
+
"kernelspec": {
|
362 |
+
"display_name": "Python 3 (ipykernel)",
|
363 |
+
"language": "python",
|
364 |
+
"name": "python3"
|
365 |
+
},
|
366 |
+
"language_info": {
|
367 |
+
"codemirror_mode": {
|
368 |
+
"name": "ipython",
|
369 |
+
"version": 3
|
370 |
+
},
|
371 |
+
"file_extension": ".py",
|
372 |
+
"mimetype": "text/x-python",
|
373 |
+
"name": "python",
|
374 |
+
"nbconvert_exporter": "python",
|
375 |
+
"pygments_lexer": "ipython3",
|
376 |
+
"version": "3.10.10"
|
377 |
+
}
|
378 |
+
},
|
379 |
+
"nbformat": 4,
|
380 |
+
"nbformat_minor": 5
|
381 |
+
}
|