Python client for interacting with NASA Earthdata's AppEEARS API
Project description
AppEEARS API Client
Python client for interacting with NASA Earthdata's AρρEEARS API. This package facilitates authentication, querying, and handling of data from AppEEARS, allowing Python users to efficiently access and manipulate remote sensing data.
Features
- Easy Authentication: Seamlessly authenticate using NASA Earthdata Login.
- Data Retrieval: Functions to query and manipulate available product data.
- Error Handling: Integrated API-specific error handling to manage and respond to API issues effectively.
Installation
Install the package using pip:
pip install appears-api-client
Usage
Initial configuration
Import the client and create an instance with your credentials:
from appears_api.client import APIClient
client = APIClient(username='your_username', password='your_password')
Authentication
Log in to authenticate and begin your session:
client.login()
Obtain product data
Retrieve information about a specific product by its ID:
product_info = client.get_product_info(product_id='MOD11A1.061')
print(product_info)
Retrieve All Products and Layers
Get details on all available products and their respective layers:
all_products = client.product_manager.get_all_products_and_layers()
print(all_products)
Fetch and Store Point Data
Submit a task for specific coordinates, bands, and time period, and retrieve the processed data:
response = client.submit_and_retrieve_point_task(
latitude=34.05,
longitude=-118.25,
product_id='MOD11A1.061',
band_names=['LST_Day_1km', 'LST_Night_1km'],
start_date='2023-01-01',
end_date='2023-01-31'
)
print(response)
Sending Area-Based Tasks
The API client also supports submitting tasks based on a specific geographical area. This is particularly useful for processing large datasets that cover geographical regions. Below is an example of how to submit an area-based task using the API client:
Example: Retrieve Temperature Data for a Defined Area
This example demonstrates how to submit a task to retrieve daytime and nighttime land surface temperature data for a specific area defined by GeoJSON coordinates.
import os
from datetime import datetime
from src.appears import APIClient
# Load environment variables (ensure your .env file contains the necessary API credentials)
from dotenv import load_dotenv
load_dotenv()
# Create an instance of the API client with your credentials
client = APIClient(username=os.getenv('APPEARS_USER'), password=os.getenv('APPEARS_PASS'))
# Define the geographical area of interest in GeoJSON format
geo_json = {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[-78.54051709643014, 18.699926638788938],
[-78.54051709643014, 17.571631940899735],
[-75.89563723926521, 17.571631940899735],
[-75.89563723926521, 18.699926638788938],
[-78.54051709643014, 18.699926638788938]
]
]
}
}
]
}
# Define the time period for the data
start_date = datetime.strptime("01-01-2023", "%m-%d-%Y")
end_date = datetime.strptime("01-31-2023", "%m-%d-%Y")
# Define the product and layers to retrieve
layers = [
{"product": "MOD11A1.061", "layer": "LST_Day_1km"},
{"product": "MOD11A1.061", "layer": "LST_Night_1km"}
]
# Submit the area-based task and get the response
response = client.submit_and_retrieve_area_task(
geo_json=geo_json,
product_id="MOD11A1.061",
band_names=["LST_Day_1km", "LST_Night_1km"],
start_date=start_date,
end_date=end_date
)
# Handle the response
if 'task_id' in response:
print("Area task submitted successfully. Task ID:", response['task_id'])
else:
print("Error submitting area task:", response)
Logout
Don't forget to log out when you are finished:
client.logout()
Contributions
Contributions are welcome! If you wish to contribute, please:
- Fork the repository.
- Create a new branch for your modifications.
- Make your changes and write tests when possible.
- Send a pull request with a clear description of the changes.
License
Distributed under the MIT license. See LICENSE for more information.
Contact
Francisco Furey
Follow the project and contribute on GitHub.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file appears_api_client-0.1.2.tar.gz
.
File metadata
- Download URL: appears_api_client-0.1.2.tar.gz
- Upload date:
- Size: 44.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6a74a583bb2ca866855e6d05255f2094d7c0a686885c529ac37ad1e0c723c6a0 |
|
MD5 | 69096f5439d6386b0fc7daa946e1b856 |
|
BLAKE2b-256 | 0f03d62d132fca4638d6fc8d1eee01ad15363e69e9ed421797e71a8d7f3d36ac |
File details
Details for the file appears_api_client-0.1.2-py3-none-any.whl
.
File metadata
- Download URL: appears_api_client-0.1.2-py3-none-any.whl
- Upload date:
- Size: 53.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3e7bfbbd625138a955503ce764982b40dce5c2e35f2b9c2e60e1a3a23171f7e0 |
|
MD5 | ad56dc1c5e2ade0ac0b033a717b2038d |
|
BLAKE2b-256 | 10178650a94728814476b1fdc4074ecad17fc122700a98028e94b5b497a3f584 |