
Earthdata Search API完全手册轻松集成NASA地球科学数据到你的应用【免费下载链接】earthdata-searchEarthdata Search is a web application developed by NASA EOSDIS to enable data discovery, search, comparison, visualization, and access across EOSDIS Earth Science data holdings.项目地址: https://gitcode.com/gh_mirrors/ea/earthdata-search你是否曾经想要在自己的应用中集成NASA的地球科学数据却不知道从何入手 Earthdata Search API就是你的完美解决方案作为NASA EOSDIS开发的官方数据搜索平台Earthdata Search提供了强大的API接口让你能够轻松访问数以百万计的地球科学数据集。本文将为你详细介绍如何使用Earthdata Search API快速将NASA的地球科学数据集成到你的应用程序中。 什么是Earthdata SearchEarthdata Search是由NASA地球观测系统数据和信息系统EOSDIS开发的Web应用程序用于实现跨EOSDIS地球科学数据资产的数据发现、搜索、比较、可视化和访问。它建立在多个面向公众的服务之上包括用于数据发现和访问的通用元数据存储库CMR、EOSDIS用户注册系统URS认证、用于可视化的全球图像浏览服务GIBS以及数据提供商托管的多个OPeNDAP服务。通过Earthdata Search API你可以访问NASA收集的各种地球科学数据包括气候数据、卫星图像、大气观测等这些数据对于科学研究、环境监测、天气预测等应用至关重要。 Earthdata Search API核心功能1. 数据搜索与发现APIEarthdata Search提供了丰富的API端点让你能够搜索和发现NASA的地球科学数据集集合搜索API通过/collections端点搜索数据集集合数据粒度搜索API通过/granules端点搜索具体的数据粒度时间线搜索API通过/granules/timeline端点获取数据时间线信息这些API端点位于serverless/src/collectionSearch/handler.js、serverless/src/cmrGranuleSearch/handler.js和serverless/src/timelineSearch/handler.js中实现。2. GraphQL数据查询Earthdata Search支持GraphQL查询提供了更灵活的数据查询能力。通过/graphql端点你可以执行复杂的查询来获取精确需要的数据// 示例GraphQL查询 { collections { id title description temporalRange { startDate endDate } spatialCoverage { boundingBox } } }GraphQL处理器位于serverless/src/graphQl/handler.js它作为CMR GraphQL服务的代理提供统一的查询接口。3. 数据检索与订单管理Earthdata Search API允许你提交数据检索请求并管理订单提交检索请求POST /retrievals获取检索状态GET /retrievals/{id}删除检索请求DELETE /retrievals/{id}获取检索列表GET /retrievals这些功能对于批量处理大量数据请求特别有用相关实现可以在serverless/src/submitRetrieval/handler.js和serverless/src/getRetrieval/handler.js中找到。4. 空间数据搜索Earthdata Search提供了强大的空间搜索功能区域搜索APIGET /regions- 搜索特定地理区域的数据形状文件支持POST /shapefiles和GET /shapefiles/{id}- 上传和获取形状文件区域搜索功能在serverless/src/regionSearch/handler.js中实现形状文件支持在serverless/src/saveShapefile/handler.js和serverless/src/getShapefile/handler.js中提供。 快速开始指南步骤1获取认证令牌要使用Earthdata Search API首先需要获取认证令牌。Earthdata Search使用NASA的Earthdata LoginURS系统进行身份验证# 获取JWT令牌 curl -X POST https://urs.earthdata.nasa.gov/oauth/token \ -d grant_typeclient_credentials \ -u your_client_id:your_client_secret步骤2搜索数据集使用认证令牌搜索NASA的地球科学数据集# 搜索包含temperature关键词的数据集 curl -X POST https://search.earthdata.nasa.gov/collections \ -H Authorization: Bearer YOUR_JWT_TOKEN \ -H Content-Type: application/json \ -d { keyword: temperature, temporal: 2023-01-01T00:00:00Z,2023-12-31T23:59:59Z, spatial: { bounding_box: -180,-90,180,90 } }步骤3获取数据粒度信息获取特定数据集中的数据粒度信息# 获取数据集中的数据粒度 curl -X POST https://search.earthdata.nasa.gov/granules \ -H Authorization: Bearer YOUR_JWT_TOKEN \ -H Content-Type: application/json \ -d { collection_concept_id: C123456789-PROVIDER, page_size: 10, page_num: 1 }步骤4提交数据检索请求提交数据检索请求以获取实际的数据文件# 提交数据检索请求 curl -X POST https://search.earthdata.nasa.gov/retrievals \ -H Authorization: Bearer YOUR_JWT_TOKEN \ -H Content-Type: application/json \ -d { collections: [ { id: C123456789-PROVIDER, granules: [ { id: G123456789-PROVIDER } ] } ] } API端点详解公开API端点无需认证端点方法描述实现文件/autocompletePOST自动完成搜索建议serverless/src/autocomplete/handler.js/scale/{concept_type}/{concept_id}GET缩放图像serverless/src/scaleImage/handler.js/regionsGET区域搜索serverless/src/regionSearch/handler.js/decodeGETID解码serverless/src/decodeId/handler.js/colormaps/{product}GET获取颜色映射serverless/src/getColorMap/handler.js需要认证的API端点端点方法描述实现文件/graphqlPOSTGraphQL查询serverless/src/graphQl/handler.js/collectionsPOST集合搜索serverless/src/collectionSearch/handler.js/granulesPOST数据粒度搜索serverless/src/cmrGranuleSearch/handler.js/granules/timelinePOST时间线搜索serverless/src/timelineSearch/handler.js/retrievalsPOST/GET检索管理serverless/src/submitRetrieval/handler.js️ 高级功能与集成1. 数据可视化集成Earthdata Search API与GIBS全球图像浏览服务集成支持数据可视化// 获取颜色映射用于数据可视化 const response await fetch(https://search.earthdata.nasa.gov/colormaps/MODIS_Aqua_CorrectedReflectance_TrueColor); const colormap await response.json();颜色映射功能在serverless/src/getColorMap/handler.js中实现。2. 项目和数据管理Earthdata Search提供了项目和数据管理功能保存项目POST /projects- 保存搜索项目获取项目GET /projects/{id}- 获取特定项目获取项目列表GET /projects- 获取用户的所有项目项目管理功能在serverless/src/saveProject/handler.js和serverless/src/getProject/handler.js中实现。3. 数据导出功能Earthdata Search支持将搜索结果导出为CSV格式# 导出搜索结果 curl -X POST https://search.earthdata.nasa.gov/collections/export \ -H Authorization: Bearer YOUR_JWT_TOKEN \ -H Content-Type: application/json \ -d { collections: [C123456789-PROVIDER], format: csv }数据导出功能在serverless/src/exportSearch/handler.js中实现。 安全与认证Earthdata Search API使用NASA的Earthdata LoginURS系统进行认证。所有需要认证的API端点都需要有效的JWT令牌。认证流程包括用户认证通过URS系统获取认证令牌令牌验证API验证令牌的有效性授权检查检查用户对请求数据的访问权限认证相关的代码位于serverless/src/edlAuthorizer/handler.js和serverless/src/edlOptionalAuthorizer/handler.js。 错误处理与日志记录Earthdata Search API提供了完善的错误处理和日志记录机制错误日志记录POST /error_logger- 记录客户端错误警报日志记录POST /alert_logger- 记录系统警报相关性日志记录POST /relevancy_logger- 记录搜索相关性信息这些日志功能帮助NASA监控API使用情况并改进服务质量相关实现可以在serverless/src/errorLogger/handler.js和serverless/src/alertLogger/handler.js中找到。 最佳实践1. 使用分页提高性能当处理大量数据时始终使用分页{ page_size: 50, page_num: 1 }2. 缓存常用数据对于不经常变化的数据如元数据信息考虑在客户端实现缓存机制以减少API调用。3. 处理速率限制Earthdata Search API可能有速率限制确保你的应用程序能够优雅地处理429Too Many Requests响应。4. 使用异步处理对于大型数据检索请求使用异步处理模式// 提交检索请求 const retrievalResponse await fetch(/retrievals, { method: POST, headers: { Authorization: Bearer YOUR_TOKEN }, body: JSON.stringify(retrievalRequest) }); // 定期检查状态 const retrievalId retrievalResponse.id; const statusResponse await fetch(/retrievals/${retrievalId}); 实际应用场景1. 气候研究应用使用Earthdata Search API获取气候数据构建气候分析和预测工具import requests # 获取气候数据集 response requests.post( https://search.earthdata.nasa.gov/collections, headers{Authorization: Bearer YOUR_TOKEN}, json{ keyword: climate, temporal: 2020-01-01T00:00:00Z,2023-12-31T23:59:59Z } ) # 处理气候数据 climate_data response.json()2. 环境监测仪表板集成Earthdata Search API创建实时环境监测仪表板// 获取实时环境数据 async function getEnvironmentalData(region, timeRange) { const response await fetch(https://search.earthdata.nasa.gov/granules, { method: POST, headers: { Authorization: Bearer YOUR_TOKEN, Content-Type: application/json }, body: JSON.stringify({ spatial: { bounding_box: region }, temporal: timeRange, collections: [environmental-monitoring-collections] }) }); return response.json(); }3. 科学研究数据管道构建自动化数据管道定期获取NASA的最新科学数据#!/bin/bash # 自动化数据获取脚本 TOKENyour_jwt_token DATE$(date -u %Y-%m-%dT%H:%M:%SZ) # 获取最新数据 curl -X POST https://search.earthdata.nasa.gov/granules \ -H Authorization: Bearer $TOKEN \ -H Content-Type: application/json \ -d { \temporal\: \$DATE/P1D\, \collections\: [\your-collection-id\] } latest_data.json 调试与故障排除常见问题解决认证失败确保使用有效的JWT令牌并检查令牌是否已过期数据访问限制某些数据集可能需要特殊权限检查错误消息中的详细信息API限制如果遇到速率限制考虑实现请求队列和重试机制数据格式问题确保请求参数格式正确特别是日期和时间格式调试工具Earthdata Search提供了多种调试工具错误日志API记录和报告问题详细的错误响应API返回详细的错误信息帮助诊断问题文档和示例参考官方文档和示例代码 性能优化建议1. 批量请求优化对于多个相关请求考虑使用批处理// 批量获取多个数据集信息 const batchRequests collectionIds.map(id fetch(/concepts/${id}, { headers: { Authorization: Bearer YOUR_TOKEN } }) ); const responses await Promise.all(batchRequests);2. 数据缓存策略实现智能缓存策略减少重复请求class EarthdataCache { constructor() { this.cache new Map(); this.ttl 3600000; // 1小时 } async getData(key, fetchFunction) { const cached this.cache.get(key); if (cached Date.now() - cached.timestamp this.ttl) { return cached.data; } const data await fetchFunction(); this.cache.set(key, { data, timestamp: Date.now() }); return data; } }3. 连接复用保持HTTP连接复用以减少连接建立开销// 使用连接池 const https require(https); const agent new https.Agent({ keepAlive: true }); // 在请求中使用相同的agent const response await fetch(url, { agent }); 总结Earthdata Search API为开发人员提供了访问NASA地球科学数据的强大接口。通过本文的介绍你应该已经了解了Earthdata Search API的基本架构和核心功能如何认证和使用API端点各种数据搜索和检索方法高级功能如数据可视化和项目管理最佳实践和性能优化技巧无论你是构建气候研究工具、环境监测系统还是科学数据分析平台Earthdata Search API都能为你提供可靠的数据支持。开始探索NASA的地球科学数据宝库为你的应用程序注入来自太空的洞察力记住NASA的地球科学数据是免费开放的通过Earthdata Search API你可以轻松访问这些宝贵资源推动科学研究和创新应用的发展。【免费下载链接】earthdata-searchEarthdata Search is a web application developed by NASA EOSDIS to enable data discovery, search, comparison, visualization, and access across EOSDIS Earth Science data holdings.项目地址: https://gitcode.com/gh_mirrors/ea/earthdata-search创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考