Skip to content

Commit

Permalink
Merge pull request #50 from wildlife-dynamics/ndvi
Browse files Browse the repository at this point in the history
remove hardcoding from std_ndvi_vals()
  • Loading branch information
ericgitonga authored Oct 18, 2023
2 parents ebd1dd5 + 99b4a1f commit 2a4d30d
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 16 deletions.
31 changes: 20 additions & 11 deletions ecoscope/analysis/seasons.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,23 +20,32 @@ def _min_max_scaler(x):
return x_std


def std_ndvi_vals(aoi=None, start=None, end=None):
coll = ee.ImageCollection("MODIS/MCD43A4_006_NDVI").select("NDVI").filterDate(start, end)

ndvi_vals = (
coll.toBands()
.reduceRegion("mean", ee.Feature(shapely.geometry.mapping(aoi)).geometry(), bestEffort=True)
.values()
.getInfo()
def std_ndvi_vals(aoi=None, img_coll=None, band=None, img_scale=1, start=None, end=None):

coll = (
ee.ImageCollection(img_coll)
.select(band)
.filterDate(start, end)
.map(lambda x: x.multiply(ee.Image(img_scale)).set("system:time_start", x.get("system:time_start")))
)
ndvi_vals_std = _min_max_scaler(ndvi_vals)
return pd.DataFrame(

if aoi:
geo = ee.Feature(shapely.geometry.mapping(aoi)).geometry()
else:
geo = None

ndvi_vals = coll.toBands().reduceRegion("mean", geo, bestEffort=True).values().getInfo()

df = pd.DataFrame(
{
"img_date": pd.to_datetime(coll.aggregate_array("system:time_start").getInfo(), unit="ms", utc=True),
"NDVI": ndvi_vals_std,
"NDVI": ndvi_vals,
}
).dropna(axis=0)

df["NDVI"] = _min_max_scaler(df["NDVI"])
return df


def val_cuts(vals, num_seasons=2):
distr = sklearn.mixture.GaussianMixture(n_components=num_seasons, max_iter=500)
Expand Down
2 changes: 1 addition & 1 deletion ecoscope/version.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = "1.4.4"
__version__ = "1.4.5"
26 changes: 22 additions & 4 deletions notebooks/05. Environmental Analyses/Seasonal Calculation.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
"source": [
"ECOSCOPE_RAW = \"https://raw.githubusercontent.com/wildlife-dynamics/ecoscope/master\"\n",
"\n",
"# !pip install ecoscope"
"%pip install ecoscope &> /dev/null"
]
},
{
Expand Down Expand Up @@ -154,8 +154,26 @@
"metadata": {},
"outputs": [],
"source": [
"# Extract the standardized NDVI ndvi_vals within the AOI\n",
"ndvi_vals = seasons.std_ndvi_vals(aoi, start=\"2010-01-01\", end=\"2022-06-18\")\n",
"img_coll = \"MODIS/061/MOD13A1\"\n",
"band = \"NDVI\"\n",
"img_scale = 0.0001\n",
"since_filter = \"2010-01-01\"\n",
"until_filter = \"2022-06-18\"\n",
"\n",
"ndvi_vals = seasons.std_ndvi_vals(\n",
" img_coll=img_coll,\n",
" band=band,\n",
" img_scale=img_scale,\n",
" aoi=aoi,\n",
" start=since_filter,\n",
" end=until_filter,\n",
")\n",
"\n",
"# Calculate the seasonal transition point\n",
"cuts = seasons.val_cuts(ndvi_vals, 2)\n",
"\n",
"# Determine the seasonal time windows\n",
"windows = seasons.seasonal_windows(ndvi_vals, cuts, season_labels=[\"dry\", \"wet\"])\n",
"\n",
"# Calculate the seasonal transition point\n",
"cuts = seasons.val_cuts(ndvi_vals, 2)\n",
Expand Down Expand Up @@ -247,7 +265,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.12"
"version": "3.8.10"
}
},
"nbformat": 4,
Expand Down

0 comments on commit 2a4d30d

Please sign in to comment.