|
|
@ -1,6 +1,7 @@
|
|
|
|
package com.htfp.weather.web.controller;
|
|
|
|
package com.htfp.weather.web.controller;
|
|
|
|
|
|
|
|
|
|
|
|
import com.htfp.weather.utils.DateTimeUtils;
|
|
|
|
import com.htfp.weather.utils.DateTimeUtils;
|
|
|
|
|
|
|
|
import com.htfp.weather.web.config.aspect.ControllerLog;
|
|
|
|
import com.htfp.weather.web.exception.AppException;
|
|
|
|
import com.htfp.weather.web.exception.AppException;
|
|
|
|
import com.htfp.weather.web.exception.ErrorCode;
|
|
|
|
import com.htfp.weather.web.exception.ErrorCode;
|
|
|
|
import com.htfp.weather.web.pojo.request.*;
|
|
|
|
import com.htfp.weather.web.pojo.request.*;
|
|
|
@ -21,7 +22,8 @@ import java.util.List;
|
|
|
|
* @Description : 高空天气查询接口
|
|
|
|
* @Description : 高空天气查询接口
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
@CrossOrigin
|
|
|
|
@CrossOrigin
|
|
|
|
@RestController @Slf4j
|
|
|
|
@RestController
|
|
|
|
|
|
|
|
@Slf4j
|
|
|
|
@RequestMapping("/htfp/weather/upper/")
|
|
|
|
@RequestMapping("/htfp/weather/upper/")
|
|
|
|
public class UpperWeatherController {
|
|
|
|
public class UpperWeatherController {
|
|
|
|
|
|
|
|
|
|
|
@ -29,17 +31,17 @@ public class UpperWeatherController {
|
|
|
|
GfsDataServiceImpl gfsDataService;
|
|
|
|
GfsDataServiceImpl gfsDataService;
|
|
|
|
|
|
|
|
|
|
|
|
@PostMapping("/queryUpperNowWeather")
|
|
|
|
@PostMapping("/queryUpperNowWeather")
|
|
|
|
|
|
|
|
@ControllerLog(info = "高空实时气象信息查询")
|
|
|
|
public Result queryUpperNowWeather(@Validated @RequestBody Position3D position3D) {
|
|
|
|
public Result queryUpperNowWeather(@Validated @RequestBody Position3D position3D) {
|
|
|
|
double latitude = position3D.getLatitude();
|
|
|
|
double latitude = position3D.getLatitude();
|
|
|
|
double longitude = position3D.getLongitude();
|
|
|
|
double longitude = position3D.getLongitude();
|
|
|
|
int level = position3D.getLevel();
|
|
|
|
int level = position3D.getLevel();
|
|
|
|
log.info("[data-server] 高空实时气象信息查询 start: param={}", position3D);
|
|
|
|
|
|
|
|
NowWeatherStatus nowWeather = gfsDataService.getNowWeather(level, latitude, longitude);
|
|
|
|
NowWeatherStatus nowWeather = gfsDataService.getNowWeather(level, latitude, longitude);
|
|
|
|
log.info("[data-server] 高空实时气象信息查询 end");
|
|
|
|
|
|
|
|
return Result.success(nowWeather);
|
|
|
|
return Result.success(nowWeather);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@PostMapping("/queryUpperNowWeatherInMultiPoints")
|
|
|
|
@PostMapping("/queryUpperNowWeatherInMultiPoints")
|
|
|
|
|
|
|
|
@ControllerLog(info = "高空航点实时气象信息查询")
|
|
|
|
public Result queryUpperNowWeatherInMultiPoints(@Validated @RequestBody MultiPointsRequest multiPointsRequest) {
|
|
|
|
public Result queryUpperNowWeatherInMultiPoints(@Validated @RequestBody MultiPointsRequest multiPointsRequest) {
|
|
|
|
List<Double> latitudeList = new ArrayList<>();
|
|
|
|
List<Double> latitudeList = new ArrayList<>();
|
|
|
|
List<Double> longitudeList = new ArrayList<>();
|
|
|
|
List<Double> longitudeList = new ArrayList<>();
|
|
|
@ -54,24 +56,22 @@ public class UpperWeatherController {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
int level = multiPointsRequest.getLevel().intValue();
|
|
|
|
int level = multiPointsRequest.getLevel().intValue();
|
|
|
|
log.info("[data-server] 高空航点实时气象信息查询 start: param={}", multiPointsRequest);
|
|
|
|
|
|
|
|
List<NowWeatherStatus> nowWeatherByMultiPoint = gfsDataService.getNowWeatherByMultiPoint(level, latitudeList, longitudeList);
|
|
|
|
List<NowWeatherStatus> nowWeatherByMultiPoint = gfsDataService.getNowWeatherByMultiPoint(level, latitudeList, longitudeList);
|
|
|
|
log.info("[data-server] 高空航点实时气象信息查询 end");
|
|
|
|
|
|
|
|
return Result.success(nowWeatherByMultiPoint);
|
|
|
|
return Result.success(nowWeatherByMultiPoint);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@PostMapping("/queryUpperForecast")
|
|
|
|
@PostMapping("/queryUpperForecast")
|
|
|
|
|
|
|
|
@ControllerLog(info = "高空24小时预报结果查询")
|
|
|
|
public Result queryUpperForecast(@Validated @RequestBody Position3D position3D) {
|
|
|
|
public Result queryUpperForecast(@Validated @RequestBody Position3D position3D) {
|
|
|
|
double latitude = position3D.getLatitude();
|
|
|
|
double latitude = position3D.getLatitude();
|
|
|
|
double longitude = position3D.getLongitude();
|
|
|
|
double longitude = position3D.getLongitude();
|
|
|
|
int level = position3D.getLevel();
|
|
|
|
int level = position3D.getLevel();
|
|
|
|
log.info("[data-server] 高空24小时预报结果查询 start: param={}", position3D);
|
|
|
|
|
|
|
|
TimeSeriesDataset forecastSeries = gfsDataService.getForecastSeries(level, latitude, longitude);
|
|
|
|
TimeSeriesDataset forecastSeries = gfsDataService.getForecastSeries(level, latitude, longitude);
|
|
|
|
log.info("[data-server] 高空24小时预报结果查询 end");
|
|
|
|
|
|
|
|
return Result.success(forecastSeries);
|
|
|
|
return Result.success(forecastSeries);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@PostMapping("/queryUpperForecastInMultiPoints")
|
|
|
|
@PostMapping("/queryUpperForecastInMultiPoints")
|
|
|
|
|
|
|
|
@ControllerLog(info = "高空航点24小时预报结果查询")
|
|
|
|
public Result queryUpperForecastInMultiPoints(@Validated @RequestBody MultiPointsRequest multiPointsRequest) {
|
|
|
|
public Result queryUpperForecastInMultiPoints(@Validated @RequestBody MultiPointsRequest multiPointsRequest) {
|
|
|
|
List<Double> latitudeList = new ArrayList<>();
|
|
|
|
List<Double> latitudeList = new ArrayList<>();
|
|
|
|
List<Double> longitudeList = new ArrayList<>();
|
|
|
|
List<Double> longitudeList = new ArrayList<>();
|
|
|
@ -86,77 +86,76 @@ public class UpperWeatherController {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
int level = multiPointsRequest.getLevel().intValue();
|
|
|
|
int level = multiPointsRequest.getLevel().intValue();
|
|
|
|
log.info("[data-server] 高空航点24小时预报结果查询 start: param={}", multiPointsRequest);
|
|
|
|
|
|
|
|
List<TimeSeriesDataset> nowWeatherByMultiPoint = gfsDataService.getForecastSeriesByMultiPoint(latitudeList, longitudeList, level);
|
|
|
|
List<TimeSeriesDataset> nowWeatherByMultiPoint = gfsDataService.getForecastSeriesByMultiPoint(latitudeList, longitudeList, level);
|
|
|
|
log.info("[data-server] 高空航点24小时预报结果查询 end");
|
|
|
|
|
|
|
|
return Result.success(nowWeatherByMultiPoint);
|
|
|
|
return Result.success(nowWeatherByMultiPoint);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**查询指定变量随气压的分布*/
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 查询指定变量随气压的分布
|
|
|
|
|
|
|
|
*/
|
|
|
|
@RequestMapping("/queryProfileByVariableAndPressure")
|
|
|
|
@RequestMapping("/queryProfileByVariableAndPressure")
|
|
|
|
|
|
|
|
@ControllerLog(info = "指定变量高度廓线(气压坐标)查询")
|
|
|
|
public Result queryProfileByVariableAndPressure(@Validated @RequestBody ProfileRequest profileRequest) {
|
|
|
|
public Result queryProfileByVariableAndPressure(@Validated @RequestBody ProfileRequest profileRequest) {
|
|
|
|
OffsetDateTime time = OffsetDateTime.parse(profileRequest.getTime());
|
|
|
|
OffsetDateTime time = OffsetDateTime.parse(profileRequest.getTime());
|
|
|
|
OffsetDateTime utcDateTime = DateTimeUtils.getUTCDateTime(time);
|
|
|
|
OffsetDateTime utcDateTime = DateTimeUtils.getUTCDateTime(time);
|
|
|
|
String variableName = profileRequest.getVariableName();
|
|
|
|
String variableName = profileRequest.getVariableName();
|
|
|
|
double latitude = profileRequest.getLatitude();
|
|
|
|
double latitude = profileRequest.getLatitude();
|
|
|
|
double longitude = profileRequest.getLongitude();
|
|
|
|
double longitude = profileRequest.getLongitude();
|
|
|
|
try {
|
|
|
|
|
|
|
|
log.info("[data-server] 高度廓线(气压坐标)查询 start: param={}", profileRequest);
|
|
|
|
ProfileResponse profileResponse = gfsDataService.getProfileByVariableAndPressure(variableName, utcDateTime, latitude, longitude);
|
|
|
|
ProfileResponse profileResponse = gfsDataService.getProfileByVariableAndPressure(variableName, utcDateTime, latitude, longitude);
|
|
|
|
return Result.success(profileResponse);
|
|
|
|
return Result.success(profileResponse);
|
|
|
|
|
|
|
|
} finally {
|
|
|
|
|
|
|
|
log.info("[data-server] 高度廓线(气压坐标)查询 end");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**查询全部变量随气压的分布*/
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 查询全部变量随气压的分布
|
|
|
|
|
|
|
|
*/
|
|
|
|
@RequestMapping("/queryProfileByPressure")
|
|
|
|
@RequestMapping("/queryProfileByPressure")
|
|
|
|
|
|
|
|
@ControllerLog(info = "全部变量高度廓线(气压坐标)查询")
|
|
|
|
public Result queryProfileByAndPressure(@Validated @RequestBody ProfileRequest profileRequest) {
|
|
|
|
public Result queryProfileByAndPressure(@Validated @RequestBody ProfileRequest profileRequest) {
|
|
|
|
OffsetDateTime time = OffsetDateTime.parse(profileRequest.getTime());
|
|
|
|
OffsetDateTime time = OffsetDateTime.parse(profileRequest.getTime());
|
|
|
|
OffsetDateTime utcDateTime = DateTimeUtils.getUTCDateTime(time);
|
|
|
|
OffsetDateTime utcDateTime = DateTimeUtils.getUTCDateTime(time);
|
|
|
|
double latitude = profileRequest.getLatitude();
|
|
|
|
double latitude = profileRequest.getLatitude();
|
|
|
|
double longitude = profileRequest.getLongitude();
|
|
|
|
double longitude = profileRequest.getLongitude();
|
|
|
|
try {
|
|
|
|
|
|
|
|
log.info("[data-server] 高度廓线(气压坐标)查询 start: param={}", profileRequest);
|
|
|
|
ProfileDataset profile = gfsDataService.getProfileByPressure(utcDateTime, latitude, longitude);
|
|
|
|
ProfileDataset profile = gfsDataService.getProfileByPressure(utcDateTime, latitude, longitude);
|
|
|
|
return Result.success(profile);
|
|
|
|
return Result.success(profile);
|
|
|
|
|
|
|
|
} finally {
|
|
|
|
|
|
|
|
log.info("[data-server] 高度廓线(气压坐标)查询 end");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/**查询全部近地面变量随高度的分布*/
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 查询指定近地面变量随高度的分布
|
|
|
|
|
|
|
|
*/
|
|
|
|
@RequestMapping("/queryProfileByVariableAndNearSurfaceHeight")
|
|
|
|
@RequestMapping("/queryProfileByVariableAndNearSurfaceHeight")
|
|
|
|
|
|
|
|
@ControllerLog(info = "指定变量高度廓线(近地面高度坐标)查询")
|
|
|
|
public Result queryProfileByVariableAndNearSurfaceHeight(@Validated @RequestBody ProfileRequest profileRequest) {
|
|
|
|
public Result queryProfileByVariableAndNearSurfaceHeight(@Validated @RequestBody ProfileRequest profileRequest) {
|
|
|
|
OffsetDateTime time = OffsetDateTime.parse(profileRequest.getTime());
|
|
|
|
OffsetDateTime time = OffsetDateTime.parse(profileRequest.getTime());
|
|
|
|
OffsetDateTime utcDateTime = DateTimeUtils.getUTCDateTime(time);
|
|
|
|
OffsetDateTime utcDateTime = DateTimeUtils.getUTCDateTime(time);
|
|
|
|
String variableName = profileRequest.getVariableName();
|
|
|
|
String variableName = profileRequest.getVariableName();
|
|
|
|
double latitude = profileRequest.getLatitude();
|
|
|
|
double latitude = profileRequest.getLatitude();
|
|
|
|
double longitude = profileRequest.getLongitude();
|
|
|
|
double longitude = profileRequest.getLongitude();
|
|
|
|
try {
|
|
|
|
|
|
|
|
log.info("[data-server] 高度廓线(近地面高度坐标)查询 start: param={}", profileRequest);
|
|
|
|
ProfileResponse profile = gfsDataService.getProfileByVariableAndNearSurfaceHeight(variableName, utcDateTime, latitude, longitude);
|
|
|
|
ProfileResponse profile = gfsDataService.getProfileByVariableAndNearSurfaceHeight(variableName, utcDateTime, latitude, longitude);
|
|
|
|
return Result.success(profile);
|
|
|
|
return Result.success(profile);
|
|
|
|
|
|
|
|
} finally {
|
|
|
|
|
|
|
|
log.info("[data-server] 高度廓线(近地面高度坐标)查询 end");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/**查询全部近地面变量随高度的分布*/
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 查询全部近地面变量随高度的分布
|
|
|
|
|
|
|
|
*/
|
|
|
|
@RequestMapping("/queryProfileByNearSurfaceHeight")
|
|
|
|
@RequestMapping("/queryProfileByNearSurfaceHeight")
|
|
|
|
|
|
|
|
@ControllerLog(info = "全部变量高度廓线(近地面高度坐标)查询")
|
|
|
|
public Result queryProfileByNearSurfaceHeight(@Validated @RequestBody ProfileRequest profileRequest) {
|
|
|
|
public Result queryProfileByNearSurfaceHeight(@Validated @RequestBody ProfileRequest profileRequest) {
|
|
|
|
OffsetDateTime time = OffsetDateTime.parse(profileRequest.getTime());
|
|
|
|
OffsetDateTime time = OffsetDateTime.parse(profileRequest.getTime());
|
|
|
|
OffsetDateTime utcDateTime = DateTimeUtils.getUTCDateTime(time);
|
|
|
|
OffsetDateTime utcDateTime = DateTimeUtils.getUTCDateTime(time);
|
|
|
|
double latitude = profileRequest.getLatitude();
|
|
|
|
double latitude = profileRequest.getLatitude();
|
|
|
|
double longitude = profileRequest.getLongitude();
|
|
|
|
double longitude = profileRequest.getLongitude();
|
|
|
|
try {
|
|
|
|
|
|
|
|
log.info("[data-server] 高度廓线(近地面高度坐标)查询 start: param={}", profileRequest);
|
|
|
|
log.info("[data-server] 高度廓线(近地面高度坐标)查询 start: param={}", profileRequest);
|
|
|
|
ProfileDataset profile = gfsDataService.getProfileByNearSurfaceHeight(utcDateTime, latitude, longitude);
|
|
|
|
ProfileDataset profile = gfsDataService.getProfileByNearSurfaceHeight(utcDateTime, latitude, longitude);
|
|
|
|
return Result.success(profile);
|
|
|
|
return Result.success(profile);
|
|
|
|
} finally {
|
|
|
|
|
|
|
|
log.info("[data-server] 高度廓线(近地面高度坐标)查询 end");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@PostMapping("/queryPlaneGrid")
|
|
|
|
@PostMapping("/queryPlaneGrid")
|
|
|
|
|
|
|
|
@ControllerLog(info = "平面网格数据查询")
|
|
|
|
public Result queryPlaneGrid(@Validated @RequestBody PlaneRequest planeRequest) {
|
|
|
|
public Result queryPlaneGrid(@Validated @RequestBody PlaneRequest planeRequest) {
|
|
|
|
planeRequest.valid();
|
|
|
|
planeRequest.valid();
|
|
|
|
String variableName = planeRequest.getVariableName();
|
|
|
|
String variableName = planeRequest.getVariableName();
|
|
|
@ -167,9 +166,8 @@ public class UpperWeatherController {
|
|
|
|
double maxLat = planeRequest.getMaxLatitude();
|
|
|
|
double maxLat = planeRequest.getMaxLatitude();
|
|
|
|
double minLon = planeRequest.getMinLongitude();
|
|
|
|
double minLon = planeRequest.getMinLongitude();
|
|
|
|
double maxLon = planeRequest.getMaxLongitude();
|
|
|
|
double maxLon = planeRequest.getMaxLongitude();
|
|
|
|
log.info("[data-server] 平面网格数据查询 start: param={}", planeRequest);
|
|
|
|
|
|
|
|
PlaneResponse forecastSeries = gfsDataService.getPlane(utcDateTime, variableName, level, minLat, maxLat, minLon, maxLon);
|
|
|
|
PlaneResponse forecastSeries = gfsDataService.getPlane(utcDateTime, variableName, level, minLat, maxLat, minLon, maxLon);
|
|
|
|
log.info("[data-server] 平面网格数据查询 end");
|
|
|
|
|
|
|
|
return Result.success(forecastSeries);
|
|
|
|
return Result.success(forecastSeries);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|