275 lines
8.5 KiB
JavaScript
275 lines
8.5 KiB
JavaScript
|
|
import { config } from '../../config';
|
|||
|
|
import CachePromise from '../../utils/cachepromise';
|
|||
|
|
import { httpget } from '../../utils/request';
|
|||
|
|
import apiurl from '../../service/apiurl';
|
|||
|
|
import moment from 'moment';
|
|||
|
|
|
|||
|
|
export const WeatherSet24h = new CachePromise(
|
|||
|
|
async () => {
|
|||
|
|
const latest = await ShqxYjhisLatest.get();
|
|||
|
|
if (!latest) {
|
|||
|
|
return null;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return httpget(apiurl.yjhis.weather, {
|
|||
|
|
filename: latest.rainFile,
|
|||
|
|
x1: 108.615000,//config.extent[0],
|
|||
|
|
y1: 29.315000,//config.extent[1],
|
|||
|
|
x2: 109.345000,//config.extent[2],
|
|||
|
|
y2: 30.055000,//config.extent[3],
|
|||
|
|
//layers: '00.24, 00.01, 01.01, 02.01, 03.01,04.01,05.01,06.01,07.01,08.01,09.01,10.01,11.01,12.01,13.01,14.01,15.01,16.01,17.01,18.01,19.01,20.01,21.01,22.01,23.01,24.01'
|
|||
|
|
layers:'00.24'
|
|||
|
|
}).then(({ data }) => data)
|
|||
|
|
.catch(() => null)
|
|||
|
|
},
|
|||
|
|
1000 * 60
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
//天气预报-网格雨量
|
|||
|
|
export const WeatherSetTm24h = async (paramsTm) => {
|
|||
|
|
const latest = await ShqxYjhisGet(paramsTm)
|
|||
|
|
if (!latest) {
|
|||
|
|
return null;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return httpget(apiurl.yjhis.weather, {
|
|||
|
|
filename: latest.rainFile,
|
|||
|
|
x1: 108.615000,//config.extent[0],
|
|||
|
|
y1: 29.315000,//config.extent[1],
|
|||
|
|
x2: 109.345000,//config.extent[2],
|
|||
|
|
y2: 30.055000,//config.extent[3],
|
|||
|
|
layers: '00.24, 00.01, 01.01, 02.01, 03.01,04.01,05.01,06.01,07.01,08.01,09.01,10.01,11.01,12.01,13.01,14.01,15.01,16.01,17.01,18.01,19.01,20.01,21.01,22.01,23.01,24.01'
|
|||
|
|
// layers:'00.24'
|
|||
|
|
}).then(({ data }) => data)
|
|||
|
|
.catch(() => null)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//天气预报-网格雨量24
|
|||
|
|
export const WeatherSetTm24h2 = async (paramsTm) => {
|
|||
|
|
const latest = await ShqxYjhisGet(paramsTm)
|
|||
|
|
if (!latest) {
|
|||
|
|
return null;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return httpget(apiurl.yjhis.weather, {
|
|||
|
|
filename: latest.rainFile,
|
|||
|
|
x1: 108.62318959955861,//108.615000,//config.extent[0],
|
|||
|
|
y1: 29.328651167767397,//29.315000,//config.extent[1],
|
|||
|
|
x2: 109.33730092768361,//109.345000,//config.extent[2],
|
|||
|
|
y2: 30.04791233720099,//30.055000,//config.extent[3],
|
|||
|
|
// layers: '00.24, 00.01, 01.01, 02.01, 03.01,04.01,05.01,06.01,07.01,08.01,09.01,10.01,11.01,12.01,13.01,14.01,15.01,16.01,17.01,18.01,19.01,20.01,21.01,22.01,23.01,24.01'
|
|||
|
|
layers:'00.24'
|
|||
|
|
}).then(({ data }) => data)
|
|||
|
|
.catch(() => null)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//天气预报-网格雨量2h
|
|||
|
|
export const WeatherSetTm2h = async (paramsTm) => {
|
|||
|
|
const latest = await ShqxYjhis2hGet(paramsTm)
|
|||
|
|
if (!latest) {
|
|||
|
|
return null;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return httpget(apiurl.yjhis.radar, {
|
|||
|
|
filename: latest.rainFile,
|
|||
|
|
x1: 108.62318959955861,//108.615000,//config.extent[0],
|
|||
|
|
y1: 29.328651167767397,//29.315000,//config.extent[1],
|
|||
|
|
x2: 109.33730092768361,//109.345000,//config.extent[2],
|
|||
|
|
y2: 30.04791233720099,//30.055000,//config.extent[3],
|
|||
|
|
// layers: '00.24, 00.01, 01.01, 02.01, 03.01,04.01,05.01,06.01,07.01,08.01,09.01,10.01,11.01,12.01,13.01,14.01,15.01,16.01,17.01,18.01,19.01,20.01,21.01,22.01,23.01,24.01'
|
|||
|
|
// layers:'00.24'
|
|||
|
|
}).then(({ data }) => data)
|
|||
|
|
.catch(() => null)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 时间轴,当前时间右侧的气象预报数据
|
|||
|
|
* */
|
|||
|
|
export const WeatherSetRightQx = new CachePromise(
|
|||
|
|
async () => {
|
|||
|
|
/**
|
|||
|
|
*取当前系统时间
|
|||
|
|
① 如果当前系统时间是08:15之前的时间,取前一天20:00的数据
|
|||
|
|
② 如果当前系统时间是08:15之后的且是20:00之前的,取当天的08:00
|
|||
|
|
③ 如果当前系统时间是08:15之后的且是20:00之后的,取当天的20:00
|
|||
|
|
这个grb/get接口报错或没返回值等,就提示:“没有对应的预报数据”
|
|||
|
|
* */
|
|||
|
|
let paramsTm = "";
|
|||
|
|
let defalut1 = moment().format("YYYY-MM-DD 08:15");
|
|||
|
|
let defalut2 = moment().format("YYYY-MM-DD 20:00");
|
|||
|
|
let currentHM = moment().format("YYYY-MM-DD HH:mm");
|
|||
|
|
|
|||
|
|
if(moment(currentHM).isBefore(defalut1)){
|
|||
|
|
paramsTm = moment().add(-1, 'day').format("YYYYMMDD20");
|
|||
|
|
}else{
|
|||
|
|
if(moment(currentHM).isBefore(defalut2)){
|
|||
|
|
paramsTm = moment().format("YYYYMMDD08");
|
|||
|
|
}else{
|
|||
|
|
paramsTm = moment().format("YYYYMMDD20");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//console.log("paramsTm 63++++",paramsTm);
|
|||
|
|
|
|||
|
|
const latest = await ShqxYjhisGet(paramsTm);
|
|||
|
|
if (!latest) {
|
|||
|
|
return null;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//let lastH = latest.tm.substring(12,13);
|
|||
|
|
let lastH = latest.tm.substring(11,13);
|
|||
|
|
let currentH = moment().format("H");
|
|||
|
|
let currentM = moment().format("m");
|
|||
|
|
|
|||
|
|
let currentTime = "";
|
|||
|
|
if(currentM>15){
|
|||
|
|
currentTime = currentH;
|
|||
|
|
}else{
|
|||
|
|
currentTime = Number(currentH) - 1;
|
|||
|
|
}
|
|||
|
|
//console.log("currentTime 58++++",currentTime);
|
|||
|
|
//console.log("lastH 58++++",lastH);
|
|||
|
|
//偏移量
|
|||
|
|
let pylNum = Number(currentTime) - Number(lastH);
|
|||
|
|
//console.log("pylNum 61++++",pylNum);
|
|||
|
|
|
|||
|
|
let layers = ' ';
|
|||
|
|
for (let i = pylNum; i <= 24; i++) {
|
|||
|
|
layers += (i>=10?String(i):"0"+String(i))+".01, ";
|
|||
|
|
}
|
|||
|
|
//console.log("layers 67++++",layers);
|
|||
|
|
|
|||
|
|
return httpget(apiurl.yjhis.weather, {
|
|||
|
|
filename: latest.rainFile,//"Z_NWGD_C_BCWH_20230213170706_P_RFFC_SPCC-ER01_202302132000_02401.GRB2",//latest.rainFile,
|
|||
|
|
x1: 108.62318959955861,//108.615000,//config.extent[0],
|
|||
|
|
y1: 29.328651167767397,//29.315000,//config.extent[1],
|
|||
|
|
x2: 109.33730092768361,//109.345000,//config.extent[2],
|
|||
|
|
y2: 30.04791233720099,//30.055000,//config.extent[3],
|
|||
|
|
layers: layers
|
|||
|
|
}).then(({ data }) => {
|
|||
|
|
return [...data]
|
|||
|
|
})
|
|||
|
|
.catch(() => null)
|
|||
|
|
},
|
|||
|
|
1000 * 60
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
//按时间获取天气预报24h
|
|||
|
|
export const WeatherSetRightQx2 =async (myTm) => {
|
|||
|
|
|
|||
|
|
const paramsTm = myTm
|
|||
|
|
//console.log("paramsTm 63++++",paramsTm);
|
|||
|
|
const latest = await ShqxYjhisGet(paramsTm);
|
|||
|
|
if (!latest) {
|
|||
|
|
return null;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//let lastH = latest.tm.substring(12,13);
|
|||
|
|
let lastH = latest.tm.substring(11,13);
|
|||
|
|
let currentH = moment().format("H");
|
|||
|
|
let currentM = moment().format("m");
|
|||
|
|
let currentTime = "";
|
|||
|
|
if(currentM>15){
|
|||
|
|
currentTime = currentH;
|
|||
|
|
}else{
|
|||
|
|
currentTime = Number(currentH) - 1;
|
|||
|
|
}
|
|||
|
|
//console.log("currentTime 58++++",currentTime);
|
|||
|
|
//console.log("lastH 58++++",lastH);
|
|||
|
|
//偏移量
|
|||
|
|
let pylNum = 0//Number(currentTime) - Number(lastH);
|
|||
|
|
//console.log("pylNum 61++++",pylNum);
|
|||
|
|
|
|||
|
|
let layers = ' ';
|
|||
|
|
for (let i = pylNum; i <= 24; i++) {
|
|||
|
|
layers += (i>=10?String(i):"0"+String(i))+".01, ";
|
|||
|
|
}
|
|||
|
|
//console.log("layers 67++++",layers);
|
|||
|
|
return httpget(apiurl.yjhis.weather, {
|
|||
|
|
filename: latest.rainFile,//"Z_NWGD_C_BCWH_20230213170706_P_RFFC_SPCC-ER01_202302132000_02401.GRB2",//latest.rainFile,
|
|||
|
|
x1: 108.62318959955861,//108.615000,//config.extent[0],
|
|||
|
|
y1: 29.328651167767397,//29.315000,//config.extent[1],
|
|||
|
|
x2: 109.33730092768361,//109.345000,//config.extent[2],
|
|||
|
|
y2: 30.04791233720099,//30.055000,//config.extent[3],
|
|||
|
|
layers: layers
|
|||
|
|
}).then(({ data }) => {
|
|||
|
|
return [...data]
|
|||
|
|
})
|
|||
|
|
.catch(() => null)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
export const WeatherRadar = new CachePromise(
|
|||
|
|
async () => {
|
|||
|
|
const latest = await ShqxRadarhisLatest.get();
|
|||
|
|
if (!latest) {
|
|||
|
|
return null;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return httpget(apiurl.radarhis.weather, {
|
|||
|
|
filename: latest.rainFile,
|
|||
|
|
x1: config.extent[0],
|
|||
|
|
y1: config.extent[1],
|
|||
|
|
x2: config.extent[2],
|
|||
|
|
y2: config.extent[3],
|
|||
|
|
}).then(({ data }) => data)
|
|||
|
|
.catch(() => null)
|
|||
|
|
},
|
|||
|
|
1000 * 60
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
export const WeatherRadar2 = async(tm) => {
|
|||
|
|
const latest = await httpget('http://223.75.53.124:8005/radar/get', { tm })
|
|||
|
|
if (!latest.data) {
|
|||
|
|
return null;
|
|||
|
|
}
|
|||
|
|
return httpget('http://223.75.53.124:8005/res/radarlayer', {
|
|||
|
|
filename: latest.data.rainFile,
|
|||
|
|
}).then(({ data }) => data)
|
|||
|
|
.catch(() => null)
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export const ShqxYjhisLatest = new CachePromise(
|
|||
|
|
() => httpget(`http://223.75.53.124:8005/grb/latest`, { adcd: localStorage.getItem('ADCD6') })
|
|||
|
|
.then(({ data }) => {
|
|||
|
|
data.intv = 24 * 60;
|
|||
|
|
return data;
|
|||
|
|
})
|
|||
|
|
.catch(() => null),
|
|||
|
|
5000
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
|
|||
|
|
export const ShqxYjhisGet = (tm) => httpget(`http://223.75.53.124:8005/grb/get`, { tm })
|
|||
|
|
.then(({ data }) => {
|
|||
|
|
data.intv = 24 * 60;
|
|||
|
|
return data;
|
|||
|
|
}).catch(() => null)
|
|||
|
|
|
|||
|
|
export const ShqxYjhis2hGet = (tm) => httpget(`http://223.75.53.124:8005/radar/get`, { tm })
|
|||
|
|
.then(({ data }) => {
|
|||
|
|
data.intv = 24 * 60;
|
|||
|
|
return data;
|
|||
|
|
}).catch(() => null)
|
|||
|
|
|
|||
|
|
export const ShqxRadarhisLatest = new CachePromise(
|
|||
|
|
() => httpget(apiurl.radarhis.latest, { adcd: localStorage.getItem('ADCD6') })
|
|||
|
|
.then(({ data }) => {
|
|||
|
|
data.intv = 2 * 60;
|
|||
|
|
return data;
|
|||
|
|
})
|
|||
|
|
.catch(() => null),
|
|||
|
|
5000
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
export const YjList =
|
|||
|
|
(params) => httpget(apiurl.yjhis.find, {...params})
|
|||
|
|
.then(({ data }) => data)
|
|||
|
|
.catch(() => null);
|
|||
|
|
|
|||
|
|
//风险预警详情
|
|||
|
|
export const fxyjDetails =
|
|||
|
|
(params) => httpget(apiurl.yjhis.stat, {...params})
|
|||
|
|
.then((data) => data)
|
|||
|
|
.catch(() => null);
|