修改降雨逻辑
This commit is contained in:
+25
-10
@@ -34,7 +34,7 @@ async def get_rainfall_grid(request: RainfallGridRequest):
|
||||
返回适合Cesium渲染的GeoJSON格式数据。
|
||||
|
||||
Args:
|
||||
request: 包含时间和分辨率的请求
|
||||
request: 包含时间、分辨率和持续时间的请求
|
||||
|
||||
Returns:
|
||||
GeoJSON格式的栅格数据
|
||||
@@ -44,10 +44,15 @@ async def get_rainfall_grid(request: RainfallGridRequest):
|
||||
now = datetime.now()
|
||||
query_time = datetime.fromisoformat(request.time) if request.time else now
|
||||
|
||||
# 调用服务层生成栅格(自动查询前12小时数据)
|
||||
# 验证duration参数
|
||||
if request.duration not in [12, 24]:
|
||||
raise ValueError("duration参数必须为12或24")
|
||||
|
||||
# 调用服务层生成栅格(自动查询前12小时或24小时数据)
|
||||
geojson_data = rainfall_service.generate_rainfall_grid(
|
||||
query_time=query_time,
|
||||
resolution=request.resolution
|
||||
resolution=request.resolution,
|
||||
duration=request.duration
|
||||
)
|
||||
|
||||
if not geojson_data:
|
||||
@@ -75,13 +80,15 @@ async def get_rainfall_grid(request: RainfallGridRequest):
|
||||
|
||||
@router.get("/stations", response_model=StationsResponse, summary="获取雨量站点数据")
|
||||
async def get_rainfall_stations(
|
||||
time: str = Query(..., description="查询时间 ISO格式(自动查询前12小时数据)")
|
||||
time: str = Query(..., description="查询时间 ISO格式(自动查询前12小时或24小时数据)"),
|
||||
duration: int = Query(12, description="持续时间(小时),可选12或24", ge=12, le=24)
|
||||
):
|
||||
"""
|
||||
获取指定时间的雨量站点原始数据
|
||||
|
||||
Args:
|
||||
time: 查询时间
|
||||
duration: 持续时间(12或24小时)
|
||||
|
||||
Returns:
|
||||
站点列表,包含经纬度和降雨量
|
||||
@@ -89,9 +96,10 @@ async def get_rainfall_stations(
|
||||
try:
|
||||
query_time = datetime.fromisoformat(time)
|
||||
|
||||
# 调用服务层获取站点数据(自动查询前12小时数据)
|
||||
# 调用服务层获取站点数据(自动查询前12小时或24小时数据)
|
||||
stations = rainfall_service.get_stations_data(
|
||||
query_time=query_time
|
||||
query_time=query_time,
|
||||
duration=duration
|
||||
)
|
||||
|
||||
return StationsResponse(
|
||||
@@ -112,7 +120,8 @@ async def get_rainfall_stations(
|
||||
async def get_rainfall_at_point(
|
||||
longitude: float,
|
||||
latitude: float,
|
||||
time: Optional[str] = None
|
||||
time: Optional[str] = None,
|
||||
duration: int = Query(12, description="持续时间(小时),可选12或24", ge=12, le=24)
|
||||
):
|
||||
"""
|
||||
查询指定经纬度位置的降雨量
|
||||
@@ -120,7 +129,8 @@ async def get_rainfall_at_point(
|
||||
Args:
|
||||
longitude: 经度
|
||||
latitude: 纬度
|
||||
time: 查询时间(可选,默认当前时间,自动查询前12小时数据)
|
||||
time: 查询时间(可选,默认当前时间,自动查询前12小时或24小时数据)
|
||||
duration: 持续时间(12或24小时)
|
||||
|
||||
Returns:
|
||||
该点位的降雨量信息
|
||||
@@ -132,12 +142,17 @@ async def get_rainfall_at_point(
|
||||
now = datetime.now()
|
||||
query_time = datetime.fromisoformat(time) if time else now
|
||||
|
||||
# 调用服务层查询(自动查询前12小时数据)
|
||||
# 验证duration参数
|
||||
if duration not in [12, 24]:
|
||||
raise ValueError("duration参数必须为12或24")
|
||||
|
||||
# 调用服务层查询(自动查询前12小时或24小时数据)
|
||||
service = RainfallService()
|
||||
rainfall_info = service.get_rainfall_at_point(
|
||||
longitude=longitude,
|
||||
latitude=latitude,
|
||||
query_time=query_time
|
||||
query_time=query_time,
|
||||
duration=duration
|
||||
)
|
||||
|
||||
if not rainfall_info:
|
||||
|
||||
Reference in New Issue
Block a user