Access NASA FIRMS Satellite Fire Data with a Java Spring Boot Client
This guide explains why the FIRMS Java client was created, describes the FIRMS fire data service, details the library's modular structure, shows how to obtain a MapKey, provides Spring configuration and usage examples, and includes Maven installation instructions for seamless integration into Java or Spring Boot projects.
Why create this library?
Our company needed satellite fire‑monitoring data for a forest‑fire prevention project, but most domestic providers charge tens of thousands of yuan per year. After discovering the free NASA FIRMS service, we found no official Java client, so we built and open‑sourced a Java SDK to simplify integration.
What is FIRMS?
FIRMS (Fire Information for Resource Management System) distributes near‑real‑time active fire detections from MODIS on Aqua/Terra satellites and VIIRS on S‑NPP, NOAA‑20, and NOAA‑21 platforms.
Library Structure
satellite-core: core package containing SatelliteClient, related methods, exceptions, enums, and constants.
satellite-spring: Spring auto‑configuration for easy use in Spring or Spring Boot applications.
satellite-application: a Spring Boot demo application illustrating the client.
Design Rationale
Non‑Spring Java projects can depend only on satellite-core to obtain basic client functionality.
Spring/Spring Boot projects benefit from satellite-spring, which provides automatic bean injection or custom client configuration via properties. satellite-application offers a runnable example to verify that the client works as expected.
MapKey Acquisition
To request FIRMS data you need a MapKey from the official website. Two methods are available:
Enter your email in the website dialog to receive the key.
If you run a Spring Boot web project, start the application and open http://127.0.0.1:{port}/satellite.html, then submit your email; this calls the official key‑generation API.
Spring Configuration File
nasa:
# MapKey obtained from the FIRMS website
map-key: 35ece758e7525ad595b401b65fa1c83b
# Longitude,Latitude bounds (west,south,east,north)
area: 116.2,34.5,122,38Usage Example
package com.nodcat.satellite;
import io.github.nodcat.enums.Satellite;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* Example service that fetches satellite fire data.
*/
@Service
public class CustomSatelliteServiceImpl implements CustomSatelliteService {
@Autowired
SatelliteClient satelliteClient; // injected by Spring configuration
@Override
public List<SatelliteScanData> getSatelliteData() {
// Retrieve VIIRS_SNPP_NRT data for 5‑day range starting 2026‑01‑22
return satelliteClient.getSatelliteScanData(
Satellite.VIIRS_SNPP_NRT,
"5",
"2026-01-22"
);
}
}Installation (Maven)
Core
<dependency>
<groupId>io.github.nodcat</groupId>
<artifactId>satellite-core</artifactId>
<version>1.0.1</version>
</dependency>Spring
<dependency>
<groupId>io.github.nodcat</groupId>
<artifactId>satellite-spring</artifactId>
<version>1.0.1</version>
</dependency>Contribution & Feedback
The project is open‑source on GitHub under the repository firms-java. Issues and pull requests are welcome for bug fixes or enhancements.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Dunmao Tech Hub
Sharing selected technical articles synced from CSDN. Follow us on CSDN: Dunmao.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
