Introduction
On July 28, 2026, at approximately 4:27 p.m. Japan Standard Time, a magnitude 7.1 earthquake struck the Kumamoto region of southwestern Japan at a depth of about 10 kilometers.
The Japan Meteorological Agency reported a maximum seismic intensity of 7, the highest level on Japan’s seismic intensity scale. For readers outside Japan, this is not another expression of earthquake magnitude. Magnitude represents the energy released by an earthquake, while the Japanese seismic intensity scale describes the strength of shaking observed at individual locations. At intensity 7, unsecured furniture may move or topple, buildings may suffer serious damage, and landslides or major ground failures may occur.
https://www.data.jma.go.jp/multi/quake/quake_detail.html?eventID=20260728163528&lang=en
The earthquake caused fatalities, injuries, structural damage, power outages, transportation disruptions, and continuing emergency-response operations. One of the most widely reported locations was AEON Mall Kumamoto, where the earthquake was followed by an explosion and severe building damage.
https://www.reuters.com/business/environment/magnitude-71-earthquake-hits-japans-kyushu-region-jma-says-2026-07-28/
Where is Kumamoto?
Kumamoto Prefecture is located in Kyushu, the southwesternmost of Japan’s four main islands.
Tokyo, Kyoto, and Osaka are located on the much larger island of Honshu. Kumamoto lies considerably farther southwest, near the center of Kyushu. The prefecture includes Kumamoto City, Mount Aso, coastal and agricultural areas, and numerous smaller communities.
The study area used in this article covers Kumamoto City and surrounding areas including Kashima, Uki, Yatsushiro, and parts of the Aso region.
https://www.japan.travel/en/destinations/kyushu/kumamoto/
The historical context
The 2026 earthquake occurred only a little more than ten years after the devastating 2016 Kumamoto earthquake sequence.
In April 2016, the region was first struck by a strong foreshock and then by a larger earthquake at 1:25 a.m. local time on April 16. The Japan Meteorological Agency measured the later event as magnitude 7.3, while the USGS reported a moment magnitude of 7.0.
The 2016 sequence involved the Hinagu and Futagawa fault systems and caused major damage across Kumamoto Prefecture.
This article does not attempt to establish a direct seismological relationship between the 2016 and 2026 earthquakes. However, the geographic proximity and the region’s recent history make satellite-based change monitoring especially relevant.
https://www.usgs.gov/news/featured-story/magnitude-70-earthquake-japan
What this article does
This is the first article in a planned series.
In this initial step, I use:
- Google Earth Engine
- Google Colab
- Sentinel-1 Synthetic Aperture Radar imagery
- Python and geemap
The goal is to:
- Retrieve a Sentinel-1 SAR image acquired before the earthquake.
- Retrieve the first available image acquired after the earthquake.
- Calculate the difference in VV-polarized radar backscatter.
- Display areas with large changes on an interactive map.
- Mark the location of AEON Mall Kumamoto as a geographic reference point.
This is a rapid, first-pass visualization rather than a final damage-classification product.
The objective is to identify locations that may deserve closer inspection using optical imagery, official damage reports, aerial photographs, field observations, and additional satellite analysis.
What is SAR?
SAR stands for Synthetic Aperture Radar.
Optical satellites observe sunlight reflected from Earth’s surface. This means that clouds, darkness, smoke, and other atmospheric conditions can limit what an optical sensor can see.
SAR satellites transmit microwave signals toward Earth and measure the signals reflected back to the sensor. This allows radar satellites to observe the surface during both day and night and through most cloud cover.
For this analysis, I use Sentinel-1, a European C-band SAR mission.
The Google Earth Engine collection:
COPERNICUS/S1_GRD
https://developers.google.com/earth-engine/datasets/catalog/COPERNICUS_S1_GRD
contains calibrated and terrain-corrected Ground Range Detected imagery. Its backscatter values are provided in decibels. Earth Engine applies preprocessing that includes orbit information, thermal-noise removal, radiometric calibration, and terrain correction.
Radar backscatter is affected by several factors:
- Surface roughness
- Building geometry
- Soil moisture
- Vegetation
- Water coverage
- Radar incidence angle
- Satellite orbit direction
A major change in backscatter can therefore indicate a meaningful surface change, but it does not identify the cause by itself.
Implementation
- Install the required libraries
Run the following cell in Google Colab:
!pip install -q -U earthengine-api geemap
Then import the libraries:
import ee
import geemap
About Earth Engine access and pricing
earthengine-api is Google’s official Python client library for Earth Engine. The library itself can be installed free of charge.
Commercial Earth Engine use is available through usage-based and subscription plans. As of August 2026, the Basic plan has a platform fee of $500 per month, while the Professional plan costs $2,000 per month. A Limited plan is also available without a fixed monthly platform fee, but compute and storage usage may still be charged.
Verified noncommercial projects—including qualifying educational, research, nonprofit, and personal-learning projects—can use monthly free compute quotas. Registration as a noncommercial project is required; simply being a student does not automatically configure the project for free access.
*Official information:
Google Earth Engine pricing
https://cloud.google.com/earth-engine/pricing
Earth Engine noncommercial tiers
https://developers.google.com/earth-engine/guides/noncommercial_tiers
Creating and registering an Earth Engine project
https://developers.google.com/earth-engine/guides/access
Earth Engine configuration in Google Cloud
https://console.cloud.google.com/earth-engine/welcome
Authenticate and initialize Earth Engine
ee.Authenticate()
ee.Initialize(project='YOUR_GOOGLE_CLOUD_PROJECT_ID')
Replace YOUR_GOOGLE_CLOUD_PROJECT_ID with the ID of a registered Google Cloud project.
For example:
ee.Authenticate()
ee.Initialize(project='ee-takeofuture')
The authentication step opens a Google account authorization flow. The project passed to ee.Initialize() is then used for Earth Engine requests.
Create a map centered on Kumamoto
Map = geemap.Map(
center=[32.72, 130.70],
zoom=10
)
Map.add_basemap('HYBRID')
The center is placed between the broader epicentral region and AEON Mall Kumamoto.
The HYBRID basemap combines satellite imagery with geographic labels, roads, and place names.
Define the area of interest
The selected area covers a relatively broad portion of Kumamoto Prefecture, including Kumamoto City, Kashima, Uki, Yatsushiro, and areas toward Aso and Amakusa.
kumamoto_aoi = ee.Geometry.BBox(
130.40,
32.45,
131.10,
32.95
)
ee.Geometry.BBox() uses the following coordinate order:
west longitude,
south latitude,
east longitude,
north latitude
The selected bounds are:
West: 130.40° E
South: 32.45° N
East: 131.10° E
North: 32.95° N
Load the Sentinel-1 collection
s1 = (
ee.ImageCollection('COPERNICUS/S1_GRD')
.filter(ee.Filter.eq('instrumentMode', 'IW'))
.filter(
ee.Filter.listContains(
'transmitterReceiverPolarisation',
'VV'
)
)
.filterBounds(kumamoto_aoi)
)
- Interferometric Wide Swath mode
.filter(ee.Filter.eq('instrumentMode', 'IW'))
IW stands for Interferometric Wide Swath. It is a common Sentinel-1 acquisition mode for wide-area land observations.
- VV polarization
.filter(
ee.Filter.listContains(
'transmitterReceiverPolarisation',
'VV'
)
)
VV means that the radar signal is transmitted with vertical polarization and received with vertical polarization.
- Geographic filtering
.filterBounds(kumamoto_aoi)
This retains scenes that overlap the Kumamoto study area.
- Handle the time-zone conversion The earthquake occurred at approximately: July 28, 2026, 16:27 JST Earth Engine date strings are interpreted in UTC unless a time zone is explicitly handled. Japan Standard Time is nine hours ahead of UTC, so the corresponding UTC time is: July 28, 2026, 07:27 UTC I therefore define the event boundary as follows:
EARTHQUAKE_TIME_UTC = '2026-07-28T07:27:00Z'
This prevents an image acquired after the earthquake from accidentally being classified as a pre-earthquake observation.
Select the latest pre-earthquake image
pre_eq = (
s1
.filterDate(
'2026-07-15T00:00:00Z',
EARTHQUAKE_TIME_UTC
)
.sort('system:time_start', False)
.first()
.select('VV')
)
The collection is sorted from newest to oldest, and first() selects the most recent available observation before the earthquake.
“Pre-earthquake” does not necessarily mean that the satellite passed over Kumamoto only minutes before the event. It means that this is the closest available Sentinel-1 acquisition within the specified period.
Select the first post-earthquake image
post_eq = (
s1
.filterDate(
EARTHQUAKE_TIME_UTC,
'2026-08-05T00:00:00Z'
)
.sort('system:time_start', True)
.first()
.select('VV')
)
This time, the images are sorted from oldest to newest so that the first available acquisition after the earthquake is selected.
Only scenes already ingested into Earth Engine are available. Setting an end date in the future does not create or predict an image.
Print the actual acquisition times
The actual satellite observation times should be included in any interpretation of the result.
pre_date_jst = ee.Date(
pre_eq.get('system:time_start')
).format(
'YYYY-MM-dd HH:mm:ss',
'Asia/Tokyo'
)
post_date_jst = ee.Date(
post_eq.get('system:time_start')
).format(
'YYYY-MM-dd HH:mm:ss',
'Asia/Tokyo'
)
print('Pre-earthquake image, JST:', pre_date_jst.getInfo())
print('Post-earthquake image, JST:', post_date_jst.getInfo())
This prints the acquisition times in Japan Standard Time rather than UTC.
Calculate the SAR difference
Subtract the pre-earthquake VV image from the post-earthquake image:
diff = post_eq.subtract(pre_eq)
Conceptually:
SAR change = post-earthquake VV − pre-earthquake VV
A strongly negative value means that radar backscatter decreased after the earthquake.
A strongly positive value means that radar backscatter increased.
Possible causes include:
- Changes to buildings or structures
- Collapsed or tilted surfaces
- Rubble or newly exposed objects
- Landslides and sediment movement
- Flooding or new water surfaces
- Changes in soil moisture
- Vegetation changes
- Differences in orbit geometry
- SAR speckle noise
The difference map is therefore best treated as a change indicator, not as a direct label for one specific type of damage.
Configure the visualization
vis_diff = {
'min': -12,
'max': 4,
'palette': [
'#d73027',
'#fc8d59',
'#fee08b',
'#ffffff',
'#e0f3f8',
'#91bfdb'
]
}
The approximate interpretation is:
- Red and orange: backscatter decreased These areas returned a weaker radar signal after the earthquake. Possible explanations include:
- A building changed orientation or partially collapsed
- A formerly complex surface became smoother
- Ground failure altered the local geometry
- An area became covered by water
These locations may represent earthquake-related changes and deserve closer examination.
- White: relatively little change
The difference between the two observations is relatively small.
This does not prove that no damage occurred. Smaller changes, indoor damage, and changes below the effective spatial resolution may not appear clearly.
- Light blue and blue: backscatter increased These areas returned a stronger radar signal after the earthquake. Possible explanations include:
- Debris increased surface roughness
- Fallen structures created new radar-reflecting geometry
- Sediment or exposed materials changed the surface
- Objects became oriented in a way that reflected more energy toward the satellite
Both strong red and strong blue regions can therefore be treated as locations of interest.
The values -12 and 4 are visualization limits chosen to make large changes easier to see. They are not universal damage thresholds. However, strongly colored areas can help narrow a broad region into a smaller set of locations for follow-up analysis.
Add the SAR layers to the map
Map.addLayer(
pre_eq.clip(kumamoto_aoi),
{
'min': -25,
'max': 0
},
'1. Pre-earthquake SAR',
False
)
Map.addLayer(
post_eq.clip(kumamoto_aoi),
{
'min': -25,
'max': 0
},
'2. Post-earthquake SAR',
False
)
Map.addLayer(
diff.clip(kumamoto_aoi),
vis_diff,
'3. SAR backscatter change',
True
)
The pre- and post-earthquake layers are initially hidden.
The difference layer is visible when the map first loads.
Users can switch between the following layers:
- Pre-earthquake SAR
- Post-earthquake SAR
- SAR backscatter change
Mark AEON Mall Kumamoto
AEON Mall Kumamoto is located in Kashima Town, south of central Kumamoto City.
Because the mall was one of the most widely reported damage locations, I add it as a geographic reference point:
aeon_kumamoto = ee.Geometry.Point([
130.7414,
32.7431
])
Map.addLayer(
aeon_kumamoto,
{'color': 'cyan'},
'AEON Mall Kumamoto'
)
Earth Engine point coordinates use:
[longitude, latitude]
This is the reverse of the [latitude, longitude] order commonly displayed by some mapping services.
A single Sentinel-1 pixel cannot describe the condition of an entire shopping mall. However, if strong red or blue changes appear around a location with independently reported damage, that spatial correspondence becomes a useful clue.
The mall marker therefore provides a reference for comparing the SAR change pattern with a known real-world location of serious impact.
Display the map
Map.add_layer_control()
Map
The map can now be explored interactively in Google Colab.
Users can enable and disable each layer from the layer control in the upper-right corner.

How to interpret the result
The resulting map shows several red and orange areas across Kumamoto Prefecture. These are locations where VV backscatter decreased substantially between the selected observations.
Changes to buildings, slopes, ground surfaces, sediment, and water coverage can alter the radar signal. Areas with unusually large differences may therefore indicate locations affected by the earthquake.
The map cannot, by itself, tell us:
- Exactly what changed
- Whether a building completely collapsed
- Whether a change was caused by the earthquake
- How severe the damage was
Nevertheless, the analysis is useful.
Satellite radar can scan a broad area and highlight places where the surface response changed significantly. Those locations can then be compared with:
- RGB optical imagery
- Government damage reports
- News reports
- Aerial photography
- Rainfall records
- Elevation and slope data
- Field observations
In this sense, the SAR difference map acts as a guide for narrowing the search area, rather than as a final damage map.
Limitations of this first-pass analysis
- Orbit direction is not matched Sentinel-1 observes Earth from both ascending and descending orbits.
Buildings and slopes may appear very different when viewed from opposite radar directions. Some of the measured difference may therefore be caused by observation geometry rather than physical surface change.
- Relative orbit numbers are not matched Even if two images cover the same region, differences in relative orbit number and incidence angle can affect backscatter.
A more rigorous comparison should use scenes with:
- The same orbit direction
- The same relative orbit number
- Similar incidence angles
- The same polarization and acquisition mode
Only one image is used for each period
SAR imagery contains granular noise known as speckle.
Using several pre-earthquake and post-earthquake scenes and calculating a median or mean composite can reduce random variation and make persistent changes easier to identify.Rainfall and moisture may affect the result
Radar backscatter responds to soil moisture, standing water, vegetation, and wet surfaces.
Any location with a large difference should therefore be checked against rainfall and weather data from the same period.This is a screening analysis
The purpose of this first article is not to issue a final damage assessment.
It is to locate areas where the radar response changed enough to justify closer investigation.
Known damaged locations such as AEON Mall Kumamoto can also help evaluate whether satellite-observed changes correspond to documented real-world impacts.
Next step: matched SAR, RGB imagery, and AI
In the next article, I plan to make the analysis more precise by:
- Matching the Sentinel-1 orbit direction.
- Matching the relative orbit number.
- Comparing multiple pre- and post-earthquake observations.
- Reducing SAR speckle noise.
- Adding rainfall, elevation, and terrain information.
- Incorporating Sentinel-2 or other RGB optical imagery.
- Applying AI-based image analysis to identify consistent change candidates.
SAR and RGB imagery provide complementary information.
SAR can detect changes in radar scattering even through clouds and at night. RGB imagery can help visually distinguish buildings, landslides, exposed soil, vegetation, and water when cloud-free observations are available.
AI can then be used to compare the two data sources, prioritize locations where both indicate change, and classify possible forms of damage.
This first visualization is therefore the initial screening stage. The next step will combine matched multi-temporal SAR, RGB imagery, additional geospatial data, and AI to produce a more reliable list of possible damage locations.
Complete code
!pip install -q -U earthengine-api geemap
import ee
import geemap
# Authenticate and initialize Earth Engine.
ee.Authenticate()
ee.Initialize(project='ee-takeofuture')
# Create a map centered on Kumamoto.
Map = geemap.Map(
center=[32.72, 130.70],
zoom=10
)
Map.add_basemap('HYBRID')
# Define the study area.
kumamoto_aoi = ee.Geometry.BBox(
130.40,
32.45,
131.10,
32.95
)
# Load Sentinel-1 IW scenes containing VV polarization.
s1 = (
ee.ImageCollection('COPERNICUS/S1_GRD')
.filter(ee.Filter.eq('instrumentMode', 'IW'))
.filter(
ee.Filter.listContains(
'transmitterReceiverPolarisation',
'VV'
)
)
.filterBounds(kumamoto_aoi)
)
# July 28, 2026, 16:27 JST = July 28, 2026, 07:27 UTC.
EARTHQUAKE_TIME_UTC = '2026-07-28T07:27:00Z'
# Select the latest available pre-earthquake image.
pre_eq = (
s1
.filterDate(
'2026-07-15T00:00:00Z',
EARTHQUAKE_TIME_UTC
)
.sort('system:time_start', False)
.first()
.select('VV')
)
# Select the first available post-earthquake image.
post_eq = (
s1
.filterDate(
EARTHQUAKE_TIME_UTC,
'2026-08-05T00:00:00Z'
)
.sort('system:time_start', True)
.first()
.select('VV')
)
# Print acquisition times in Japan Standard Time.
pre_date_jst = ee.Date(
pre_eq.get('system:time_start')
).format(
'YYYY-MM-dd HH:mm:ss',
'Asia/Tokyo'
)
post_date_jst = ee.Date(
post_eq.get('system:time_start')
).format(
'YYYY-MM-dd HH:mm:ss',
'Asia/Tokyo'
)
print('Pre-earthquake image, JST:', pre_date_jst.getInfo())
print('Post-earthquake image, JST:', post_date_jst.getInfo())
# Calculate post-earthquake minus pre-earthquake VV backscatter.
diff = post_eq.subtract(pre_eq)
# Configure the difference visualization.
vis_diff = {
'min': -12,
'max': 4,
'palette': [
'#d73027',
'#fc8d59',
'#fee08b',
'#ffffff',
'#e0f3f8',
'#91bfdb'
]
}
# Add the three SAR layers.
Map.addLayer(
pre_eq.clip(kumamoto_aoi),
{'min': -25, 'max': 0},
'1. Pre-earthquake SAR',
False
)
Map.addLayer(
post_eq.clip(kumamoto_aoi),
{'min': -25, 'max': 0},
'2. Post-earthquake SAR',
False
)
Map.addLayer(
diff.clip(kumamoto_aoi),
vis_diff,
'3. SAR backscatter change',
True
)
# Add AEON Mall Kumamoto as a reference point.
aeon_kumamoto = ee.Geometry.Point([
130.7414,
32.7431
])
Map.addLayer(
aeon_kumamoto,
{'color': 'cyan'},
'AEON Mall Kumamoto'
)
Map.add_layer_control()
Map
Conclusion
This article used Google Earth Engine, Google Colab, and Sentinel-1 VV-polarized SAR data to visualize radar-backscatter changes before and after the 2026 Kumamoto earthquake.
The resulting difference map does not provide a final building-damage classification. However, it can reveal locations where the radar response changed substantially and help prioritize areas for further investigation.
By marking AEON Mall Kumamoto, the analysis also provides a way to compare a documented damage location with the surrounding satellite-observed change pattern.
In the next stage, I will improve the comparison by matching Sentinel-1 orbital conditions, using multiple observations, incorporating RGB optical imagery and additional geospatial data, and applying AI to identify more reliable earthquake-related change candidates.
Top comments (0)