本项目通过整合 Google Earth Engine (GEE) 的能力,提供基于 Web 的影像数据查询与下载服务。后端使用 Node.js 与 Express 实现 REST API 和 WebSocket 通信,前端(静态)资源放置于 public 目录下。
- server.js: 服务端入口,定义各 API 接口及 WebSocket 下载服务。
- search_gee_point.py & search_gee_bbox.py: 分别提供基于点和边界框的遥感影像数据搜索功能。
- download_gee.py: 根据指定图像 ID 与波段列表下载 GEE 图像数据。
- download2.py: 根据指定参数(如数据集、日期、坐标与波段表达式)下载并处理图像数据,同时计算云覆盖率。
- config.json: 存储项目配置,如 Earth Engine 项目名称和服务器端口。
- public/: 存放下载的影像数据和其他静态资源。
- Node.js 与 npm(安装 Express、body-parser、express-ws 等依赖)
- Python 3.x(安装 ee、geemap 等库)
- Google Earth Engine Python API
- 克隆代码库至本地:
git clone https://github.com/GISer1909/gee_server.git
- 安装 Node.js 依赖:
npm install
- 安装 Python 依赖(建议使用虚拟环境):
pip install -r requirements.txt
- 修改
config.json文件,配置正确的项目(project)名称和服务器端口。
启动 Node.js 服务:
node server.js默认服务运行于 config.json 指定端口(如 1337)。
-
GET /searchByPoint
- 参数:
dataset、start_date、end_date、max_cloud_cover、latitude、longitude - 功能:基于指定地理坐标搜索影像,返回符合条件的影像列表。
- 参数:
-
GET /searchByBbox
- 参数:
dataset、start_date、end_date、max_cloud_cover、xmin、ymin、xmax、ymax - 功能:基于指定边界框搜索影像数据,返回符合要求的影像列表。
- 参数:
-
WebSocket /download
- 参数(查询字符串):
image_id、bands - 功能:通过 WebSocket 实时传输影像下载日志,下载完成后自动关闭连接,并在特定条件下删除生成的文件。
- 参数(查询字符串):
-
GET /download
- 参数(查询字符串):
image_id、bands - 功能:通过 HTTP 响应流方式下载影像,实现服务器推送。
- 参数(查询字符串):
-
POST /download2
- 请求体参数:
dataset: 数据集名称(默认 COPERNICUS/S2_SR_HARMONIZED)day: 往前推算的天数(用于计算日期范围)coord_str: JSON 格式的坐标字符串,用于定义多边形搜索区域band_index_exp: 波段指数表达式(如(B8 - B4) / (B8 + B4)),或使用all表示下载所有波段
- 功能:下载指定区域内最新的影像并计算云覆盖率,根据表达式进行波段处理。
- 请求体参数:
例如,使用 curl 搜索点影像:
curl "http://localhost:1337/searchByPoint?dataset=COPERNICUS/S2_SR_HARMONIZED&start_date=2023-01-01&end_date=2023-01-31&max_cloud_cover=20&latitude=39.90&longitude=116.40"使用 curl 下载图像:
curl "http://localhost:1337/download?image_id=COPERNICUS_S2_SR_HARMONIZED_XXXXX&bands=B4,B8"使用 POST 请求下载处理后的影像:
curl -X POST "http://localhost:1337/download2" -H "Content-Type: application/json" -d '{
"dataset": "COPERNICUS/S2_SR_HARMONIZED",
"day": 10,
"coord_str": "[[[111.3583,39.8671], [111.3622,39.8803], [111.3479,39.8826], [111.3583,39.8671]]]",
"band_index_exp": "(b(\'B8\') - b(\'B4\')) / (b(\'B8\') + b(\'B4\'))"
}'- 确保 Earth Engine 已经正确认证并初始化。
- 下载的影像默认保存在
./public目录。 - API 请求若缺少必要参数,将返回错误提示“参数不全”。
- 针对不同数据集,云覆盖率计算可能存在差异。
MIT 许可证
如有问题,请联系项目维护者。