<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Nicholas </title>
    <description>The latest articles on DEV Community by Nicholas  (@nicmsn2).</description>
    <link>https://dev.to/nicmsn2</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F492640%2F74f2d299-ea8e-4efd-8bcd-64450fd96a83.jpg</url>
      <title>DEV Community: Nicholas </title>
      <link>https://dev.to/nicmsn2</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nicmsn2"/>
    <language>en</language>
    <item>
      <title>Geospatial Prompt Engineering: A Technical Guide for Google Earth Engine Developers</title>
      <dc:creator>Nicholas </dc:creator>
      <pubDate>Mon, 29 Jun 2026 11:35:24 +0000</pubDate>
      <link>https://dev.to/nicmsn2/geospatial-prompt-engineering-a-technical-guide-for-google-earth-engine-developers-1pbc</link>
      <guid>https://dev.to/nicmsn2/geospatial-prompt-engineering-a-technical-guide-for-google-earth-engine-developers-1pbc</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq7j8ha3a182653l9w4g4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq7j8ha3a182653l9w4g4.png" alt=" " width="799" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Let's Start
&lt;/h3&gt;

&lt;p&gt;Prompt engineering is the technique of designing inputs that guide Large Language Models (LLMs) toward accurate, useful, and structured outputs. At its core, an LLM is a prediction engine — it takes sequential text as input and predicts the most probable next token, iterating this process until a response is complete. The quality of that prediction is directly shaped by the clarity, structure, and context of your prompt.&lt;/p&gt;

&lt;p&gt;For developers working in the geospatial domain — particularly with platforms like Google Earth Engine (GEE) — prompt engineering is a fundamental skill. Geospatial tasks involve complex multi-step pipelines, structured data formats (GeoJSON, FeatureCollections, ImageCollections), domain-specific APIs, and outputs that often need to feed directly into downstream code or analytical systems. &lt;/p&gt;

&lt;p&gt;In this article, we're going to use Google AI Studio, Gemini 3 Flash, and the prompting area as our core Playground environment, where you can prototype ideas dynamically and explore the robust set of advanced configuration tools to master the fundamentals of modern prompt engineering. Whether you are writing your first GEE script or building a production geospatial pipeline, the techniques here will help you work faster, produce cleaner code, and extract more reliable insights from AI assistants. So head over to &lt;a href="https://aistudio.google.com/prompts/new_chat" rel="noopener noreferrer"&gt;Google AI Studio&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  LLM Output System Configuration
&lt;/h3&gt;

&lt;p&gt;Before writing a single prompt, you need to understand how to configure the model itself. The same prompt can produce dramatically different results depending on your sampling settings. There are four key parameters to control.&lt;/p&gt;

&lt;p&gt;Temperature governs randomness in token selection. At temperature 0 (greedy decoding), the model always selects the highest-probability token — output is deterministic and focused. At higher temperatures (approaching 1.0 and beyond), the model explores lower-probability tokens, producing more creative or diverse responses. For geospatial tasks that require precise code or factual answers — such as writing an Earth Engine reducer or parsing a FeatureCollection — temperature 0 is almost always the right choice. For brainstorming variable names, writing a methodology narrative, or generating diverse test cases, a temperature of 0.7–0.9 gives you more variety.&lt;/p&gt;

&lt;p&gt;Top-K restricts token selection to the K most probable candidates at each step. A low top-K (e.g., 10) keeps outputs conservative and factual. A high top-K opens up more vocabulary, which is useful for creative or explanatory writing.&lt;/p&gt;

&lt;p&gt;Top-P (nucleus sampling) selects the smallest set of tokens whose cumulative probability exceeds P. A value of 0.95 is a good general starting point — it allows some creativity without going off the rails.&lt;/p&gt;

&lt;p&gt;Output length (max tokens) limits how many tokens the model generates. This matters especially in geospatial workflows where you might be prompting for structured JSON output: if the token limit is too low, the JSON gets truncated and becomes unparseable. Always set your token limit generously when requesting structured outputs, and consider using a json-repair library in production applications to handle truncation gracefully.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommended system configurations for geospatial tasks:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7qqj9bov1ur3folvj2pb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7qqj9bov1ur3folvj2pb.png" alt=" " width="800" height="473"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Core Prompting Techniques
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Zero-Shot Prompting
&lt;/h4&gt;

&lt;p&gt;A zero-shot prompt gives the model a task description with no examples. It relies entirely on the model's training data to infer the desired output format and content.&lt;/p&gt;

&lt;p&gt;Zero-shot works well for straightforward Earth Engine tasks that are well-represented in the model's training corpus:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Write a Google Earth Engine JavaScript function that filters an ImageCollection by a date range and a bounding box geometry, computes the mean image, and clips it to the geometry.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This is clean, specific, and gives the model enough context to produce working code. Notice the use of an action verb &lt;em&gt;("Write")&lt;/em&gt; and concrete specifications &lt;em&gt;(JavaScript, date range, bounding box, mean, clip)&lt;/em&gt; — all signals that help the model predict the right sequence of tokens.&lt;/p&gt;

&lt;h4&gt;
  
  
  One-Shot and Few-Shot Prompting
&lt;/h4&gt;

&lt;p&gt;Few-shot prompting provides the model with example input-output pairs before presenting the actual task. It is the single most powerful technique available to a prompt engineer. By showing the model what you want rather than just describing it, you anchor its predictions to a concrete pattern.&lt;/p&gt;

&lt;p&gt;For geospatial work, few-shot prompting is especially valuable when you need the model to produce structured outputs like GeoJSON, Earth Engine feature dictionaries, or standardized API call formats. &lt;br&gt;
Let's Few-shot prompting example to parse a region description into Earth Engine geometry JSON&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;`Parse a natural language region description into a valid Earth Engine 
geometry configuration JSON.

EXAMPLE 1:
Input: "A rectangle covering Nairobi, Kenya"
Output:
{
  "type": "Rectangle",
  "coordinates": [36.65, -1.5, 37.1, -1.1],
  "projection": "EPSG:4326",
  "region_name": "Nairobi"
}

EXAMPLE 2:
Input: "A point at the center of Lake Victoria"
Output:
{
  "type": "Point",
  "coordinates": [33.0, -1.0],
  "projection": "EPSG:4326",
  "region_name": "Lake Victoria Center"
}

Now parse my task:
Input: "A bounding box covering the Mount Kenya forest reserve"
Output:`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The model now understands both the desired JSON schema and the coordinate conventions you are using. Without the examples, it might produce valid JSON, but with an inconsistent structure that breaks your downstream parser.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key rules for few-shot examples in geospatial contexts:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Use 3–6 examples as a starting point; complex spatial logic may require more&lt;/li&gt;
&lt;li&gt;Include edge cases (e.g., multi-polygon geometries, cross-dateline bounding boxes)&lt;/li&gt;
&lt;li&gt;Keep examples diverse — don't show only point geometries if your system will also receive polygons&lt;/li&gt;
&lt;li&gt;For classification tasks (e.g., land cover labeling), mix up the classes across examples to prevent the model from memorizing a sequence rather than learning the pattern&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  System, Role, and Contextual Prompting
&lt;/h4&gt;

&lt;p&gt;These three techniques work together to define the "frame" of any prompt. They are distinct but complementary:&lt;br&gt;
&lt;strong&gt;System prompting&lt;/strong&gt; sets the overarching task and output requirements. It tells the model what it should produce. In geospatial applications, system prompts are most useful for enforcing output formats and domain constraints:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;You are a geospatial data extraction assistant. Always return output as &lt;br&gt;
valid JSON conforming to the Earth Engine FeatureCollection schema. &lt;br&gt;
Never include explanatory text outside the JSON block.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Role prompting&lt;/strong&gt; assigns the model a persona that shapes its tone, vocabulary, and depth of expertise. This is particularly powerful when you need domain-specific reasoning:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;I want you to act as a senior remote sensing scientist with expertise &lt;br&gt;
in Google Earth Engine. I will describe a geospatial analysis task, &lt;br&gt;
and you will suggest the most appropriate Earth Engine ImageCollection, &lt;br&gt;
bands and reducers to use.&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
&lt;code&gt;My task: "Map monthly surface water extent changes across the Tana River &lt;br&gt;
basin in Kenya for 2023."&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;By assigning the role of a remote sensing scientist, you are telling the model to draw on satellite-specific knowledge (sensor selection, band characteristics, cloud masking approaches) rather than giving a generic coding answer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Contextual prompting&lt;/strong&gt; provides task-specific background that the model needs to reason correctly. This is essential when working with non-standard datasets, proprietary schemas, or domain-specific workflows:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Context: You are helping develop a Kenya county-level energy demand &lt;br&gt;
forecasting system. The system uses Google Earth Engine to extract daily &lt;br&gt;
2m temperature forecasts from the WeatherNext 2.0 model &lt;br&gt;
(projects/gcp-public-data-weathernext/assets/weathernext_2_0_0), &lt;br&gt;
filters by ensemble_member '8' and forecast_hour 6, and spatially &lt;br&gt;
aggregates over county boundaries using ee.Reducer.mean() at 1km scale.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Task: Write the Earth Engine Python API code to perform this extraction &lt;br&gt;
for April 2025 and return the results as a Pandas DataFrame with &lt;br&gt;
columns: date, county_name, mean_temp_kelvin.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Without the contextual prompt, the model would need to guess which WeatherNext asset path to use, which ensemble member, and what spatial scale to apply. With it, the output is precise and ready to integrate into a production pipeline.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Combining all three — a production-grade geospatial prompt:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;SYSTEM: You are a geospatial data engineer. Return all outputs as valid &lt;br&gt;
Python code using the Earth Engine Python API. Include inline comments &lt;br&gt;
explaining each step. Do not include any explanatory prose outside the &lt;br&gt;
code block.&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
&lt;code&gt;ROLE: Act as an expert in satellite-based climate data extraction with &lt;br&gt;
deep knowledge of the Earth Engine data catalog.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;CONTEXT: We are building a county-level temperature monitoring system &lt;br&gt;
for Kenya. County boundaries are stored in a FeatureCollection at &lt;br&gt;
'projects/my-project/assets/kenya_counties'. The target dataset is &lt;br&gt;
ERA5-Land Daily Aggregates (ECMWF/ERA5_LAND/DAILY_AGGR).&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;TASK: Write a function that accepts a year and a month as parameters, &lt;br&gt;
extracts the mean daily 2m air temperature for each county, and returns &lt;br&gt;
a FeatureCollection where each feature contains the county name, date, &lt;br&gt;
and mean temperature in Celsius.&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Advanced Reasoning Techniques
&lt;/h3&gt;
&lt;h4&gt;
  
  
  Chain of Thought (CoT)
&lt;/h4&gt;

&lt;p&gt;Chain of Thought prompting instructs the model to generate intermediate reasoning steps before arriving at a final answer. Adding a phrase like "Let's think step by step" or "Explain your reasoning before writing the code" dramatically improves accuracy on complex tasks — particularly those involving spatial logic, coordinate transformations, or multi-step analysis design.&lt;/p&gt;

&lt;p&gt;CoT is especially valuable in geospatial contexts because many tasks involve non-obvious dependencies: you need to cloud-mask before compositing, reproject before reducing, and clip after computing — not before. The model is more likely to get the order right if it reasons through the steps explicitly.&lt;/p&gt;

&lt;p&gt;Without CoT:&lt;br&gt;
&lt;code&gt;Prompt: Write Earth Engine code to compute the annual mean NDVI for &lt;br&gt;
Kenya using Landsat 8 SR for 2023.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Output: [Code that composites without cloud masking, producing &lt;br&gt;
artifacts from cloud-contaminated pixels]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;With CoT:&lt;br&gt;
&lt;code&gt;Prompt: Write Earth Engine code to compute the annual mean NDVI for &lt;br&gt;
Kenya using Landsat 8 SR for 2023. Let's think step by step about &lt;br&gt;
what preprocessing is needed before computing the composite.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Output:&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Step 1: Load the USGS Landsat 8 Level 2 SR Collection 2 ImageCollection&lt;br&gt;
Step 2: Filter by the Kenya bounding box and 2023 date range&lt;br&gt;
Step 3: Apply the QA_PIXEL cloud masking function to remove clouds &lt;br&gt;
        and cloud shadows&lt;br&gt;
Step 4: Scale the SR bands using the Landsat Collection 2 scale factors &lt;br&gt;
        (multiply by 0.0000275, add -0.2)&lt;br&gt;
Step 5: Compute NDVI = (NIR - Red) / (NIR + Red) using B5 and B4&lt;br&gt;
Step 6: Reduce the masked, scaled collection to a mean composite&lt;br&gt;
Step 7: Clip to the Kenya boundary&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;[Correct, well-structured code follows]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important CoT configuration rule:&lt;/strong&gt; Set temperature to 0 when using Chain of Thought. CoT relies on greedy, deterministic reasoning — you want the model to follow the single most logical path, not explore random alternatives.&lt;/p&gt;

&lt;p&gt;For even stronger results, combine CoT with few-shot examples. Show the model one complete worked example with intermediate steps before presenting your actual task:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Earth Engine CoT few-shot example structure

Q: Compute monthly mean LST for a given county. 
   Show your reasoning steps.
A: 
  Step 1: Select MODIS LST collection (MOD11A1) - 1km daily
  Step 2: Filter to county geometry using filterBounds()
  Step 3: Filter to target month using filterDate()
  Step 4: Convert LST from Kelvin (scale factor 0.02) to Celsius
  Step 5: Reduce to monthly mean using .mean()
  Step 6: Extract spatial mean over county using reduceRegion()
  Result: [Correct code]

Q: Now compute annual mean precipitation for the same county 
   using CHIRPS daily data.
A: [Model now reasons through the steps correctly]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Step-Back Prompting
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Step-back prompting&lt;/strong&gt; asks the model to first answer a general, higher-level question related to your task, then uses that answer as context for the specific request. This "step back" activates broader background knowledge before the model tackles the specific problem — producing more accurate and grounded outputs.&lt;/p&gt;

&lt;p&gt;In geospatial work, step-back prompting is useful when your specific task depends on domain principles the model might not surface automatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1 — Step-back prompt (general principles)&lt;/strong&gt;:&lt;br&gt;
&lt;code&gt;Based on best practices in remote sensing, what are the key preprocessing &lt;br&gt;
steps and quality considerations when using MODIS surface reflectance &lt;br&gt;
data (MOD09GA) for vegetation analysis in semi-arid regions of East Africa?&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The model responds with: cloud masking via state_1km band, solar zenith angle corrections, handling of high aerosol flags, seasonal compositing to reduce noise, and the specific challenges of mixed savanna/agricultural pixels.&lt;br&gt;
&lt;strong&gt;Step 2 — Use the step-back answer as context for your specific task:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;Context: Best practices for MODIS MOD09GA vegetation analysis in &lt;br&gt;
East Africa includes: [paste step-back answer here]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Using these considerations, write an Earth Engine Python API script &lt;br&gt;
that computes a seasonal NDVI composite for the Kenyan highlands &lt;br&gt;
(April-June long rains season) for 2020-2024, applying appropriate &lt;br&gt;
quality masking.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The resulting code will be more robust — it will include the quality flag masking, handle the aerosol flags, and use appropriate compositing logic — because the model was primed with the domain principles before generating code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Self-Consistency&lt;/strong&gt;&lt;br&gt;
Self-consistency runs the same prompt multiple times at a higher temperature and selects the most common answer across runs. It is particularly useful for classification tasks or analysis decisions where you want a more reliable answer than a single run provides.&lt;/p&gt;

&lt;p&gt;In a geospatial context, self-consistency is valuable when you are asking the model to recommend an analysis approach, classify a land cover type, or diagnose a bug — tasks where the model might give different answers on different runs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Practical approach for Earth Engine development:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Pseudo-code for self-consistency workflow

prompt = """
I have an Earth Engine ImageCollection with 120 Sentinel-2 images 
from 2023 over a wetland area. I need to detect seasonal flooding extent. 
Classify this task and recommend the single best spectral index to use.
Return only: INDEX_NAME: [name], REASON: [one sentence]
"""

# Run the same prompt 5 times at temperature 0.7
responses = [call_llm(prompt, temperature=0.7) for _ in range(5)]

# Tally the most common recommended index
# If 4/5 runs recommend MNDWI and 1 recommends NDWI, 
# use MNDWI with high confidence
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This approach gives you a pseudo-probability of correctness rather than a single potentially unreliable answer. The cost is higher (5× the API calls), but for critical design decisions in a production pipeline, the reliability gain is worth it.&lt;/p&gt;

&lt;h4&gt;
  
  
  Tree of Thoughts (ToT)
&lt;/h4&gt;

&lt;p&gt;Tree of Thoughts generalizes Chain of Thought by allowing the model to explore multiple reasoning branches simultaneously rather than following a single linear chain. Each intermediate "thought" node can branch into several possible continuations, and the model evaluates and prunes these branches to find the best path.&lt;/p&gt;

&lt;p&gt;ToT is suited to complex geospatial design problems where multiple valid approaches exist, and you want the model to evaluate trade-offs rather than commit to the first path it finds.&lt;/p&gt;

&lt;p&gt;Example application — choosing a spatial interpolation approach:&lt;br&gt;
&lt;code&gt;I need to interpolate sparse weather station temperature data across &lt;br&gt;
Kenya (47 stations) to a 1km grid for input into an energy demand &lt;br&gt;
model.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Using a Tree of Thoughts approach, explore three different interpolation &lt;br&gt;
strategies. For each strategy, consider: (1) data requirements, &lt;br&gt;
(2) computational complexity in Earth Engine, (3) accuracy for &lt;br&gt;
East African topography, and (4) limitations. Then recommend the &lt;br&gt;
best approach with justification.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The model will branch into Kriging, IDW, and co-kriging with elevation as a covariate — evaluate each along the four dimensions — and converge on a recommendation. This is significantly more useful than a direct prompt asking "what interpolation method should I use?"&lt;/p&gt;
&lt;h4&gt;
  
  
  ReAct (Reason and Act)
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;ReAct&lt;/strong&gt; combines reasoning with external tool use in a continuous thought-action-observation loop. The model reasons about what information it needs, takes an action (querying a tool, running code, searching the web), observes the result, and updates its reasoning. This loop continues until the task is complete.&lt;/p&gt;

&lt;p&gt;In geospatial applications, ReAct is the foundation for building Earth Engine agent workflows — systems where an LLM can autonomously query datasets, execute analysis scripts, interpret outputs, and iterate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A conceptual ReAct loop for geospatial data discovery:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;Task: Find the most appropriate Earth Engine dataset for mapping &lt;br&gt;
monthly soil moisture anomalies in the Horn of Africa at 10km resolution.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Thought: I need to identify satellite-derived soil moisture products &lt;br&gt;
available in the Earth Engine catalog. I should search for both &lt;br&gt;
active radar and passive microwave options.&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Action: Search Earth Engine Data Catalog for "soil moisture"&lt;br&gt;
Observation: Results include SMAP (L3, L4), ESA CCI, and &lt;br&gt;
              Sentinel-1 SAR-based products&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Thought: SMAP L4 provides 9km resolution daily data. ESA CCI is &lt;br&gt;
a multi-sensor merged product at ~25km. Sentinel-1 requires &lt;br&gt;
processing. For 10km monthly at Horn of Africa scale, &lt;br&gt;
SMAP/SPL4SMGP is the best fit.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Action: Retrieve SMAP/SPL4SMGP asset metadata from Earth Engine&lt;br&gt;
Observation: Available from 2015-03-31, 3-hourly, 9km, &lt;br&gt;
              sm_surface and sm_rootzone bands&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Final Answer: Use SMAP/SPL4SMGP (SMAP L4 Global 3-hourly 9km &lt;br&gt;
Surface and Rootzone Soil Moisture). Filter to monthly composites &lt;br&gt;
using .mean(), select 'sm_surface' band, and aggregate to &lt;br&gt;
anomalies by subtracting a multi-year monthly baseline.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Implementing ReAct in code requires a framework like LangChain with Earth Engine tool integrations, but even without automation, applying the ReAct reasoning pattern manually in your prompts produces more systematic and accurate outputs than direct questioning.&lt;/p&gt;
&lt;h4&gt;
  
  
  Automatic Prompt Engineering (APE)
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Automatic Prompt Engineering technique&lt;/strong&gt; uses an LLM to generate and evaluate multiple prompt variants for a given task — effectively automating the prompt iteration process. You prompt the model to generate 10 different phrasings of a task instruction, evaluate them against a metric (such as whether the generated code runs without errors), and select the best performer.&lt;/p&gt;

&lt;p&gt;For Earth Engine developers, this is useful when building reusable prompt templates for applications that will handle many different spatial queries:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;We are building a natural language interface for Earth Engine. &lt;br&gt;
Users will ask questions about satellite data. Generate 10 different &lt;br&gt;
ways a user might ask to "extract monthly mean temperature for a &lt;br&gt;
specific county in Kenya from the ERA5-Land dataset."&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Keep the semantics identical but vary phrasing, formality, &lt;br&gt;
and specificity.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The model generates variants ranging from technical ("Extract spatially aggregated monthly mean 2m air temperature from ECMWF/ERA5_LAND/MONTHLY_AGGR for Nairobi County") to conversational ("What was the average temperature in Nairobi last month?"). You can then evaluate which phrasing most reliably triggers correct Earth Engine code generation and use that as your canonical prompt template.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Code Prompting for Earth Engine&lt;/strong&gt;&lt;br&gt;
LLMs are highly effective at every stage of the geospatial developer workflow. Here is how to prompt effectively for each task type.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Writing Earth Engine Code&lt;/strong&gt;&lt;br&gt;
Be specific about the language (Python API vs. JavaScript Code Editor), the dataset asset path, the spatial and temporal parameters, and the desired output type. Action verbs and concrete specifications are your best tools:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Write a Google Earth Engine Python API function that:&lt;/code&gt;&lt;br&gt;
&lt;code&gt;- Accepts a county name and a year as parameters&lt;/code&gt;&lt;br&gt;
&lt;code&gt;- Loads the CHIRPS Daily precipitation dataset (UCSB-CHG/CHIRPS/DAILY)&lt;/code&gt;&lt;br&gt;
&lt;code&gt;- Filters to the specified year and the county's geometry&lt;/code&gt;&lt;br&gt;
&lt;code&gt;- Computes daily precipitation totals in mm&lt;/code&gt;&lt;br&gt;
&lt;code&gt;- Returns a Pandas DataFrame with columns: date, county, precip_mm&lt;/code&gt;&lt;br&gt;
&lt;code&gt;- Include error handling for counties not found in the FeatureCollection&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explaining Earth Engine Code&lt;/strong&gt;&lt;br&gt;
Paste the code and ask for a step-by-step explanation. This is particularly useful when inheriting legacy scripts or working through complex reducer chains:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Explain the following Earth Engine Python code step by step, 
focusing on what each spatial operation does and why the 
operations are ordered in this sequence:

[paste code here]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Translating Between JavaScript and Python API&lt;/strong&gt;&lt;br&gt;
The Earth Engine JavaScript Code Editor and Python API have different syntax conventions. LLMs handle this translation reliably:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Translate the following Earth Engine JavaScript code to the 
Python API. Maintain all variable names and add type hints 
where appropriate:

[paste JavaScript code here]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Debugging Earth Engine Code&lt;/strong&gt;&lt;br&gt;
Always include the full error traceback along with the code. Ask the model to both fix the error and explain any other improvements it identifies:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;The following Earth Engine Python code raises this error:

EEException: Image.reduceRegion: The geometry is unbounded 
(contains the full globe). Please specify a geometry 
with a bounded extent.

Traceback: [paste traceback]

Code: [paste code]

Debug the error and explain any other issues you notice 
in the code structure.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Structured Output and JSON in Geospatial Workflows
&lt;/h3&gt;

&lt;p&gt;Structured output is one of the most important techniques for production geospatial systems. When you instruct an LLM to return JSON, you force it to organize its output into a schema — which reduces hallucinations, makes the output programmatically parseable, and integrates cleanly with downstream Earth Engine code.&lt;/p&gt;

&lt;h4&gt;
  
  
  System prompt for structured geospatial feature extraction:
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Classify the following satellite scene description and return 
valid JSON conforming to this schema:

SCHEMA:
{
  "scene_id": "string",
  "satellite": "string",
  "acquisition_date": "YYYY-MM-DD",
  "cloud_cover_pct": number,
  "usable_for_analysis": boolean,
  "recommended_bands": ["string"],
  "notes": "string"
}

Scene description: "Sentinel-2 L2A image acquired over Mombasa 
on 2024-03-15, approximately 35% cloud cover concentrated over 
the ocean, inland areas clear, bands B2-B8A available."

JSON Response:
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The model returns the code below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "scene_id": "S2_L2A_Mombasa_20240315",
  "satellite": "Sentinel-2",
  "acquisition_date": "2024-03-15",
  "cloud_cover_pct": 35,
  "usable_for_analysis": true,
  "recommended_bands": ["B2", "B3", "B4", "B8", "B8A", "B11", "B12"],
  "notes": "Cloud cover concentrated over ocean; inland areas suitable for land analysis"
} 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Using JSON Schemas for Earth Engine asset inputs:
&lt;/h4&gt;

&lt;p&gt;When working with large volumes of spatial data, provide a JSON Schema as a blueprint so the model knows exactly what structure to expect:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "type": "object",
  "properties": {
    "asset_path": { "type": "string", "description": "Earth Engine asset path" },
    "geometry_type": { "type": "string", "enum": ["Point", "Rectangle", "Polygon"] },
    "coordinates": { "type": "array", "description": "Coordinate array in WGS84" },
    "date_range": {
      "type": "object",
      "properties": {
        "start": { "type": "string", "format": "date" },
        "end": { "type": "string", "format": "date" }
      }
    },
    "target_bands": { "type": "array", "items": { "type": "string" } }
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Important production note&lt;/strong&gt;: JSON outputs from LLMs can be truncated if the response hits the token limit, resulting in missing closing braces that make the JSON invalid. Always use a &lt;code&gt;json-repair&lt;/code&gt; library in production applications to handle this gracefully:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from json_repair import repair_json
import json

raw_output = llm_response  # Potentially truncated JSON string
repaired = repair_json(raw_output)
parsed = json.loads(repaired)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Best Practices for Geospatial Prompt Engineering
&lt;/h3&gt;

&lt;p&gt;Use Instructions Over Constraints&lt;/p&gt;

&lt;p&gt;Tell the model what to do rather than what not to do. Positive instructions are clearer and produce better results.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Weak (constraint-based):&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;Write Earth Engine code to compute NDVI. Do not use JavaScript. &lt;br&gt;
Do not use deprecated APIs. Do not include print statements.&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;Strong (instruction-based):&lt;/strong&gt;&lt;br&gt;
Write Earth Engine Python API code (using the &lt;code&gt;ee&lt;/code&gt; library) to compute &lt;br&gt;
NDVI. Use modern Collection 2 Landsat SR bands. Return the result as &lt;br&gt;
a clipped ee.Image object.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use Variables to Make Prompts Reusable&lt;/strong&gt;&lt;br&gt;
In production Earth Engine applications, parameterize your prompts with variables rather than hardcoding specific values. This turns a one-off prompt into a reusable template:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;VARIABLES:
{dataset} = "ECMWF/ERA5_LAND/HOURLY"
{variable} = "temperature_2m"
{region} = "Nairobi County"
{start_date} = "2024-01-01"
{end_date} = "2024-12-31"

PROMPT:
Write an Earth Engine Python function to extract daily mean {variable} 
from {dataset} for {region} between {start_date} and {end_date}. 
Return results as a Pandas DataFrame.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Be Specific About Output Format and Length&lt;/strong&gt;&lt;br&gt;
Specify exactly what you need: the programming language, the return type, whether you want inline comments, and the approximate length of the output.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Generate a 3-function Python module for Earth Engine that:&lt;/code&gt;&lt;br&gt;
   &lt;code&gt;-Authenticates and initializes the EE session&lt;/code&gt;&lt;br&gt;
   &lt;code&gt;-Extracts temperature data for a given geometry and date range&lt;/code&gt;&lt;br&gt;
   &lt;code&gt;-Exports results to Google Drive as a CSV&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Each function should have a docstring. Target 50-80 lines total.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CoT Best Practices for Geospatial Reasoning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When applying Chain of Thought to Earth Engine tasks, always place the reasoning before the final code output. The model's intermediate reasoning changes the token context that shapes its final prediction, so the order matters.&lt;/p&gt;

&lt;p&gt;For CoT, always set the temperature on Google AI Studio to 0. Spatial reasoning tasks generally have one correct answer (the preprocessing steps for Landsat SR are not a matter of opinion), and you want the model to follow the most logical deterministic path.&lt;/p&gt;

&lt;p&gt;For self-consistency combined with CoT, build your prompt so the final answer is clearly delimited from the reasoning — this makes it straightforward to extract and compare answers across multiple runs.&lt;/p&gt;

&lt;p&gt;In summary, prompt engineering for geospatial applications is both a science and a craft. The underlying mechanics are consistent — LLMs are token prediction engines, and well-structured prompts produce better predictions — but the application of these mechanics to satellite data, spatial APIs, and structured geospatial formats requires deliberate technique.&lt;/p&gt;

&lt;p&gt;The progression is straightforward: start with zero-shot for simple, well-defined tasks. Add examples (few-shot) when you need a consistent output structure. Use system, role, and contextual prompting to frame the model's expertise and enforce output contracts. Apply Chain of Thought when the task involves multi-step reasoning or ordered operations. Use ReAct patterns when building agent workflows that need to interact with Earth Engine APIs or external data sources. And always enforce JSON schemas when your outputs need to integrate with programmatic systems.&lt;/p&gt;

&lt;p&gt;Earth Engine's server-side computation model, its rich data catalog, and its Python API make it one of the most powerful geospatial platforms available. Pairing it with disciplined prompt engineering — structured inputs, verified outputs, documented iterations — makes it possible to build geospatial AI systems that are not just powerful, but reproducible, maintainable, and production-ready.&lt;/p&gt;

&lt;p&gt;Acknowledgement&lt;br&gt;
This article was developed by blending core methodologies from the &lt;a href="https://www.kaggle.com/whitepaper-prompt-engineering" rel="noopener noreferrer"&gt;Prompt Engineering Guide&lt;/a&gt; by &lt;a href="https://www.linkedin.com/in/leeboonstra/" rel="noopener noreferrer"&gt;Lee Boonstra&lt;/a&gt;. The framework has been adapted and structured specifically for production-level cloud geospatial workflows in  Earth Engine by Nicholas Musau, a Google Developer Expert (GDE) for Earth Engine and Lead of the &lt;a href="https://gdg.community.dev/gdg-for-earth-engine-nairobi/" rel="noopener noreferrer"&gt;Google Earth Engine Developer Community Nairobi&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;By applying these tailored runtime configurations and prompt structures within Google AI Studio, geospatial analysts can seamlessly bridge the gap between traditional remote sensing workflows and next-generation Agentic GIS solutions.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>GeoAI in Earth Engine: How AI-Powered Weather Forecasting Transforms Energy Operations and Demand Prediction</title>
      <dc:creator>Nicholas </dc:creator>
      <pubDate>Thu, 25 Jun 2026 11:15:11 +0000</pubDate>
      <link>https://dev.to/nicmsn2/geoai-in-earth-engine-forecasting-energy-demand-from-satellite-weather-data-3858</link>
      <guid>https://dev.to/nicmsn2/geoai-in-earth-engine-forecasting-energy-demand-from-satellite-weather-data-3858</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpq651rho76plm35yq9mj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpq651rho76plm35yq9mj.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;Geospatial AI — represents a new class of machine learning models that are natively trained on Earth observation data: satellite imagery, atmospheric measurements, terrain models, and gridded climate datasets. Unlike traditional ML pipelines that treat location as just another feature column, GeoAI models embed spatial and temporal relationships directly into their architecture.&lt;/p&gt;

&lt;p&gt;This article explores what DeepMind's GeoAI models can do by walking through a real end-to-end project: using Google's &lt;a href="https://deepmind.google/science/weathernext/" rel="noopener noreferrer"&gt;WeatherNext 2.0&lt;/a&gt; numerical weather prediction model, accessed via Google Earth Engine (GEE), to forecast energy demand for Nairobi, Kenya. The project fuses satellite-derived temperature forecasts with ground-truth weather observations and historical energy consumption data, ultimately producing actionable 7- to 21-day energy demand forecasts — as well as climate scenario simulations. It's a use case example extracted from &lt;a href="https://www.linkedin.com/posts/yossimatias_today-we-are-introducing-weathernext-2-activity-7396203121485619200-ub3D" rel="noopener noreferrer"&gt;advanced AI-based weather forecasting model&lt;/a&gt; article shared by &lt;a href="https://www.linkedin.com/in/yossimatias?trk=public_post_feed-actor-name" rel="noopener noreferrer"&gt;Yossi Matias&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;The result is a working blueprint for how utilities, grid operators, and energy planners across the Global South can use freely available GeoAI infrastructure to make smarter, data-driven decisions.&lt;/p&gt;

&lt;p&gt;What is WeatherNext and Why Does it Matter?&lt;/p&gt;

&lt;p&gt;WeatherNext 2.0 &lt;code&gt;(projects/gcp-public-data-weathernext/assets/weathernext_2_0_0)&lt;/code&gt; is &lt;a href="https://deepmind.google/science/weathernext/" rel="noopener noreferrer"&gt;Google's next-generation numerical weather prediction (NWP) model&lt;/a&gt;, hosted as a public dataset on Google Earth Engine. It provides global ensemble forecasts — probabilistic outputs from multiple model runs — at sub-daily temporal resolution.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key characteristics that make it a GeoAI model rather than a conventional NWP system:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Ensemble members: Multiple forecast trajectories allow uncertainty quantification, not just point estimates&lt;/li&gt;
&lt;li&gt;Earth Engine integration: The model outputs are natively queryable as &lt;code&gt;ImageCollection objects&lt;/code&gt;, meaning spatial operations (&lt;em&gt;clipping to a region, zonal statistics&lt;/em&gt;) are first-class citizens&lt;/li&gt;
&lt;li&gt;Cloud-native access: No downloading of large GRIB files; computation runs server-side on Google's infrastructure&lt;/li&gt;
&lt;li&gt;Global coverage at local precision: A bounding box query over Nairobi's coordinates (&lt;code&gt;[36.65, -1.5, 37.1, -1.1])&lt;/code&gt; returns spatially relevant forecasts immediately&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For this project, we queried ensemble member 8, with a 6-hour forecast horizon, over the Nairobi region for April 2025 — extracting the &lt;code&gt;2m_temperature&lt;/code&gt; band as our primary variable.&lt;/p&gt;

&lt;h3&gt;
  
  
  Project Architecture: A Five-Stage Pipeline
&lt;/h3&gt;

&lt;p&gt;The project follows a clean, modular pipeline that any GeoAI practitioner can adapt. Here is the high-level flow:&lt;/p&gt;

&lt;p&gt;GEE (WeatherNext) → Daily Aggregation → Validation &amp;amp; Harmonization → Energy Fusion → Demand Forecasting&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 1 — Satellite Data Extraction via Google Earth Engine
&lt;/h3&gt;

&lt;p&gt;The first step is querying WeatherNext through the Earth Engine Python API. After authentication and initialization &lt;code&gt;(ee.Authenticate(), ee.Initialize())&lt;/code&gt;, the notebook builds a daily temperature time series for Nairobi:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;dataset&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="nx"&gt;ee&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ImageCollection&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;projects/gcp-public-data-weathernext/assets/weathernext_2_0_0&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ee&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Filter&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2025-04-01T00:00:00Z&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2025-04-30T23:59:59Z&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ee&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Filter&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;eq&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;ensemble_member&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;8&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ee&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Filter&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;eq&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;forecast_hour&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;filterBounds&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;nairobi&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Daily aggregation is handled by a custom function that steps through each date, computes a spatial mean over the Nairobi polygon using ee.Reducer.mean() at 1 km scale, and exports the result to a Pandas DataFrame. The raw temperature values come in Kelvin and are converted to Celsius (and optionally Fahrenheit) for analysis.&lt;/p&gt;

&lt;p&gt;Why this matters for GeoAI: The entire spatial aggregation — what would traditionally require downloading gigabytes of raster data — runs in seconds server-side. Earth Engine's distributed compute infrastructure is what makes this scale.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 2 — Ground Truth Validation
&lt;/h3&gt;

&lt;p&gt;Satellite model outputs are predictions, not measurements. The project introduces a critical validation step by loading observed temperature data from the Visual Crossing Weather API (sourced via Kaggle), representing actual ground-level conditions in Nairobi for the same April 2025 period.&lt;/p&gt;

&lt;p&gt;A direct comparison plot overlays:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Model Predicted Temperature (°F) — from WeatherNext via GEE&lt;/li&gt;
&lt;li&gt;Validation Data Temperature (°F) — from ground weather stations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This visualization immediately surfaces the gap that all remote-sensing practitioners know well: model predictions and ground observations diverge, sometimes significantly. The question is how to close that gap in a principled way. The image below shows the comparison trend of temp foundation model and ground station data &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Foh2kt0xywtz36z2c4gtg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Foh2kt0xywtz36z2c4gtg.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 3 — Bayesian Kriging for Data Harmonization
&lt;/h3&gt;

&lt;p&gt;This is the most technically sophisticated stage of the project and a signature capability of GeoAI-aware workflows. Rather than simply averaging the satellite and ground data, the notebook implements a &lt;strong&gt;Bayesian Kriging&lt;/strong&gt; approach using &lt;strong&gt;Gaussian Process Regression (GPR)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Kriging originates in geostatistics as an optimal spatial interpolation technique. Applied here in a temporal and multi-source context, it allows the model to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Learn the statistical relationship between time, satellite-predicted temperature, and observed temperature&lt;/li&gt;
&lt;li&gt;Produce a harmonized temperature estimate that corrects for model bias while quantifying uncertainty&lt;/li&gt;
&lt;li&gt;Output a 95% confidence interval around each daily estimate&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The kernel used is a product of a Constant kernel and a Radial Basis Function (RBF) kernel — a standard choice for smooth time series:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;kernel&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;C&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;1e-3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;1e3&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nc"&gt;RBF&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;1e-2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;1e2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;gp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;GaussianProcessRegressor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;kernel&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;kernel&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;alpha&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n_restarts_optimizer&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The GPR is trained on &lt;em&gt;(date_numeric, model_prediction)&lt;/em&gt; → validation_temperature, meaning the satellite forecast acts as a spatial covariate in the kriging system — a technique directly analogous to co-kriging in classical geostatistics. The harmonized output is then used as the primary temperature signal for all downstream tasks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this matters for GeoAI&lt;/strong&gt;: Data fusion across heterogeneous sources (satellite + in-situ) with uncertainty quantification is a core challenge in operational geospatial analytics. This Bayesian approach produces not just a "best estimate" but a probability distribution — essential for risk-aware decision-making in energy planning. After data fusion using the  Bayesian Kriging technique.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8643yhxc0ifvo170ldo9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8643yhxc0ifvo170ldo9.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 4 — Energy Demand Fusion
&lt;/h3&gt;

&lt;p&gt;The harmonized temperature data alone is insufficient for energy forecasting. The notebook introduces a second data source: &lt;a href="https://www.kaggle.com/datasets/nitirajkulkarni/aep-stock-performance" rel="noopener noreferrer"&gt;American Electric Power&lt;/a&gt; (AEP) hourly energy consumption data (April 2006, year-shifted to 2025 for temporal alignment), representing grid-scale electricity demand in megawatts.&lt;/p&gt;

&lt;p&gt;The two datasets are merged on a common date key, producing a unified DataFrame with columns:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;harmonized_temp — the Bayesian-corrected temperature (°F)&lt;br&gt;
AEP_MW — daily energy consumption (megawatts)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This fusion step is where the project connects weather intelligence to a tangible business outcome. The rationale is well-established: temperature is one of the strongest predictors of electricity demand, driven by heating and cooling loads.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 5 — LSTM-Based Multi-Step Forecasting
&lt;/h3&gt;

&lt;p&gt;With the fused dataset in hand, the project trains a Long Short-Term Memory (LSTM) neural network for multi-step-ahead energy demand forecasting. LSTMs are well-suited to this task because energy demand exhibits strong temporal autocorrelation — today's demand is highly predictive of tomorrow's.&lt;/p&gt;

&lt;p&gt;The architecture is deliberately lean:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Sequential&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
    &lt;span class="nc"&gt;LSTM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;activation&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;relu&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;input_shape&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sequence_length&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n_features&lt;/span&gt;&lt;span class="p"&gt;)),&lt;/span&gt;
    &lt;span class="nc"&gt;Dense&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;predict_energy_demand_lstm()&lt;/code&gt; function implements autoregressive multi-step forecasting: each predicted value feeds back into the input sequence for the next step. The project produces forecasts at three horizons:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;7 days ahead — operational planning&lt;br&gt;
14 days ahead — medium-term scheduling&lt;br&gt;
21 days ahead — strategic procurement&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The output is plotted against the April 2025 actual demand, with the forecast curves extending into May 2025.&lt;/p&gt;

&lt;p&gt;Scaling to National Level: County-by-Coaunty Analysis&lt;/p&gt;

&lt;p&gt;I decided to extend beyond a single city and included a second analytical thread integrates two additional GEE datasets:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;WorldPop (WorldPop/GP/100m/pop)&lt;/code&gt; — 100m gridded population counts for 2020&lt;br&gt;
&lt;code&gt;NOAA VIIRS Night Lights (NOAA/VIIRS/DNB/MONTHLY_V1/VCMCFG)&lt;/code&gt; — a well-established proxy for economic activity (GDP proxy)&lt;/p&gt;

&lt;p&gt;These are extracted at county level across Kenya, alongside temperature and rainfall data, to construct a multi-feature dataset where each row represents one county × one time period with attributes: temp, rain, population, gdp_proxy, energy_demand.&lt;/p&gt;

&lt;p&gt;A trained LSTM on this county-level data enables:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;County-level demand ranking — identifying the top 10 highest energy-consuming counties by average demand&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Driver analysis — computing the correlation between each feature and energy demand, answering: Is it temperature, population density, or economic activity that drives demand most?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;County-specific multi-day forecasting — generating a table of 7/14/21-day demand predictions for any named county (e.g., Nairobi) with a single function call&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Climate Scenario Simulation: The "What If" Capability
&lt;/h3&gt;

&lt;p&gt;Perhaps the most strategically powerful section of the project is the climate impact simulation. The trained model is used to answer: What happens to energy demand if temperatures rise or fall by 2°C?&lt;/p&gt;

&lt;p&gt;Two scenarios are modeled for Nairobi over a 7-day forward window:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;−2°C scenario: Normalizes the temperature feature downward and re-runs inference&lt;br&gt;
+2°C scenario: Normalizes the temperature feature upward and re-runs inference&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The result is a side-by-side comparison of baseline demand versus temperature-shifted demand, quantified as a normalized difference. This kind of scenario analysis is directly applicable to:&lt;/p&gt;

&lt;p&gt;Grid resilience planning — anticipating demand spikes during heat waves&lt;br&gt;
Carbon budgeting — modeling how climate change will affect national electricity consumption over the coming decade&lt;br&gt;
Tariff setting — providing evidence for utilities when pricing future energy contracts&lt;/p&gt;

&lt;p&gt;In the Kenyan context, where 1 MWh costs approximately KSh 25,000–30,000 (~$190–$230), even a modest increase in demand forecasting accuracy translates to significant financial savings for grid operators.&lt;/p&gt;

&lt;p&gt;For this project, I would conclude that WeatherNext2 project demonstrates that GeoAI has moved beyond academic experimentation into a practical, deployable toolkit for real-world applications and leads to the realization of value for Geospatial AI foundation models. The key insight is that satellite-derived weather forecasts are most powerful not as standalone outputs, but as inputs into higher-order models — when fused with ground observations, socioeconomic data, and domain-specific consumption records.&lt;/p&gt;

&lt;p&gt;The Bayesian Kriging step, in particular, illustrates a maturity in how practitioners are now thinking about remote sensing data: not as ground truth, but as one signal among many, to be harmonized rather than trusted blindly. The confidence intervals this approach produces are not a weakness to hide — they are decision-relevant information.&lt;/p&gt;

&lt;p&gt;For energy planners, utilities, and climate adaptation teams across Sub-Saharan Africa and beyond, this pipeline offers a replicable, scalable blueprint. The data sources used — WeatherNext, WorldPop, VIIRS — are all freely accessible. The computational infrastructure (Google Earth Engine, TensorFlow) is available to researchers at no cost. The only remaining ingredient is domain expertise to translate forecast outputs into operational decisions. Thanks to &lt;a href="https://blog.google/innovation-and-ai/models-and-research/google-deepmind/weathernext-2/" rel="noopener noreferrer"&gt;The WeatherNext&lt;/a&gt; team, and &lt;a href="https://www.linkedin.com/in/bgaiarin/" rel="noopener noreferrer"&gt;Ben&lt;/a&gt; for giving access to WeatherNext 2 data. &lt;/p&gt;

&lt;p&gt;Interested in learning more, you join our Earth Engine community &lt;a href="https://gdg.community.dev/gdg-for-earth-engine-nairobi/" rel="noopener noreferrer"&gt;GDG for Earth Engine&lt;/a&gt; &lt;/p&gt;

</description>
    </item>
    <item>
      <title>From Pixels to Profits: Revolutionizing Investment Intelligence with Google AlphaEarth Foundations</title>
      <dc:creator>Nicholas </dc:creator>
      <pubDate>Sat, 25 Apr 2026 12:45:18 +0000</pubDate>
      <link>https://dev.to/nicmsn2/from-pixels-to-profits-revolutionizing-investment-intelligence-with-google-alphaearth-foundations-26d1</link>
      <guid>https://dev.to/nicmsn2/from-pixels-to-profits-revolutionizing-investment-intelligence-with-google-alphaearth-foundations-26d1</guid>
      <description>&lt;p&gt;In the high-stakes world of global investment, the difference between a "hidden gem" and a "capital trap" often lies in the data. Traditional satellite analysis has long been the gold standard for monitoring physical change, but it has reached a plateau. Raw spectral data is noisy, disconnected, and requires massive computational "heavy lifting" to become actionable.&lt;/p&gt;

&lt;p&gt;Enter &lt;a href="https://developers.google.com/earth-engine/tutorials/community/satellite-embedding-01-introduction#understanding_embeddings" rel="noopener noreferrer"&gt;Google AlphaEarth Foundations&lt;/a&gt; (AEF)—a high-performance, AI-native framework designed to power the next generation of geospatial intelligence. Just as modern cloud databases have removed the administrative burden of infrastructure, AlphaEarth Foundations removes the "undifferentiated heavy lifting" of satellite preprocessing. It transforms 3 billion annual observations into a unified, 64-dimensional "digital representation" that computer systems can process with microsecond efficiency.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The New Era of Environmental Intelligence&lt;/strong&gt;&lt;br&gt;
Historically, mapping a single city required juggling mismatched optical images, radar signals, and climate data. AlphaEarth Foundations changes the game by synthesizing these multi-sensor streams into &lt;a href="https://deepmind.google/blog/alphaearth-foundations-helps-map-our-planet-in-unprecedented-detail/" rel="noopener noreferrer"&gt;Analysis-Ready Embeddings&lt;/a&gt;.These aren't just images; they are 64-dimensional feature vectors that encapsulate the "DNA" of the Earth's surface at a 10-meter resolution. Whether it's identifying the subtle shift in soil moisture or the rapid expansion of an informal settlement, AlphaEarth sees through cloud cover and sensor artifacts to provide a consistent, global truth.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Unpacking the Alpha Advantage: *&lt;/em&gt;&lt;br&gt;
Performance at ScaleWhy are developers and analysts pivoting to Alpha embeddings? The benefits are mechanical and measurable:High &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Efficiency: These compact summaries require 16x less storage than traditional AI outputs, drastically reducing the cost of planetary-scale analysis.&lt;/li&gt;
&lt;li&gt;Temporal Intelligence: Unlike static snapshots, AEF embeddings are temporally aware, capturing the seasonal "pulse" of a region within a single vector.&lt;/li&gt;
&lt;li&gt;Multi-Sensor Fusion: By integrating Sentinel, Landsat, and LiDAR data, the model bridges the "Resolution Gap," offering a fidelity that raw pixels simply cannot match.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Use Case: Quantifying Urban Vitality&lt;/strong&gt;&lt;br&gt;
In a recent technical study using Google Earth Engine, we applied Alpha embeddings to a pressing economic question: Where is the next growth frontier?&lt;/p&gt;

&lt;p&gt;Using unsupervised K-Means clustering on 64-dimensional vectors, we were able to segment complex urban landscapes without manual labeling. The model successfully distinguished "Buildup" (infrastructure) from "Green Space" with 98% accuracy—outperforming traditional Sentinel-2 benchmarks. This is not just mapping; it is the automated extraction of physical reality from digital noise.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bridging the Gap: The Economic Synergy&lt;/strong&gt;&lt;br&gt;
The true power of AlphaEarth Foundations is unlocked when physical data meets socio-economic ground truth. By fusing AEF embeddings with Purchasing Power Index (PPI) and population data, we can move from "what is there" to "what is it worth."&lt;/p&gt;

&lt;p&gt;Our analysis compared two regions: District AA and District BB.&lt;br&gt;
&lt;strong&gt;District AA:&lt;/strong&gt; Showed steady physical growth but a startling -0.86 negative correlation between population and purchasing power. Despite the expansion, individual wealth was declining.&lt;br&gt;
&lt;strong&gt;District BB:&lt;/strong&gt; Demonstrated a "synergistic" growth pattern. Urban area, population, and PPI were all perfectly synchronized (correlation &amp;gt; 0.97).&lt;/p&gt;

&lt;p&gt;For an investor, the AEF-enabled insight is clear: District BB represents a healthy, wealth-generating ecosystem, while District AA’s growth is decoupled from economic prosperity.&lt;/p&gt;

&lt;p&gt;Building the Future with AlphaEarthGoogle AlphaEarth Foundations delivers unmatched reliability and global consistency. It is a scalable framework for monitoring economic development, validating official statistics, and identifying risks that are invisible to the naked eye.&lt;br&gt;
For organizations like the UN Food and Agriculture Organization and MapBiomas, this is already the new standard for accuracy. For the technical professional, it is a invitation to stop managing data and start generating insights. With just a few lines of Python in Earth Engine, the gap between orbital AI and global efficiency is finally closed.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>earthobservation</category>
      <category>cloudnative</category>
      <category>earth</category>
    </item>
    <item>
      <title>Bridging the Gap: Integrating Orbital AI with In-Situ Ground Observations for Global Efficiency</title>
      <dc:creator>Nicholas </dc:creator>
      <pubDate>Sun, 28 Dec 2025 09:12:31 +0000</pubDate>
      <link>https://dev.to/nicmsn2/bridging-the-gap-integrating-orbital-ai-with-in-situ-ground-observations-for-global-efficiency-l6p</link>
      <guid>https://dev.to/nicmsn2/bridging-the-gap-integrating-orbital-ai-with-in-situ-ground-observations-for-global-efficiency-l6p</guid>
      <description>&lt;p&gt;The landscape of Earth observation is undergoing a profound transformation. Satellite imagery is no longer defined by static maps but by high-velocity temporal data. This shift is driving rapid adoption across sectors such as energy, defense, and climate monitoring, where the ability to monitor remote assets in near-real-time is paramount. According to &lt;a href="https://www.precedenceresearch.com/satellite-data-services-market" rel="noopener noreferrer"&gt;Precedence Research&lt;/a&gt;, this demand is further propelled by the urgent need for optimized resource management and enhanced disaster response.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9bvhyk7vumb8xmqou9fi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9bvhyk7vumb8xmqou9fi.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Data Deluge and the Shift to Orbital AI&lt;/strong&gt;&lt;br&gt;
The satellite data services market is currently experiencing a seismic expansion, projected to grow from USD 16.5 billion in 2023 to over USD 68.75 billion by 2032. However, as industries like precision agriculture and insurance demand higher resolution and lower latency, the resulting "data deluge" has created critical bottlenecks in data processing and energy consumption.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9eszrnxmjn2sz1d6ue9z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9eszrnxmjn2sz1d6ue9z.png" alt=" " width="623" height="310"&gt;&lt;/a&gt;&lt;br&gt;
(&lt;a href="https://www.fortunebusinessinsights.com/satellite-data-services-market-108359" rel="noopener noreferrer"&gt;https://www.fortunebusinessinsights.com/satellite-data-services-market-108359&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Processing massive datasets on the ground introduces significant latency and consumes immense power. In response, industry leaders like Google have introduced Project Suncatcher, an initiative designed to process AI workloads directly in orbit. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://fortune.com/2025/12/01/google-ceo-sundar-pichai-project-suncatcher-extraterrestrial-data-centers-environment/" rel="noopener noreferrer"&gt;Google CEO Sundar Pichai says we’re just a decade away from a new normal of extraterrestrial data centers&lt;/a&gt; as reported by &lt;a href="https://www.linkedin.com/in/sasha-rogelberg-88007612b/" rel="noopener noreferrer"&gt;Sasha Rogelberg&lt;/a&gt; in &lt;a href="https://www.linkedin.com/company/fortune/posts/?feedView=all" rel="noopener noreferrer"&gt;Fortune&lt;/a&gt;. By utilizing space-based scalable AI infrastructure and a "constellation-wide" compute system, initial data can be processed at the edge. This approach filters out noise and only transmits high-value insights back to Earth, significantly reducing the energy costs associated with downlinking raw data.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;The Accuracy Bottleneck: Why In-Situ Data Matters&lt;/strong&gt;&lt;br&gt;
Despite the advancements in orbital AI, satellite sensors such as the &lt;a href="https://climatedataguide.ucar.edu/climate-data/chirps-climate-hazards-infrared-precipitation-station-data-version-2" rel="noopener noreferrer"&gt;Climate Hazards Group InfraRed Precipitation with Station data&lt;/a&gt; (CHIRPS) remain remote estimations. Environmental interference and sensor calibration issues can lead to statistical biases or "gaps" in the data&lt;br&gt;
In high-stakes industries, these inaccuracies have real-world financial consequences:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Insurance: A 10% margin of error in rainfall data can lead to millions of dollars in mismanaged risk for drought-stricken farms.&lt;/li&gt;
&lt;li&gt;Hydrology: Accurate data is essential for managing critical infrastructure like dams.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To make space-based AI "fit for purpose," it must be validated by In-Situ data physical measurements taken on-site. Merging these high-fidelity "ground truths" with high-velocity satellite streams creates a hybrid dataset that is both globally expansive and locally accurate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Case Study: Harmonizing Rainfall Data in Earth Engine&lt;/strong&gt;&lt;br&gt;
I’m a &lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/the-google-developer-experts-program-is-growing" rel="noopener noreferrer"&gt;GDE&lt;/a&gt; of EE so to demonstrate this integration, I developed a systematic workflow in &lt;a href="https://earthengine.google.com/" rel="noopener noreferrer"&gt;Google Earth Engine&lt;/a&gt; (EE) to fuse CHIRPS satellite rainfall data with sample in-situ data. While both datasets show similar seasonal trends, a comparative analysis reveals significant deviations that could lead to financial loss if used in isolation.&lt;br&gt;
The chart below shows the trend between In-situ rainfall and CHIRPS Monthly data. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcseyu2r0p50u56dh7zu2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcseyu2r0p50u56dh7zu2.png" alt=" " width="800" height="397"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Statistical Comparison and Bias Correction&lt;br&gt;
A scatter plot of the two datasets showed a correlation of $R^2 = 0.686$ and a Mean Absolute Error (MAE) of 1.701 mm. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs8o4jm8bhp2xq871oyat.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs8o4jm8bhp2xq871oyat.png" alt=" " width="800" height="597"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To reconcile these differences, I employed Data Fusion techniques to harmonize the time series.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bias Correction (Harmonization): Using Linear Regression, I adjusted the systematic differences in mean and variance between the datasets. This ensures the corrected satellite data {S}shares the statistical characteristics of the ground-level gauge data.&lt;/li&gt;
&lt;li&gt;Gap-Filling: The final harmonized time series prioritizes the highest-quality source.&lt;/li&gt;
&lt;li&gt;o Where In-Situ data is available, it is used as the primary measurement.&lt;/li&gt;
&lt;li&gt;o Where In-Situ data is missing often due to rural inaccessibility the bias-corrected CHIRPS data acts as a surrogate to fill the gap.&lt;/li&gt;
&lt;li&gt;Advanced Mapping: For even higher precision, Quantile Mapping (Distribution Matching) can be used to correct extremes and the overall shape of the rainfall distribution, which is particularly vital for capturing extreme weather events. After the statistical correction the final data resulted as you can see below. The two datasets were merged to come up with optimized data ready to use for industrial impact solutions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz5t6ccd8r2760de00idg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz5t6ccd8r2760de00idg.png" alt=" " width="800" height="463"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;From Big Data to Smart Data&lt;/strong&gt;&lt;br&gt;
By integrating orbital AI with ground-level reality, we transform raw "big data" into "actionable industry fit dataset" tailored for industrial use. This synergy ensures that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Global monitoring systems are not just fast, but provide the absolute precision required for modern risk management.&lt;/li&gt;
&lt;li&gt;Automotive/Insurance can merge weather data with car depreciation models to predict expected losses based on environmental wear-and-tear.&lt;/li&gt;
&lt;li&gt;In agriculture we provide farmers with rainfall data that matches their local rain gauges, enabling hyper-local crop insurance payouts.&lt;/li&gt;
&lt;li&gt;Energy systems can predict hydroelectric output by accurately measuring rainfall across a specific catchment area.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Special thanks to &lt;a href="https://www.linkedin.com/in/alfredomorresi/" rel="noopener noreferrer"&gt;Alfredo&lt;/a&gt; and &lt;a href="https://www.linkedin.com/in/heejung49/" rel="noopener noreferrer"&gt;Heeya&lt;/a&gt;, the Google Developer Expert global leads, for providing the Google Cloud credits necessary to accomplish this project.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>datascience</category>
      <category>monitoring</category>
    </item>
    <item>
      <title>Actionable Soil Health: Scaling Decisions to African Smallholders with Earth Engine Cloud</title>
      <dc:creator>Nicholas </dc:creator>
      <pubDate>Thu, 27 Nov 2025 10:36:22 +0000</pubDate>
      <link>https://dev.to/nicmsn2/actionable-soil-health-scaling-decisions-to-african-smallholders-with-earth-engine-cloud-4322</link>
      <guid>https://dev.to/nicmsn2/actionable-soil-health-scaling-decisions-to-african-smallholders-with-earth-engine-cloud-4322</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsk2898tjh8gn967gl9nn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsk2898tjh8gn967gl9nn.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Why Soil Health Matters: The Global Policy Wake-Up Call
&lt;/h4&gt;

&lt;p&gt;Soil is not just “dirt under our feet” it is the foundation of food security, climate resilience, biodiversity, water regulation, and economic stability. This reality is now driving global policy. In response to accelerating land degradation, the European Commission introduced the &lt;a href="https://environment.ec.europa.eu/topics/soil-health/soil-health_en" rel="noopener noreferrer"&gt;Soil Monitoring Law&lt;/a&gt;, a landmark policy designed to ensure that by 2050, all soils are healthy, resilient, and productive.&lt;br&gt;
The law establishes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Standardized soil health indicators&lt;/li&gt;
&lt;li&gt;Continuous soil monitoring&lt;/li&gt;
&lt;li&gt;Sustainable land management obligations&lt;/li&gt;
&lt;li&gt;Restoration targets for degraded soils&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This policy is not just a European issue—it represents a global shift in how soil is governed. And as climate change, food insecurity, and land degradation increasingly affect Africa, it is clear that similar regulatory frameworks will eventually extend to African nations.&lt;br&gt;
That realization became the catalyst for this project. We therefore decided to strategically develop a soil-health compliance tool that aligns African agriculture with future global soil laws, climate policies, and emerging carbon markets.&lt;/p&gt;

&lt;p&gt;Anticipating African Compliance Before It Becomes Mandatory&lt;br&gt;
By understanding the trajectory of the &lt;a href="https://environment.ec.europa.eu/topics/soil-health/soil-health_en" rel="noopener noreferrer"&gt;Soil Monitoring Law&lt;/a&gt;, we recognized that Africa would not be exempt from future soil governance, especially under:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Climate finance frameworks&lt;/li&gt;
&lt;li&gt;Carbon markets&lt;/li&gt;
&lt;li&gt;Sustainable agriculture certification&lt;/li&gt;
&lt;li&gt;International climate reporting&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;Rather than waiting for regulation to be imposed on African farmers with little preparation, we chose to innovatively act early.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  Our Objective was clear..
&lt;/h4&gt;

&lt;p&gt;To build a decision-intelligence soil health platform for Africa using the geospatial cloud platform Google Earth Engine designed by African realities, for African farmers, enabling:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Regulatory readiness&lt;/li&gt;
&lt;li&gt;Sustainable land management&lt;/li&gt;
&lt;li&gt;Climate-smart farming&lt;/li&gt;
&lt;li&gt;Data-driven agricultural decisions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The application is developed using Earth Engine’s intuitive user interface. On the app, a farmer selects a region, and the system automatically extracts multi-parameter soil data. At the backend, the platform automatically evaluates and computes essential soil parameters; Soil Organic Carbon, Texture, Soil Water Content, Soil Electrical Conductivity and Soil pH. These are fused into a single Soil Health Indicator Score. The system generates an intelligent decision and action guidance. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl24jxefbymqrx74k96yp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl24jxefbymqrx74k96yp.png" alt=" " width="501" height="899"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Agile Methodology as the Foundation of Implementation
&lt;/h4&gt;

&lt;p&gt;Given the uncertainty in geospatial processing, regional soil variability, and integration of multiple datasets, an &lt;a href="https://asana.com/resources/agile-methodology" rel="noopener noreferrer"&gt;Agile development methodology&lt;/a&gt; was adopted. Agile allows incremental delivery, ensuring:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Iterative development&lt;/li&gt;
&lt;li&gt;Continuous testing&lt;/li&gt;
&lt;li&gt;Rapid prototyping&lt;/li&gt;
&lt;li&gt;Incremental delivery&lt;/li&gt;
&lt;li&gt;Feedback-driven improvements
This approach ensured that the system evolved through tested functional modules, rather than a single rigid release.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Project Management for Good: How the System Was Built
&lt;/h4&gt;

&lt;p&gt;This project followed a formal project management life cycle, aligned with policy implementation, risk management, stakeholder needs, and sustainability goals. The developers began by scoping the project to focus on African countries in the initial phase, with built-in scalability for future multi-regional deployment.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Scope &amp;amp; Mission Definition – Defining the Boundaries of Impact
Project Scope
To develop a regional African soil health compliance and decision-support tool that:&lt;/li&gt;
&lt;li&gt;Assesses real soil health parameters&lt;/li&gt;
&lt;li&gt;Generates a composite Soil Health Indicator Score&lt;/li&gt;
&lt;li&gt;Produces automated intelligent recommendations&lt;/li&gt;
&lt;li&gt;Supports both farm-level and regional-level monitoring&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;With this scope, we targeted direct impact for the following core beneficiaries:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Smallholder and commercial farmers&lt;/li&gt;
&lt;li&gt;Agribusinesses&lt;/li&gt;
&lt;li&gt;Climate-finance programs&lt;/li&gt;
&lt;li&gt;Government agricultural agencies&lt;/li&gt;
&lt;li&gt;Climate adaptation projects&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Project Design &amp;amp; Methodology – Engineering the Intelligence
To ensure scalability across countries, transparent logic for policy alignment, and future expansion into carbon markets and ESG reporting, a dynamic system geospatial cloud architecture was designed using formal UML principles. Agile project delivery through &lt;a href="https://ddi-dev.com/blog/it-news/agile-software-development-lifecycle-phases-and-methodologies-explained/" rel="noopener noreferrer"&gt;sprint-based development&lt;/a&gt; was adopted to ensure speed without loss of scientific rigor. We used the Earth Engine as a development platform was Chosen. Google Earth Engine is a powerful cloud-based geospatial analysis platform with access to petabytes of satellite and environmental datasets and free high-performance computing through Google’s cloud infrastructure. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;All integrated into a single intelligent dashboard. The full system is built on Google Earth Engine because it enables, Global soil data access, High-resolution geospatial analysis, Fast cloud-scale computation, Satellite soil climate integration and Real-time regional assessments. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3bd778qvb4255q7s2xz2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3bd778qvb4255q7s2xz2.png" alt=" " width="800" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Project Monitoring Evaluation &amp;amp; Control
&lt;/h4&gt;

&lt;p&gt;Project Monitoring and Evaluation (M&amp;amp;E) is an essential step in any “projects for good” initiative especially one aligned with public policy such as the Soil Law. Governments and climate programs require quantifiable metrics to assess long-term effectiveness.&lt;br&gt;
In this project, it was critical to ensure, no misleading soil ratings, no false sustainability signals and high trust in compliance reporting. Monitoring &amp;amp; Evaluation ensured Continuous index validation, Trend consistency monitoring, Logical decision verification and Parameter sensitivity control. &lt;br&gt;
&lt;a href="https://www.evalcommunity.com/career-center/key-performance-indicators/" rel="noopener noreferrer"&gt;Monitoring and Evaluation (M&amp;amp;E) KPIs&lt;/a&gt; are quantifiable metrics used to track progress and measure success against defined objectives. They ensure accountability and enable data-driven decision-making. In this project, we designed custom KPIs with quantifiable performance metrics, tracked over defined periods. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F69pmeftt6uuo7sgvxpo2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F69pmeftt6uuo7sgvxpo2.png" alt=" " width="800" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This Is a Strategic African Solution because it delivers five strategic breakthroughs for Africa:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Future-Proof Compliance – Farmers prepare for soil law before it arrives&lt;/li&gt;
&lt;li&gt;Climate Finance Readiness – Soil health data enables carbon markets &amp;amp; ESG&lt;/li&gt;
&lt;li&gt;Food Security Protection – Healthier soils = resilient yields&lt;/li&gt;
&lt;li&gt;National Soil Monitoring Capacity – Governments gain real-time soil intelligence&lt;/li&gt;
&lt;li&gt;Digital Agriculture Transformation – Smart farming becomes measurable&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;

</description>
      <category>google</category>
      <category>cloud</category>
      <category>science</category>
      <category>datascience</category>
    </item>
    <item>
      <title>Predicting Vehicle Depreciation with Machine Learning and Environmental Intelligence</title>
      <dc:creator>Nicholas </dc:creator>
      <pubDate>Sat, 08 Nov 2025 16:06:10 +0000</pubDate>
      <link>https://dev.to/nicmsn2/predicting-vehicle-depreciation-with-machine-learning-and-environmental-intelligence-15gc</link>
      <guid>https://dev.to/nicmsn2/predicting-vehicle-depreciation-with-machine-learning-and-environmental-intelligence-15gc</guid>
      <description>&lt;p&gt;In this project I demonstrate a &lt;strong&gt;climate-resilient manufacturing and green supply chain decision intelligence system&lt;/strong&gt; that uses environmental stress modelling, Earth-observation data, and machine learning to optimize vehicle lifecycle sustainability, reduce warranty-related financial risks, and enhance long-term asset value for sustainable automotive operations.&lt;/p&gt;

&lt;p&gt;The Project is build on Geospatial cloud platform #Google #Earth #Engine&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg8lfzsa6rg2i7dj7jdr9.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg8lfzsa6rg2i7dj7jdr9.PNG" alt=" " width="782" height="518"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;NicsAutomotive Co.'s global operations, sustainability has evolved beyond compliance — it is now a core driver of innovation, efficiency, and long-term value creation. As the Lead Sustainability Project Manager, I work at the intersection of engineering, data, finance, and supply chain divisions to design and implement sustainable strategies that optimize both environmental performance and financial outcomes to embed sustainability into every decision we make. My mandate is to leverage data-driven intelligence to uncover new ways of optimizing product performance and financial resilience.&lt;/p&gt;

&lt;p&gt;As climate patterns become increasingly unpredictable, businesses must anticipate not react to, environmental risk. The automotive industry’s future will depend on integrating climate intelligence into financial planning, supply chain logistics, and product development. We’re in journey of developing a comprehensive Environmental Wear Index (EWI) that incorporates:&lt;/p&gt;

&lt;p&gt;Air quality data (PM2.5, NO₂)&lt;br&gt;
UV radiation&lt;br&gt;
Soil humidity&lt;br&gt;
Atmospheric corrosion potential&lt;/p&gt;

&lt;p&gt;This will power advanced predictive dashboards for both fleet management and sustainability reporting, reinforcing our data-driven, environmentally aligned business model.&lt;/p&gt;

&lt;p&gt;I used Agile methodology which supports the concept of starting small and rolling out a project through gradual, incremental releases to develop our year’s most transformative initiative, machine learning project to predict vehicle depreciation caused by environmental exposure. This project represents a powerful convergence of geospatial science, artificial intelligence, and automotive engineering, revealing how external environmental conditions contribute to vehicle aging and market value loss — a factor often overlooked in traditional depreciation models. It blends Earth Observation (EO) satellite data from Google Earth Engine Data Catalogue, Python-based analytics, and financial modeling to quantify how climate and geography influence vehicle value loss. The insights from this project are reshaping how we think about asset management, sustainability, and profitability at NicsAutomotive Co.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rethinking Depreciation: Where Finance Meets Climate&lt;/strong&gt;&lt;br&gt;
Traditionally, the automotive industry has calculated depreciation using internal variables such as vehicle age, mileage, make, model, and maintenance history. However, these approaches fail to capture a critical aspect of real-world performance — the influence of environmental stressors such as temperature variation, rainfall intensity, humidity, and UV exposure.&lt;/p&gt;

&lt;p&gt;For example, Vehicles in hot, humid, or high-rainfall regions experience faster material degradation — from corrosion and paint wear to engine performance decline compared to those in moderate climates. Similarly, rainfall frequency and atmospheric moisture can accelerate rust and damage to vehicle body parts, reducing the vehicle’s lifespan and resale value. These environmental effects lead to hidden losses across resale markets, leasing operations, and long-term warranty costs.&lt;/p&gt;

&lt;p&gt;For a CFO, these aren’t just environmental issues — they are balance sheet realities. Ignoring environmental exposure means underestimating depreciation, mispricing assets, and inaccurately forecasting financial risk. Recognizing this gap, our sustainability and data teams collaborated to build a new predictive model that quantifies the environmental contribution to vehicle depreciation, using Earth Observation (EO) satellite data and machine learning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Vision: Environmental Intelligence for Economic Precision&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Our objective was simple but bold:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To quantify how environmental conditions contribute to vehicle depreciation and predict the financial loss associated with those factors.&lt;/p&gt;

&lt;p&gt;We brought together sustainability science, machine learning, and corporate finance to deliver a model that links environmental data to economic outcomes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Methodology&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We used the Google Earth Engine (GEE) Python API to extract and process large-scale environmental datasets. Two main EO sources formed the foundation of our environmental variables:&lt;/p&gt;

&lt;p&gt;CHIRPS (Climate Hazards Group InfraRed Precipitation with Station data) for rainfall intensity (mm/day).&lt;br&gt;
MODIS-LST (MOD11A2) for land surface temperature (°C) at 1 km spatial resolution.&lt;/p&gt;

&lt;p&gt;These datasets were matched to the geographic locations of our dealerships and storage yards, where environmental exposure is most likely to affect vehicles during inventory and sales cycles. Using county-level shapefiles, we spatially joined each region’s environmental conditions to the vehicle datasets stored in our internal database, which included make, model, year, mileage, resale price, and age.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjg7edl4l07tumx9g01oa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjg7edl4l07tumx9g01oa.png" alt=" " width="800" height="482"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Key Findings: When Climate Meets the Bottom Line&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It was surprisingly that;&lt;/p&gt;

&lt;p&gt;Our model revealed that environmental exposure accounts for up to 20% of total depreciation variance across vehicle categories.&lt;/p&gt;

&lt;p&gt;For vehicles exposed to high heat and rainfall, the rate of depreciation increased by 12–15%, translating to substantial cumulative financial losses at the fleet level.&lt;/p&gt;

&lt;p&gt;By integrating environmental intelligence, we improved depreciation forecasting accuracy by over 30%, giving our finance teams a clearer, more realistic picture of asset value over time.&lt;/p&gt;

&lt;p&gt;The CFO’s Perspective: Turning Sustainability into Economic Value&lt;/p&gt;

&lt;p&gt;From a Chief Finance Officer’s standpoint, this project offers profound financial implications:&lt;/p&gt;

&lt;p&gt;Risk Reduction: With precise environmental depreciation forecasts, the company can improve asset valuation, reduce residual loss, and plan for long-term financial exposure.&lt;br&gt;
Capital Efficiency: Accurate forecasting supports better inventory rotation, lease pricing, and warranty provisioning, directly strengthening cash flow management.&lt;br&gt;
Investment Confidence: By demonstrating quantifiable sustainability metrics linked to financial performance, the company strengthens its position with investors, lenders, and shareholders.&lt;br&gt;
Operational Savings: Predictive insights guide preventive maintenance and climate-adaptive storage decisions, minimizing repair costs and material waste.&lt;/p&gt;

&lt;p&gt;This initiative underscores a crucial evolution in automotive finance — sustainability data is no longer a cost center; it’s a profit optimization tool.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Sustainability as Competitive Advantage&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Beyond financial forecasting, this project has elevated NicsAutomotive Co's market position in several ways:&lt;/p&gt;

&lt;p&gt;Investor Attraction and ESG Alignment In today’s market, investors increasingly evaluate companies based on Environmental, Social, and Governance (ESG) performance. By integrating satellite-derived environmental data into our operations, NicsAutomotive Co strengthens its ESG reporting and aligns with SBTi and TCFD frameworks critical indicators for sustainable investment portfolios.&lt;br&gt;
Customer Trust and Market Differentiation Modern customers want more than performance; they want purpose. Sustainable vehicles designed with environmental resilience in mind offer longer lifespans, better resale value, and lower lifecycle emissions a powerful message in markets driven by eco-conscious buyers.&lt;br&gt;
Strategic Foresight and Brand Leadership Through this initiative, NicsAutomotive Co demonstrates that sustainability is not an afterthought but a strategic core of innovation. This positions the company as a climate-smart automotive leader, ready to adapt to evolving regulatory standards and consumer expectations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;From Data to Strategy: Business Impacts&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Following implementation, several immediate business applications emerged:&lt;/p&gt;

&lt;p&gt;Dynamic Pricing Models: Dealers can now adjust resale prices based on climate exposure, improving market fairness and customer transparency.&lt;br&gt;
Inventory Optimization: Vehicles can be stored or sold in regions with minimal environmental depreciation risk, reducing hidden costs.&lt;br&gt;
Sustainable Manufacturing Insights: Engineers are using model results to inform climate-resilient design improvements, extending vehicle durability and sustainability performance.&lt;/p&gt;

&lt;p&gt;Each of these applications contributes not only to cost savings but also to NicsAutomotive Co’s long-term sustainability goals, ensuring our products remain competitive, durable, and environmentally responsible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Profit, Planet, and Predictive Intelligence&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sustainability is not just about reducing emissions — it’s about building an organization capable of anticipating risks, optimizing value, and inspiring trust.&lt;/p&gt;

&lt;p&gt;By merging machine learning, Earth observation, and financial analytics, we’ve transformed how NicsAutomotive Co views depreciation — not as an unavoidable loss, but as a predictable, controllable, and optimizable variable.&lt;/p&gt;

&lt;p&gt;This project exemplifies the future of sustainable business: one where data predicts loss, strategy prevents it, and sustainability creates value — for shareholders, customers, and the planet alike.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>cloud</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Malaria Risk Mapping with Google Earth Engine: An Enterprise Geospatial Solution</title>
      <dc:creator>Nicholas </dc:creator>
      <pubDate>Tue, 27 May 2025 18:58:01 +0000</pubDate>
      <link>https://dev.to/nicmsn2/malaria-risk-mapping-using-google-earth-engine-a-geospatial-approach-4pm6</link>
      <guid>https://dev.to/nicmsn2/malaria-risk-mapping-using-google-earth-engine-a-geospatial-approach-4pm6</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;Welcome to the strategic world of &lt;strong&gt;malaria risk mapping&lt;/strong&gt;, powered by &lt;strong&gt;Google Earth Engine (GEE)&lt;/strong&gt;—a geospatial cloud platform within the Google Cloud ecosystem purpose-built for planetary-scale geospatial analysis. GEE was fitting in this project for its unparalleled capabilities in processing vast amounts of satellite imagery and climate data. This project represents a significant leap forward in public health surveillance, offering a geospatial approach to proactive disease management.&lt;/p&gt;

&lt;p&gt;This initiative strategically taps into GEE’s massive climate raster data stored in the &lt;a href="https://developers.google.com/earth-engine/datasets" rel="noopener noreferrer"&gt;Google Earth Engine Data Catalog&lt;/a&gt; and Google’s robust cloud computing muscles. Our goal was to accurately map where mosquito populations are most likely to thrive, influenced by critical factors such as climate change, rainfall patterns, human activities leading to land cover shifts, and elevation data. A key design principle was to leverage a cloud-native architecture, meaning everything is done in the cloud—eliminating the need to spin up your own servers or wrestle with colossal CSV files. The ultimate output? An &lt;strong&gt;interactive malaria risk mapping web-application&lt;/strong&gt; designed to empower scientists, policymakers, and C-suite decision-makers to pinpoint areas at the highest malaria risk, all with a few clicks. This application acts as a critical decision support system, helping to channel resources where they are needed most effectively.&lt;/p&gt;

&lt;p&gt;Let’s delve into the systematic process we employed to build this powerful and intuitive web-app, illustrating how &lt;strong&gt;Business Systems Analysis&lt;/strong&gt; methodologies were integral to its success.&lt;/p&gt;

&lt;h3&gt;
  
  
  Malaria Risk Earth Engine Web-App Architecture: A Top-Down Design
&lt;/h3&gt;

&lt;p&gt;To set the stage for the project architecture, it's crucial to understand that while developed primarily using the GEE Code Editor, the entire application seamlessly integrates with the broader Google Cloud Platform (GCP). You would like to refer on &lt;a href="https://dev.to/nicmsn2/creating-an-earth-engine-cloud-project-44ga"&gt;Creating an Earth Engine Cloud Project&lt;/a&gt; for technical setup details.  &lt;/p&gt;

&lt;p&gt;Our design philosophy adhered to a &lt;strong&gt;top-down analysis and design approach&lt;/strong&gt;, starting from the overarching business objectives of MalariaOrg and iteratively breaking them down into granular system components. Although the application runs entirely on Google Earth Engine’s cloud-native platform, its underlying design consciously adheres to &lt;a href="https://cloud.google.com/architecture/framework" rel="noopener noreferrer"&gt;GCP's Well-Architected Framework&lt;/a&gt; pillars. This ensures scalable infrastructure, robust data-driven decision support, and minimal operational overhead, offering a secure, cost-effective way to monitor malaria risk at a national scale.&lt;/p&gt;

&lt;p&gt;Before designing any technical solution, I led a Root Cause Analysis using the Fishbone Diagram (Ishikawa Diagram) technique to identify the key drivers of ineffective malaria monitoring systems:&lt;br&gt;
Our journey began with a thorough root cause analysis to understand the complexities of malaria transmission and the limitations of existing surveillance methods. We utilized a Fishbone Diagram, also known as a Cause-and-Effect Diagram, to visually dissect the problem. This allowed us to categorize contributing factors into key areas such as Environment, Data, Technology, Human Factors, and Policy.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Environment&lt;/strong&gt;: Climatic conditions (rainfall, temperature, humidity), stagnant water bodies, vegetation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data&lt;/strong&gt;: Data scarcity, data inconsistencies, delayed reporting, lack of real-time data, unintegrated data sources.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Technology&lt;/strong&gt;: Limited access to advanced mapping tools, insufficient computational power, lack of expertise in geospatial analysis.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Human Factors&lt;/strong&gt;: Inadequate training for data collection, resistance to new technologies, limited community engagement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Policy&lt;/strong&gt;: Unclear guidelines for data sharing, insufficient funding for surveillance programs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This comprehensive analysis revealed that a lack of timely, granular, and easily accessible environmental data was a significant bottleneck in effective malaria risk prediction and intervention. This analysis helped visualize the multi-dimensional nature of the problem and formed the basis for our problem statement and business case.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyucmu0z9284dn1d47k7x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyucmu0z9284dn1d47k7x.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Requirements Elicitation and Analysis
&lt;/h3&gt;

&lt;p&gt;Stakeholder engagement was maintained through sprint reviews, biweekly check-ins, and documentation updates on Confluence. To ensure our primary stakeholders’ alignment and build a system that addresses actual needs, I employed a mix of elicitation techniques:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhd1qwkr8ldm6tmh4brog.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhd1qwkr8ldm6tmh4brog.png" alt=" " width="655" height="292"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  System Requirements Specifications (SRS) and Scalability
&lt;/h3&gt;

&lt;p&gt;A comprehensive &lt;strong&gt;System or Software Requirements Specification (SRS)&lt;/strong&gt; document was developed at the outset of the project and continuously updated throughout the Agile sprints. The SRS served as the single source of truth for all requirements, ensuring alignment between stakeholders and the development team. Its main elements included:&lt;br&gt;
• Introduction: Purpose, scope, definitions, and references.&lt;br&gt;
• Overall Description: Product perspective, product functions, user characteristics, general constraints, assumptions, and dependencies.&lt;br&gt;
• Specific Requirements:&lt;br&gt;
o   Functional Requirements: What the system must do (e.g., "The system shall ingest daily precipitation data from CHIRPS.").&lt;br&gt;
o   Non-Functional Requirements: Qualities of the system (e.g., performance, security, uptime, usability, scalability).&lt;br&gt;
o   External Interface Requirements: How the system interacts with other systems (e.g., Python &amp;amp; JavaScript APIs for Google Earth Engine).&lt;br&gt;
o   Performance Requirements: Response times, data processing throughput.&lt;br&gt;
o   Security Requirements: Data access control, authentication.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ensuring Scalability of the Malaria System
&lt;/h3&gt;

&lt;p&gt;Scalability was a paramount non-functional requirement for the malaria system. We designed the system with future growth in mind, knowing that MalariaOrg would likely expand its operations to new regions and require processing larger datasets. To ensure system scalability, we leveraged the cloud-native architecture of Google Earth Engine and designed the system to dynamically update as new satellite data becomes available, enabling region-wide or even continent-wide coverage.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cloud-Native Architecture: Leveraging Google Earth Engine's cloud infrastructure inherently provides horizontal scaling capabilities for computation and storage.&lt;/li&gt;
&lt;li&gt;Modular Design: Breaking the system into independent, loosely coupled modules allowed for individual components to be scaled up or down as needed without affecting the entire system.&lt;/li&gt;
&lt;li&gt;Stateless Components: Designing components to be stateless minimized dependencies and facilitated easier scaling.&lt;/li&gt;
&lt;li&gt;Efficient Algorithms: Optimizing GEE scripts and data processing algorithms for performance and resource utilization.&lt;/li&gt;
&lt;li&gt;Database Design: Employing scalable database solutions (e.g., NoSQL databases for geospatial data) to handle increasing data volumes.&lt;/li&gt;
&lt;li&gt;This strategic focus on scalability ensures the longevity and adaptability of the malaria monitoring system as MalariaOrg's needs evolve.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Top-Down Analysis and System Design process
&lt;/h3&gt;

&lt;p&gt;We wanted methodical approach which could allow us to move from high-level conceptualization to detailed technical implementation, ensuring alignment with user needs at every step. We arrived at a top-down design approach, the system was modeled from the high-level organizational goals down to detailed functional requirements. This approach ensured that the overall architecture was sound and that individual modules aligned with the overarching strategic vision. This began with identifying Business Objectives (e.g., improve disease preparedness, reduce outbreak response time) and decomposing them into functional modules such as:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Data Ingestion: Loading relevant environmental and demographic data directly from the Google Earth Engine Data Catalog. This also involved data validation and pre-processing to ensure data quality.&lt;/li&gt;
&lt;li&gt; Data Processing &amp;amp; Modeling: Performing complex geospatial analysis and statistical modeling within the Earth Engine Code Editor. This is where our business logic for malaria risk prediction was codified.&lt;/li&gt;
&lt;li&gt; Interactive Web Map Development: Designing an intuitive, sleek, and highly interactive web map interface. Our focus here was on usability and clear information visualization for diverse stakeholders.
In the system design and development, I developed the System Architecture Diagram, using popular software tools Lucidchart, Jira and Python and JavaScript APIs in GEE to script geospatial logic and visualization layers. I also used &lt;strong&gt;Entity Relationship Diagrams&lt;/strong&gt; (ERD), and &lt;strong&gt;Data Flow Diagrams&lt;/strong&gt; (DFD) to communicate design specifications to developers and data scientists but in this article I’ll only show the System Architecture Diagram. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fme65k9t20jvy31g8e8bx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fme65k9t20jvy31g8e8bx.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Software Development Methodology: Agile Development
&lt;/h3&gt;

&lt;p&gt;We adopted an Agile development methodology, specifically Scrum, for this project. This iterative and incremental approach was highly effective given the evolving nature of geospatial data analysis and the need for continuous feedback from MalariaOrg.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Sprints&lt;/strong&gt;: The project was broken down into short, time-boxed iterations (sprints), typically 2-4 weeks long.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Daily Scrums&lt;/strong&gt;: Short daily meetings to synchronize activities and identify impediments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sprint Reviews&lt;/strong&gt;: Demonstrations of completed work to stakeholders at the end of each sprint.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sprint Retrospectives&lt;/strong&gt;: Team meetings to reflect on the past sprint and identify areas for improvement.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This iterative process allowed for rapid prototyping, frequent validation with stakeholders, and the flexibility to adapt to new insights or changing priorities.&lt;/p&gt;

&lt;h3&gt;
  
  
  Interactive Web App: The User-Centric Interface Showing Malaria Risk Scores
&lt;/h3&gt;

&lt;p&gt;This is the showstopper—the Beyoncé of the app, built with a strong focus on User Experience (UX). Through extensive requirements elicitation, including interviews with epidemiologists and public health officials, we defined clear User Stories and Acceptance Criteria for the interactive map features.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic Risk Mapping&lt;/strong&gt;: Once a county is selected, the system, based on complex GEE scripts, processes all the relevant environmental data and generates a dynamic malaria breeding conditions map.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Intuitive Visualization&lt;/strong&gt;: Areas are color-coded using a 5-level scale, making risk levels immediately understandable. This aligns with the functional requirement of clear visual communication.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Interactive Web App-Map Showing Malaria Risk Scores
&lt;/h3&gt;

&lt;p&gt;This is the showstopper—the Beyoncé of the app, built with a strong focus on User Experience (UX). Through extensive requirements elicitation, including interviews with epidemiologists and public health officials, we defined clear User Stories and Acceptance Criteria for the interactive map features.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic Risk Mapping&lt;/strong&gt;: Once a county is selected, the system, based on complex GEE scripts, processes all the relevant environmental data and generates a dynamic malaria breeding conditions map.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Intuitive Visualization&lt;/strong&gt;: Areas are color-coded using a 5-level scale, making risk levels immediately understandable. This aligns with the functional requirement of clear visual communication.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1hzvkrobjimfban7npqy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1hzvkrobjimfban7npqy.png" alt=" " width="605" height="55"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Enhanced Data Readability&lt;/strong&gt;: You bet we added a custom swatch legend (hello, UX excellence!) and printed dynamic values for average temperature, rainfall, elevation, and land cover directly from the study area. This fulfills the non-functional requirement of providing comprehensive, context-specific information at a glance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Purposeful Data Display&lt;/strong&gt;: The real gem is a dynamic malaria score legend panel, which not only tells you your county’s risk but also helps make data feel like data with purpose. This was a key Usability Requirement identified during our stakeholder workshops.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And if you love graphs (who doesn’t?), you’ll get live time series charts showing rainfall and temperature trends—no need to squint at spreadsheets anymore. This feature was developed based on the Use Case of a public health official needing to analyze historical environmental patterns.&lt;/p&gt;

&lt;h3&gt;
  
  
  Multi-Version Development and Population-at-Risk Module
&lt;/h3&gt;

&lt;p&gt;We built this project into two versions: a JavaScript version and a Python version. This approach allowed us to prototype rapidly with JavaScript and then expand capabilities with Python, leveraging its robust data science libraries for more complex analysis.&lt;br&gt;
Our choropleth map built on the &lt;a href="https://nich02.github.io/malariarisk/" rel="noopener noreferrer"&gt;Python version&lt;/a&gt; contains an extended module—it’s now possible to understand the &lt;strong&gt;population under risk&lt;/strong&gt; of malaria infection if it strikes. Sounds cool? This feature, identified as a "Must-Have" requirement during our &lt;strong&gt;requirements prioritization&lt;/strong&gt; using the &lt;strong&gt;MoSCoW technique&lt;/strong&gt; integrates county-level population data. &lt;br&gt;
It enables users to select a county and immediately view its &lt;em&gt;malaria risk score, total population&lt;/em&gt;, and assigned &lt;em&gt;risk level&lt;/em&gt;. For instance, &lt;strong&gt;Samburu&lt;/strong&gt;, a specific county, shows a population of &lt;strong&gt;553,419&lt;/strong&gt; and a &lt;strong&gt;moderate risk level&lt;/strong&gt; with a score of &lt;strong&gt;406&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Time series charts of rainfall and temperature further contextualize the data over time, fulfilling the functional requirement for historical trend analysis. Our &lt;strong&gt;MoSCow technique&lt;/strong&gt; enebled us to consider the &lt;strong&gt;Cost-Benefit Analysis&lt;/strong&gt; to prioritize &lt;strong&gt;features requirement&lt;/strong&gt; that offered the highest return on investment and addressed the most critical pain points. Another priority requirement was the &lt;strong&gt;Risk Assessment approach&lt;/strong&gt; to prioritizing features that mitigated high-impact risks to the project and the malaria organization.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzbhdxla1r0iqskhqya9v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzbhdxla1r0iqskhqya9v.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  My Approach towards Testing and Quality Assurance
&lt;/h3&gt;

&lt;p&gt;Our commitment to delivering a robust and reliable system was underpinned by a comprehensive testing and quality assurance (QA) approach, integrated throughout the Agile development lifecycle.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Unit Testing&lt;/strong&gt;: Individual components of the GEE scripts and Python processing modules were tested to ensure their correctness.&lt;/li&gt;
&lt;li&gt;Integration Testing: Verifying the seamless interaction between different system components, such as data ingestion modules with the mapping interface. This involved testing system integration points.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;System Testing&lt;/strong&gt;: End-to-end testing of the entire system to ensure it met all specified functional and non-functional requirements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance Testing&lt;/strong&gt;: Assessing the system's responsiveness and stability under various load conditions, especially crucial for a system dealing with large geospatial datasets.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User Acceptance Testing (UAT)&lt;/strong&gt;: The final and critical phase where end-users from MalariaOrg validated the system against their operational needs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Successful User Acceptance Testing (UAT)
&lt;/h3&gt;

&lt;p&gt;Throughout the project, we embraced an &lt;strong&gt;Agile development methodology&lt;/strong&gt;, specifically &lt;strong&gt;Scrum&lt;/strong&gt;, which allowed for continuous feedback loops and iterative refinement. Our approach to testing and quality assurance was integrated into every sprint:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Unit Testing of individual GEE scripts and Python modules.&lt;/li&gt;
&lt;li&gt;Integration Testing to ensure seamless system integration between data processing, modeling, and the web-app.&lt;/li&gt;
&lt;li&gt;System Testing for end-to-end functionality.&lt;/li&gt;
&lt;li&gt;User Acceptance Testing (UAT)- This was the final and most crucial validation step. Successful user acceptance testing involved key end-users (e.g. epidemiologists, public health program managers) from MalariaOrg. They tested the application against real-world scenarios and their defined Acceptance Criteria, ensuring the system met their operational needs and provided the expected value. Their direct involvement confirmed the system's readiness for deployment.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  In Conclusion: Business Systems Analyst as a Strategic Enabler
&lt;/h3&gt;

&lt;p&gt;This project exemplifies the critical role of a Business Systems Analyst in bridging the gap between intricate business challenges and cutting-edge technological solutions. It demonstrates how Business Systems Analysis (BSA) goes beyond gathering requirements — it is about &lt;strong&gt;orchestrating strategy&lt;/strong&gt;, &lt;strong&gt;process, data&lt;/strong&gt;, and &lt;strong&gt;technology to deliver value&lt;/strong&gt;. By aligning stakeholder needs with a flexible, scalable system built on geospatial intelligence, we enabled the MalariaOrg and its partners to shift from reactive to proactive disease management.&lt;/p&gt;

&lt;p&gt;As a Senior Business Systems Analysis, I championed this outcome through structured analysis, effective communication, and agile execution — delivering not just a system, but a measurable improvement in public health operations.&lt;/p&gt;

&lt;p&gt;This is part of projects we work on here at &lt;a href="https://gdg.community.dev/gdg-for-earth-engine-nairobi/" rel="noopener noreferrer"&gt;GEE DEVS Nairobi Community&lt;/a&gt; which I would encourage you to join. This project was also presented at &lt;a href="https://www.geohealthcop.org/workshops/2025/3/18/telecon-afrigeo" rel="noopener noreferrer"&gt;GEO Health Community of Practice-AfriGEO&lt;/a&gt; as a series of work being done in Africa sponsored by AfriGeo and presented at Google I/O 2025 in Berlin. &lt;/p&gt;

</description>
      <category>geospatial</category>
      <category>googlecloud</category>
      <category>python</category>
      <category>webdev</category>
    </item>
    <item>
      <title>A Standard Exploration of Google Earth Engine Feature Collections</title>
      <dc:creator>Nicholas </dc:creator>
      <pubDate>Thu, 23 Nov 2023 18:41:06 +0000</pubDate>
      <link>https://dev.to/nicmsn2/a-deep-delve-into-google-earth-engine-feature-collections-lno</link>
      <guid>https://dev.to/nicmsn2/a-deep-delve-into-google-earth-engine-feature-collections-lno</guid>
      <description>&lt;p&gt;In Google Earth Engine, a &lt;code&gt;Feature&lt;/code&gt; is an object with a &lt;code&gt;geometry&lt;/code&gt; property storing a Geometry object and a properties property storing a dictionary of other properties. &lt;br&gt;
A &lt;code&gt;FeatureCollection&lt;/code&gt; is a &lt;a href="https://developers.google.com/earth-engine/guides/feature_collections"&gt;Groups of combined related features&lt;/a&gt;. &lt;br&gt;
FeatureCollection objects contains features. Naturally, &lt;code&gt;FeatureCollections&lt;/code&gt; contain geometry and properties, and can also contain other collections.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GeoJSON&lt;/strong&gt; is a data format for encoding a range of geospatial data structures. It supports &lt;em&gt;Point&lt;/em&gt;, &lt;em&gt;Polygon, LineString, MultiLineString&lt;/em&gt; and &lt;em&gt;MultiPolygon&lt;/em&gt; geometries. &lt;/p&gt;

&lt;p&gt;As a &lt;a href="https://earthengine.google.com/"&gt;Google Earth Engine&lt;/a&gt; Developer you might wish to combine features. The feature combining operation, allows for additional geospatial operations on the entire set such as filtering, sorting and rendering. &lt;br&gt;
Individual geometries can also be turned into a &lt;code&gt;FeatureCollection&lt;/code&gt; a single Feature. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Ways to Create a FeatureCollection in GEE&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;1.Geometry Points&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
A FeatureCollection can be created using individual geometries. The geometries can be turned into can a FeatureCollection of just one Feature. An example is the code below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Make a feature with some properties.
var feature = ee.Feature(ee.Geometry.Point([37.393616042129715, -0.012801305697836253]))
  .set('County', 'Meru').set('Meru1', 'Settings');
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;*&lt;em&gt;2. GeometryPolygons *&lt;/em&gt;&lt;br&gt;
Another way to create a &lt;code&gt;FeatureCollection&lt;/code&gt; in GEE is using GeometryPolygons. This technique calls for drawing a Polygon on the map then convert the polygon into a Geometry using the &lt;code&gt;ee.Geometry.Polygon&lt;/code&gt; with Geometries put in a dictionary format. The code prints the geometry properties using the &lt;code&gt;print()&lt;/code&gt; function the adds the polygon into a map using the &lt;code&gt;Map.addLayer()&lt;/code&gt; method. &lt;/p&gt;

&lt;p&gt;The code below plots th polygon of Nairobi county..&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Creating Nairobi Polygon with Geometries
var Nairobi = 
ee.Geometry.Polygon(
        [[[36.668518385879715, -1.2396225227250073],
          [36.695984206192215, -1.354380436474334],
          [36.822326979629715, -1.3928215346108865],
          [36.915710768692215, -1.359872059659389],
          [36.978882155410965, -1.313192869399109],
          [36.976135573379715, -1.2829882209698302],
          [37.028320631973465, -1.2994635284940157],
          [37.075012526504715, -1.3077011420427207],
          [37.105224928848465, -1.2610209794600944],
          [37.061279616348465, -1.2061020716359079],
          [36.998108229629715, -1.2390535525537143],
          [36.970642409317215, -1.2170859434783168],
          [36.918457350723465, -1.2115940131238145],
          [36.885498366348465, -1.1841341953591218],
          [36.836059889785965, -1.2061020716359079],
          [36.792114577285965, -1.1951181554616812],
          [36.745422682754715, -1.228069770585397],
          [36.701477370254715, -1.2610209794600944]]]);
print (Nairobi)
Map.addLayer(Nairobi)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Featurecollection can be added to a map directly with &lt;code&gt;Map.addLayer()&lt;/code&gt; function.&lt;br&gt;
By default, map visualization displays the vectors with a solid black lines and semi-opaque black fill. However, it is possible to render the vectors in a color by specifying the &lt;code&gt;.color&lt;/code&gt; parameter. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Using Shapefile&lt;/strong&gt;&lt;br&gt;
A &lt;strong&gt;shapefile&lt;/strong&gt; is a simple, non-topological format for storing the geometric location and attribute information of geographic features. Within a shapefile geographic features can be represented by lines, points, or polygons/areas. The workspace containing shapefiles may also contain dBASE tables, which can store additional attributes that can be joined to a shapefile's features. &lt;br&gt;
A geographic location-based shapefile can be imported into Earth Engine and be used as a &lt;code&gt;FeatureCollection&lt;/code&gt;. Boundary or administrative shapefile is a good example to demonstrate how to use shapefile as shapefile. &lt;a href="https://data.apps.fao.org/map/catalog/static/search?format=shapefile"&gt;Global Administrative Areas (GADM) 3.6&lt;/a&gt; vector dataset series which includes distinct datasets representing administrative boundaries for all countries in the world. The code below demonstrates how to import FAO’s - GADM 3.6 - Country boundaries (level 0) into Google Earth Engine and use it as a FeatureCollection. The Country boundaries are positioned at level 0 in the GADM 3.6 dataset. In this regard, our code below will focus on Kenya.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;///////////////////Creating FeatureCollection from Dataset /////////////
var admin0 = ee.FeatureCollection('FAO/GAUL_SIMPLIFIED_500m/2015/level2');
var Kenya = admin0.filter(ee.Filter.eq('ADM0_NAME', 'Kenya'));
print(Kenya)
Map.centerObject(Kenya)
Map.addLayer(Kenya)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Visualizing FeatureCollections&lt;/strong&gt;&lt;br&gt;
Once all the operations are completed, it is time to visualize our &lt;code&gt;FeatureCollection&lt;/code&gt;. Like images, geometries and features, FeatureCollections can be visualized on a map using the &lt;code&gt;Map.addLayer()&lt;/code&gt; function. While images are visualized based on the pixel values, feature collections use feature properties/attributes. Vector layers are added on map by assigning a value to the &lt;em&gt;red, green&lt;/em&gt; and &lt;em&gt;blue&lt;/em&gt; channels for individual pixel on the screen based on the geometry and attributes of the features.&lt;/p&gt;

&lt;p&gt;The following functions are used to visualize a vector on map:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Map.addLayer&lt;/code&gt;: As with raster layers, you can add a FeatureCollection to the Map by specifying visualization parameters. This method supports only one visualization parameter: color. All features are rendered with the specified color.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;draw&lt;/code&gt;: This function supports the parameters &lt;em&gt;pointRadius&lt;/em&gt; and &lt;em&gt;strokeWidth&lt;/em&gt; in addition to color. It renders all features of the layer with the specified parameters.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;paint&lt;/code&gt;: This is a more powerful function that can render each feature with a different color and width based on the values in the specified property.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;style&lt;/code&gt;: This is the most versatile function. It can apply a different style to each feature, including &lt;em&gt;color&lt;/em&gt;, &lt;em&gt;pointSize, pointShape, width, fillColor,&lt;/em&gt; and &lt;em&gt;lineType&lt;/em&gt;.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Filtering a FeatureCollection&lt;/strong&gt;&lt;br&gt;
FeatureCollection filtering techniques resembles that used in ImageCollections. We can filter by Date(), Bounds() among other filtering techniques. While filtering, we use the &lt;code&gt;featureCollection.filter()&lt;/code&gt; method. &lt;/p&gt;

&lt;p&gt;The code below shows how to apply the filtering technique&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/////////////////////Filtering FeatureCollection///////////////
// Load watersheds from a data table.
var sheds = ee.FeatureCollection('USGS/WBD/2017/HUC06')
//  Convert 'areasqkm' property from string to number.
  .map(function(feature){
    var num = ee.Number.parse(feature.get('areasqkm'));
    return feature.set('areasqkm', num);
  });

// Define a region roughly covering the continental US.
var continentalUS = ee.Geometry.Rectangle(-127.18, 19.39, -62.75, 51.29);

// Filter the table geographically: only watersheds in the continental US.
var filtered = sheds.filterBounds(continentalUS);

// Check the number of watersheds after filtering for location.
print('Count after filter:', filtered.size());

// Filter to get only larger continental US watersheds.
var largeSheds = filtered.filter(ee.Filter.gt('areasqkm', 25000));
// Check the number of watersheds after filtering for size and location.
print('Count after filtering by size:', largeSheds.size());
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Extracting Metadata from a FeatureCollection&lt;/strong&gt;&lt;br&gt;
It is possible to extract information from a FeatureCollection like count of features, statistical description, or even perform  mathematical computations on a FeatureCollection.&lt;br&gt;
Let’s say we want to extract for information/metadata from a FeatureCollection using a code in Earth Engine..&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;//////////////////////Extracting FeatureCollection Metadata/////////////
// Load watersheds from a data table.
var Kenya = admin0.filter(ee.Filter.eq('ADM0_NAME', 'Kenya'));
var sheds = ee.FeatureCollection('USGS/WBD/2017/HUC06')
  // Filter to the continental US.
  //.filterBounds(RoI)
  .filterBounds(ee.Geometry.Rectangle(-127.18, 19.39, -62.75, 51.29))
  // Convert 'areasqkm' property from string to number.
  .map(function(feature){
    var num = ee.Number.parse(feature.get('Areasqkm'));
    return feature.set('Areasqkm', num);
  });

// Display the table and print its first element.
Map.addLayer(sheds, {}, 'watersheds');
print('First watershed', sheds.first());

// Print the number of watersheds.
print('Count:', sheds.size());

// Print stats for an area property.
print('Area statistic:', sheds.aggregate_stats('Areasqkm'));
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We have done some of the critical operations required on a FeatureCollection and I believe this helps..any question or comment regarding this topic can be shared in the commend section..&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Creating an Earth Engine Cloud Project</title>
      <dc:creator>Nicholas </dc:creator>
      <pubDate>Sun, 15 Oct 2023 18:07:25 +0000</pubDate>
      <link>https://dev.to/nicmsn2/creating-an-earth-engine-cloud-project-44ga</link>
      <guid>https://dev.to/nicmsn2/creating-an-earth-engine-cloud-project-44ga</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rhIoh9G_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q95119hu36tvr2m9kj8g.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rhIoh9G_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q95119hu36tvr2m9kj8g.jpg" alt="Image Credits:https://www.researchgate.net/figure/The-infrastructure-for-developing-spatial-applications-provided-by-Google-1-cloud_fig1_350147256" width="800" height="402"&gt;&lt;/a&gt; Image &lt;a href="https://www.researchgate.net/figure/The-infrastructure-for-developing-spatial-applications-provided-by-Google-1-cloud_fig1_350147256"&gt;credits&lt;/a&gt;&lt;br&gt;
Google Earth Engine is a Geospatial cloud platform that enable monitoring users to monitor and measure earth and environmental changes at a planetary scale. It hosts 70 plus petabytes of historic and present earth observation data in its’ data catalog. The cloud platform offers intrinsically-parallel computation access to thousands of cloud computers. Even though the initial intent was to enhance the scientists’ operational deployment methods, while strengthening public institutions and NGOs’ ability to understand, manage and report on natural resources, Earth Engine is gradually getting adoption in various industries and commercial operations. Earth Engine cloud platform supports crucial geospatial data preprocessing techniques like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generation of on-demand of spatial and temporal mosaics&lt;/li&gt;
&lt;li&gt;Fast calculation and computation of a range of spectral indices
&lt;/li&gt;
&lt;li&gt;Computation of best-pixels composites- removal of image clouds and gaps in imageries&lt;/li&gt;
&lt;li&gt;Machine learning operations in the cloud IDE on satellite imageries&lt;/li&gt;
&lt;li&gt;Creating of publishable geospatial Apps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Earth Engine is integrated with Google Cloud Platform through the Earth Engine REST API. Users make calls to the Earth Engine through a cloud project. It is imperative to register Earth Engine projects to facilitate accessing of Earth Engine API which;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enables usage of satellite data in the data catalog &lt;/li&gt;
&lt;li&gt;Monitoring of EE apps at project level &lt;/li&gt;
&lt;li&gt;Manage assets and permissions in the platform &lt;/li&gt;
&lt;li&gt;Monitor success rate of requests send to Earth Engine service – this helps to debug and optimize Earth Engine powered workflows&lt;/li&gt;
&lt;li&gt;Facilitates permissions to configured applications &lt;/li&gt;
&lt;li&gt;Manages project groups or collaborators&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Let’s Get started
&lt;/h3&gt;

&lt;p&gt;The first step is to go directly to this &lt;a href="https://developers.google.com/earth-engine/cloud/earthengine_cloud_project_setup"&gt;page&lt;/a&gt;. To make EE calls with Google Cloud Project (GCP), you’ll need to have a Google Account, Google Cloud Project then enable Earth Engine API to that project.&lt;/p&gt;

&lt;p&gt;Enabling a Cloud Project with Earth Engine helps to;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use the REST API &lt;/li&gt;
&lt;li&gt;Use a service account for authentication&lt;/li&gt;
&lt;li&gt;Create an App Engine app that uses Earth Engine &lt;/li&gt;
&lt;li&gt;Use a Client ID to uniquely identify an App and pass user credentials&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The first step is to click on &lt;strong&gt;Create a Cloud project&lt;/strong&gt; button if you did not have it before, then follow the steps to have a successful cloud project. &lt;br&gt;
Next is to click the button &lt;strong&gt;Enable the Earth Engine API&lt;/strong&gt; for your created project &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gnzuWV9X--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/skle8j1jop94gazksctd.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gnzuWV9X--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/skle8j1jop94gazksctd.PNG" alt="Setting up Earth Engine enabled Cloud Project" width="800" height="526"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The next step is to go to Enable Engine API, the photo below shows you how to go about it, &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MN7B5-Jh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f4rd35j9fjm04bkglowa.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MN7B5-Jh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f4rd35j9fjm04bkglowa.PNG" alt="Enable Engine API to Google Cloud Project" width="679" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Up to this point we've created a Google Cloud Project and Enabled our Earth Engine API.&lt;/p&gt;

&lt;p&gt;Next is to create an Earth Engine Project, go to this &lt;a href="https://code.earthengine.google.com/register"&gt;link&lt;/a&gt; for easy access of the page. For learning purposes we'll register the &lt;strong&gt;noncommercial&lt;/strong&gt; option, then in the step select Unpaid usage. We have to select our project type. Since we are getting started, we have to &lt;strong&gt;Create a new Google Cloud Project&lt;/strong&gt; then continue to summary.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--V-Z3h8c4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vs9r7dibs6d5vd2olbfh.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--V-Z3h8c4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vs9r7dibs6d5vd2olbfh.PNG" alt="Setting up google earth engine client account" width="716" height="748"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The next step is to enter our project name, then go to confirm page which upon clicking will prompt us to land on the Google Earth Engine IDE. At this point we're good to get started in working on other Earth Engine projects. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--btMeg5I0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ax5mqmw1hohq7gy8r9aw.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--btMeg5I0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ax5mqmw1hohq7gy8r9aw.PNG" alt="Google Earth Engine Coding Interface" width="800" height="180"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Original Article: Written in &lt;a href="https://dev.to/geedevs-nairobi/creating-an-earth-engine-cloud-project-4gja"&gt;GEE DEVs Community Nairobi&lt;/a&gt;  &lt;/p&gt;

</description>
    </item>
    <item>
      <title>Biodiversity Risk is a Business Risk: Protecting Nature for Long-term Success</title>
      <dc:creator>Nicholas </dc:creator>
      <pubDate>Fri, 07 Jul 2023 19:46:12 +0000</pubDate>
      <link>https://dev.to/nicmsn2/biodiversity-risk-is-a-business-risk-protecting-nature-for-long-term-success-2agj</link>
      <guid>https://dev.to/nicmsn2/biodiversity-risk-is-a-business-risk-protecting-nature-for-long-term-success-2agj</guid>
      <description>&lt;p&gt;In today's interconnected world, businesses face a wide range of risks that can impact their operations, profitability, and reputation. While many companies have become adept at managing traditional risks such as financial instability or supply chain disruptions, there is an emerging risk that demands attention: biodiversity loss. Biodiversity risk is not only an environmental concern but also a significant business risk that can have far-reaching consequences. In this article, we will explore why biodiversity risk should be on the radar of every business leader and how investing in the protection of nature can contribute to long-term success.&lt;/p&gt;

&lt;p&gt;The Importance of Biodiversity:&lt;br&gt;
Biodiversity refers to the variety of life forms on Earth, including plants, animals, and microorganisms, as well as the ecosystems they inhabit. It is the web of life that sustains us all, providing essential services such as clean air, water, food, and medicines. Biodiversity is also closely linked to climate regulation, pollination, and soil fertility. The health and resilience of ecosystems are critical for our planet's sustainability and the survival of human societies.&lt;/p&gt;

&lt;p&gt;Biodiversity Risk as a Business Risk:&lt;br&gt;
a. Regulatory and Legal Risks: Governments worldwide are increasingly recognizing the importance of biodiversity conservation and enacting regulations to protect it. Companies that fail to comply with environmental laws and regulations face fines, penalties, and legal liabilities.&lt;/p&gt;

&lt;p&gt;b. Reputational Risks: In an era of heightened environmental awareness, consumers, investors, and other stakeholders expect businesses to act responsibly. Companies that are associated with practices leading to biodiversity loss, such as deforestation or habitat destruction, may face public backlash, boycotts, or damage to their brand reputation.&lt;/p&gt;

&lt;p&gt;c. Supply Chain Risks: Biodiversity loss can disrupt supply chains, particularly for industries dependent on natural resources. For example, agriculture relies heavily on pollinators, and the decline of bees and other pollinators can threaten crop yields and agricultural productivity. Businesses that depend on specific ecosystems or species for their inputs may face supply shortages or increased costs.&lt;/p&gt;

&lt;p&gt;d. Financial Risks: Biodiversity loss can pose financial risks, both directly and indirectly. For instance, extreme weather events linked to climate change, which is interconnected with biodiversity loss, can lead to physical damages, business interruptions, and increased insurance costs. Additionally, investments in sectors that contribute to biodiversity loss may become stranded assets as society transitions towards more sustainable practices.&lt;/p&gt;

&lt;p&gt;Business Opportunities in Biodiversity Conservation:&lt;br&gt;
a. Innovation and Competitive Advantage: Embracing biodiversity conservation can drive innovation and create a competitive advantage. Developing sustainable products, adopting eco-friendly practices, and implementing nature-based solutions can attract environmentally conscious consumers and investors. By integrating biodiversity considerations into their business strategies, companies can tap into new markets and differentiate themselves from their competitors.&lt;/p&gt;

&lt;p&gt;b. Access to Resources and Ecosystem Services: Protecting biodiversity ensures the continued availability of essential resources and ecosystem services that businesses rely on, such as clean water, timber, and natural pollination. By safeguarding these resources, companies can secure their long-term supply chains and reduce operational risks.&lt;/p&gt;

&lt;p&gt;c. Enhanced Stakeholder Engagement: Demonstrating a commitment to biodiversity conservation can foster positive relationships with stakeholders. Engaging with local communities, indigenous peoples, and environmental organizations can build trust and create partnerships that benefit both the business and the surrounding ecosystems.&lt;/p&gt;

&lt;p&gt;In conclusion, biodiversity risk is a business risk that should not be overlooked. Protecting and restoring biodiversity is not only an ethical obligation but also a strategic imperative for long-term business success. By integrating biodiversity considerations into their operations, companies can mitigate regulatory, reputational, supply chain, and financial risks while unlocking new business opportunities. Embracing biodiversity conservation not only safeguards the health of ecosystems but also strengthens the resilience and competitiveness of businesses in a rapidly changing world. It's time for businesses to recognize that investing in nature is investing in their own future.&lt;/p&gt;

</description>
      <category>biodiversity</category>
      <category>climaterisk</category>
      <category>business</category>
      <category>sustainability</category>
    </item>
    <item>
      <title>Unveiling the Gaps in Environmental Sustainability Reporting: An Urgent Need for Transparency</title>
      <dc:creator>Nicholas </dc:creator>
      <pubDate>Fri, 07 Jul 2023 19:35:43 +0000</pubDate>
      <link>https://dev.to/nicmsn2/unveiling-the-gaps-in-environmental-sustainability-reporting-an-urgent-need-for-transparency-3p0j</link>
      <guid>https://dev.to/nicmsn2/unveiling-the-gaps-in-environmental-sustainability-reporting-an-urgent-need-for-transparency-3p0j</guid>
      <description>&lt;p&gt;In an era of heightened environmental awareness, sustainability reporting has emerged as a critical tool for organizations to communicate their environmental performance and progress. These reports serve as a means to disclose environmental impacts, set targets, and demonstrate commitments toward a greener future. However, despite the growing importance of sustainability reporting, there are significant gaps that hinder its effectiveness and limit its potential to drive meaningful change. This article aims to shed light on some of these gaps and emphasize the urgent need for transparency and accountability in environmental sustainability reporting.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Inconsistent Reporting Standards:&lt;br&gt;
One of the foremost challenges in environmental sustainability reporting is the lack of standardized guidelines and frameworks. Currently, various reporting frameworks coexist, such as the Global Reporting Initiative (GRI), Sustainability Accounting Standards Board (SASB), and the Task Force on Climate-related Financial Disclosures (TCFD). The absence of a unified standard makes it difficult for stakeholders to compare and evaluate environmental performance across different organizations. Harmonizing these frameworks and establishing a universal reporting standard would enhance transparency and facilitate more accurate benchmarking.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Insufficient Scope and Depth:&lt;br&gt;
Another crucial gap lies in the scope and depth of reporting. Many organizations tend to focus solely on their direct operational impacts while neglecting their supply chain, indirect impacts, and the full life cycle of their products or services. By not accounting for the entire value chain, organizations fail to provide a comprehensive picture of their environmental footprint. Addressing this gap requires a shift toward a holistic approach, encompassing the entire spectrum of environmental impacts associated with an organization's activities.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Lack of Verification and Assurance:&lt;br&gt;
The credibility of sustainability reports heavily relies on the verification and assurance processes. However, a considerable number of organizations do not undergo independent third-party verification of their reported data, leaving room for inaccuracies or greenwashing. Independent verification ensures the accuracy and reliability of reported information, giving stakeholders confidence in the reported claims. Implementing mandatory verification and assurance processes would strengthen the integrity of sustainability reporting and hold organizations accountable for their environmental performance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Limited Integration of Financial and Environmental Reporting:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;While environmental sustainability and financial performance are intrinsically linked, there is often a gap between financial reporting and environmental reporting. Companies frequently fail to integrate environmental data into their financial reports, hindering investors' ability to fully understand the financial risks and opportunities associated with an organization's environmental performance. Bridging this gap requires the incorporation of environmental metrics and considerations into financial reporting frameworks, enabling investors to make more informed decisions that align with sustainable goals.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Inadequate Transparency and Accessibility:&lt;br&gt;
Transparency is a fundamental aspect of sustainability reporting. Unfortunately, many organizations fall short in providing detailed and easily accessible information to their stakeholders. Non-disclosure or vague reporting practices undermine the credibility of sustainability reports and hinder stakeholders' ability to assess environmental impacts. To address this gap, organizations need to adopt transparent reporting practices, leveraging digital platforms and technologies to provide real-time, accessible, and user-friendly information.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Environmental sustainability reporting has the potential to drive positive change by promoting accountability and inspiring action. However, the presence of gaps in reporting standards, scope, verification, integration, and transparency impedes the effectiveness of sustainability reporting. It is crucial for organizations, policymakers, and stakeholders to collaborate in addressing these gaps, establish unified standards, ensure comprehensive reporting, mandate verification processes, integrate financial and environmental reporting, and promote transparency. Only by closing these gaps can sustainability reporting fulfill its promise and pave the way for a more sustainable future.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>The Connections Between Population and Climate Change</title>
      <dc:creator>Nicholas </dc:creator>
      <pubDate>Fri, 07 Jul 2023 19:22:18 +0000</pubDate>
      <link>https://dev.to/nicmsn2/the-connections-between-population-and-climate-change-13p5</link>
      <guid>https://dev.to/nicmsn2/the-connections-between-population-and-climate-change-13p5</guid>
      <description>&lt;p&gt;The global population has been steadily increasing over the past century, and this trend has significant implications for the planet's climate. As the number of people on Earth continues to rise, so do the demands for resources, energy, and land, all of which contribute to climate change. In this article, we will explore the connections between population growth and climate change, highlighting the key factors and discussing potential solutions to address this critical issue.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Expanding Carbon Footprint:&lt;br&gt;
The primary connection between population growth and climate change lies in the expanding carbon footprint. With more people comes an increased demand for energy, leading to higher levels of greenhouse gas emissions. As the global population grows, so does the consumption of fossil fuels for transportation, electricity, and industrial processes. These activities release carbon dioxide (CO2) and other greenhouse gases into the atmosphere, trapping heat and contributing to global warming.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Land Use and Deforestation:&lt;br&gt;
Rapid population growth drives the need for more land to accommodate housing, infrastructure, and agriculture. The expansion of urban areas and agricultural practices often leads to deforestation, a major driver of climate change. Forests act as carbon sinks, absorbing CO2 from the atmosphere. When trees are cut down, this stored carbon is released, further exacerbating greenhouse gas emissions. Additionally, deforestation reduces the Earth's capacity to absorb CO2 and disrupts natural ecosystems, affecting biodiversity and amplifying the climate crisis.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Resource Depletion:&lt;br&gt;
As the global population increases, so does the demand for natural resources, including water, minerals, and fossil fuels. The extraction and consumption of these resources require energy, resulting in greenhouse gas emissions and environmental degradation. Additionally, the depletion of resources leads to further challenges, such as water scarcity and land degradation, which can intensify climate change impacts, such as droughts, desertification, and reduced agricultural productivity.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Impacts on Vulnerable Communities:&lt;br&gt;
Population growth can have disproportionate effects on vulnerable communities, particularly in developing countries with limited resources and infrastructure. Rapid urbanization and population density in these regions often lead to inadequate access to clean water, sanitation, and healthcare. Climate change exacerbates these challenges, as extreme weather events, rising sea levels, and food insecurity disproportionately impact vulnerable populations, further widening social inequalities.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Addressing the Connections:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;While population growth is a complex issue influenced by various socio-economic and cultural factors, there are strategies to mitigate its impact on climate change:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Sustainable Development and Education:&lt;br&gt;
Promoting sustainable development practices and providing education on family planning can help stabilize population growth. Access to reproductive health services, contraception, and family planning information empowers individuals and families to make informed decisions regarding family size, leading to slower population growth rates.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Renewable Energy Transition:&lt;br&gt;
Transitioning to renewable energy sources can help decouple population growth from increased greenhouse gas emissions. Investing in renewable energy infrastructure, such as solar and wind power, reduces reliance on fossil fuels, mitigating climate change impacts while supporting economic growth.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Land Conservation and Reforestation:&lt;br&gt;
Preserving existing forests, implementing sustainable land management practices, and promoting reforestation efforts are crucial steps. Protecting forests and ecosystems helps sequester carbon, conserve biodiversity, and support local livelihoods. Additionally, sustainable agricultural practices, such as agroforestry and regenerative farming, can contribute to carbon sequestration while ensuring food security.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Resilience and Adaptation:&lt;br&gt;
Building resilience in vulnerable communities through improved infrastructure, disaster preparedness, and access to basic services is vital. By prioritizing adaptation strategies and supporting climate-resilient development, societies can better withstand the impacts of climate change and protect the most vulnerable populations.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The connections between population growth and climate change are undeniable. As the global population continues to expand, it becomes imperative to address the associated challenges and mitigate their impact on the planet. By promoting sustainable development, transitioning to renewable energy, conserving land and forests, and supporting vulnerable communities, we can strive for a more balanced and resilient future, where population growth and climate change are managed in harmony.&lt;/p&gt;

</description>
      <category>climate</category>
      <category>sustainability</category>
      <category>climateaction</category>
    </item>
  </channel>
</rss>
