feat(): 删除多余代码
parent
029c78e4c2
commit
9f371e041a
|
|
@ -4,16 +4,13 @@ import { map } from "./map"
|
||||||
import overallview from "./overallview";
|
import overallview from "./overallview";
|
||||||
import realview from "./realview";
|
import realview from "./realview";
|
||||||
import { runtime } from "./runtime";
|
import { runtime } from "./runtime";
|
||||||
import rcview from "./rcview";
|
|
||||||
import shyjview from "./shyjview";
|
|
||||||
import systemSwitch from "./systemSwitch";
|
import systemSwitch from "./systemSwitch";
|
||||||
|
|
||||||
export interface RootModel extends Models<RootModel> {
|
export interface RootModel extends Models<RootModel> {
|
||||||
map: typeof map;
|
map: typeof map;
|
||||||
overallview: typeof overallview;
|
overallview: typeof overallview;
|
||||||
runtime: typeof runtime;
|
runtime: typeof runtime;
|
||||||
rcview: typeof rcview;
|
|
||||||
shyjview: typeof shyjview;
|
|
||||||
auth: typeof auth;
|
auth: typeof auth;
|
||||||
systemSwitch: typeof systemSwitch;
|
systemSwitch: typeof systemSwitch;
|
||||||
}
|
}
|
||||||
|
|
@ -23,8 +20,7 @@ export const models: RootModel = {
|
||||||
overallview,
|
overallview,
|
||||||
realview,
|
realview,
|
||||||
runtime,
|
runtime,
|
||||||
rcview,
|
|
||||||
shyjview,
|
|
||||||
auth,
|
auth,
|
||||||
systemSwitch
|
systemSwitch
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,932 +0,0 @@
|
||||||
import interpolate from '@turf/interpolate';
|
|
||||||
import flattern from '@turf/flatten';
|
|
||||||
import intersect from '@turf/intersect';
|
|
||||||
import area from '@turf/area';
|
|
||||||
import buffer from '@turf/buffer';
|
|
||||||
import { featureCollection } from "@turf/helpers";
|
|
||||||
import { drpShColor, drpColorLevel } from "../../utils/renutils";
|
|
||||||
import clone from "clone";
|
|
||||||
import {config} from "../../config";
|
|
||||||
import {WeatherSet24h, WeatherSetRightQx, WeatherSetRightQx2, WeatherRadar,WeatherRadar2,WeatherSetTm24h} from "../_/shqxjs";
|
|
||||||
import { DrpRealPromiseWX } from "../_/real";
|
|
||||||
import { BouaPromise } from "../_/base";
|
|
||||||
import { isobandsCustomer } from "./isobandsCustomer";
|
|
||||||
import { getStPptnRHListApi } from "../../service/forecastModule/rainfall";
|
|
||||||
import moment from "moment";
|
|
||||||
|
|
||||||
function calCellSize() {
|
|
||||||
const [x1, y1, x2, y2] = config.extent;
|
|
||||||
const w = (x2 - x1) / 40;
|
|
||||||
const h = (y2 - y1) / 40;
|
|
||||||
return (w + h) * 0.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
const WEIGHT = 5;
|
|
||||||
const CELLSIZE = calCellSize();
|
|
||||||
|
|
||||||
|
|
||||||
function createBouaContour(boua, z1, z2) {
|
|
||||||
const ret = clone(boua);
|
|
||||||
ret.features[0].properties = {
|
|
||||||
z1, z2,
|
|
||||||
// fill: drpShColor(z1, true, 0.7),
|
|
||||||
fill: drpColorLevel(z1),
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function FeaturePt(x, y, z) {
|
|
||||||
return {
|
|
||||||
type: 'Feature',
|
|
||||||
properties: { z },
|
|
||||||
geometry: {
|
|
||||||
type: 'Point',
|
|
||||||
coordinates: [x, y],
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function calRealContour(list,type) {
|
|
||||||
//type 1:站点雨量 2:雨情时间轴
|
|
||||||
const tm = Date.now();
|
|
||||||
//const drpReal = await DrpRealPromise.get();
|
|
||||||
let testData = [
|
|
||||||
{
|
|
||||||
"countycode": "420529000000",
|
|
||||||
"stcd": "0529000003",
|
|
||||||
"lgtd": 110.48687485,
|
|
||||||
"lttd": 30.08361939,
|
|
||||||
"source": "SH",
|
|
||||||
"drp": 0,
|
|
||||||
"tm": "2023-09-20 20:00:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"countycode": "420529000000",
|
|
||||||
"stcd": "0529000004",
|
|
||||||
"lgtd": 110.48029378,
|
|
||||||
"lttd": 30.08072148,
|
|
||||||
"source": "SH",
|
|
||||||
"drp": 0,
|
|
||||||
"tm": "2023-09-20 20:00:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"countycode": "420529000000",
|
|
||||||
"stcd": "0529000006",
|
|
||||||
"lgtd": 110.44770565,
|
|
||||||
"lttd": 30.05067071,
|
|
||||||
"source": "SH",
|
|
||||||
"drp": 0,
|
|
||||||
"tm": "2023-09-20 20:00:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"countycode": "420529000000",
|
|
||||||
"stcd": "0529000015",
|
|
||||||
"lgtd": 110.4712541,
|
|
||||||
"lttd": 30.05237389,
|
|
||||||
"source": "SH",
|
|
||||||
"drp": 7.5,
|
|
||||||
"tm": "2023-09-20 20:00:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"countycode": "420529000000",
|
|
||||||
"stcd": "0529000018",
|
|
||||||
"lgtd": 110.3665342,
|
|
||||||
"lttd": 30.06455589,
|
|
||||||
"source": "SH",
|
|
||||||
"drp": 7,
|
|
||||||
"tm": "2023-09-20 20:00:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"countycode": "420529000000",
|
|
||||||
"stcd": "0529000017",
|
|
||||||
"lgtd": 110.3915608,
|
|
||||||
"lttd": 30.09455766,
|
|
||||||
"source": "SH",
|
|
||||||
"drp": 6,
|
|
||||||
"tm": "2023-09-20 20:00:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"countycode": "420529000000",
|
|
||||||
"stcd": "0529020014",
|
|
||||||
"lgtd": 110.40418321,
|
|
||||||
"lttd": 30.01706327,
|
|
||||||
"source": "SH",
|
|
||||||
"drp": 0,
|
|
||||||
"tm": "2023-09-20 20:00:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"countycode": "420529000000",
|
|
||||||
"stcd": "0529020015",
|
|
||||||
"lgtd": 110.40095006,
|
|
||||||
"lttd": 30.04342534,
|
|
||||||
"source": "SH",
|
|
||||||
"drp": 0,
|
|
||||||
"tm": "2023-09-20 20:00:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"countycode": "420529000000",
|
|
||||||
"stcd": "0529020001",
|
|
||||||
"lgtd": 110.49619987,
|
|
||||||
"lttd": 30.11764172,
|
|
||||||
"source": "SH",
|
|
||||||
"drp": 0,
|
|
||||||
"tm": "2023-09-20 20:00:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"countycode": "420529000000",
|
|
||||||
"stcd": "0529020005",
|
|
||||||
"lgtd": 110.44345916,
|
|
||||||
"lttd": 30.06382503,
|
|
||||||
"source": "SH",
|
|
||||||
"drp": 0,
|
|
||||||
"tm": "2023-09-20 20:00:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"countycode": "420529000000",
|
|
||||||
"stcd": "0529020002",
|
|
||||||
"lgtd": 110.47222902,
|
|
||||||
"lttd": 30.09723556,
|
|
||||||
"source": "SH",
|
|
||||||
"drp": 0,
|
|
||||||
"tm": "2023-09-20 20:00:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"countycode": "420529000000",
|
|
||||||
"stcd": "0529020008",
|
|
||||||
"lgtd": 110.42067152,
|
|
||||||
"lttd": 30.06479346,
|
|
||||||
"source": "SH",
|
|
||||||
"drp": 0,
|
|
||||||
"tm": "2023-09-20 20:00:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"countycode": "420529000000",
|
|
||||||
"stcd": "0529020007",
|
|
||||||
"lgtd": 110.42852499,
|
|
||||||
"lttd": 30.04141522,
|
|
||||||
"source": "SH",
|
|
||||||
"drp": 0,
|
|
||||||
"tm": "2023-09-20 20:00:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"countycode": "420529000000",
|
|
||||||
"stcd": "0529020003",
|
|
||||||
"lgtd": 110.48687485,
|
|
||||||
"lttd": 30.08361939,
|
|
||||||
"source": "SH",
|
|
||||||
"drp": 0,
|
|
||||||
"tm": "2023-09-20 20:00:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"countycode": "420529000000",
|
|
||||||
"stcd": "0529020011",
|
|
||||||
"lgtd": 110.40631381,
|
|
||||||
"lttd": 30.03815157,
|
|
||||||
"source": "SH",
|
|
||||||
"drp": 0,
|
|
||||||
"tm": "2023-09-20 20:00:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"countycode": "420529000000",
|
|
||||||
"stcd": "0529020006",
|
|
||||||
"lgtd": 110.44770565,
|
|
||||||
"lttd": 30.05067071,
|
|
||||||
"source": "SH",
|
|
||||||
"drp": 0,
|
|
||||||
"tm": "2023-09-20 20:00:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"countycode": "420529000000",
|
|
||||||
"stcd": "0529020009",
|
|
||||||
"lgtd": 110.42001971,
|
|
||||||
"lttd": 30.01753668,
|
|
||||||
"source": "SH",
|
|
||||||
"drp": 0,
|
|
||||||
"tm": "2023-09-20 20:00:00"
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
const drpReal = list// type===1?await DrpRealPromiseWX.get():testData;
|
|
||||||
const boua = await BouaPromise.get();
|
|
||||||
console.log("52@@@站点实时雨量",drpReal);
|
|
||||||
if (!drpReal) {
|
|
||||||
return { msg: '获取实时数据失败' };
|
|
||||||
}
|
|
||||||
if (!boua) {
|
|
||||||
return { msg: '获取边界数据失败' };
|
|
||||||
}
|
|
||||||
|
|
||||||
let points =
|
|
||||||
drpReal
|
|
||||||
.filter(o => o.lgtd && o.lttd)
|
|
||||||
// .map(o => FeaturePt(o.lgtd, o.lttd, o[interval]));
|
|
||||||
.map(o => FeaturePt(o.lgtd, o.lttd, o.drp));
|
|
||||||
|
|
||||||
|
|
||||||
if (points.length < 1) {
|
|
||||||
return { msg: '无法获得有效实时数据站点数据' };
|
|
||||||
}
|
|
||||||
//console.log("68@@@站点实时雨量",points);
|
|
||||||
let total = 0;
|
|
||||||
points.forEach(pt => {
|
|
||||||
total += pt.properties.z;
|
|
||||||
});
|
|
||||||
const av = total / points.length;
|
|
||||||
|
|
||||||
// points.push(FeaturePt(config.extent[0], config.extent[1], av));
|
|
||||||
points.push(FeaturePt(108.615000, 29.315000, av));
|
|
||||||
// points.push(FeaturePt(config.extent[2], config.extent[3], av));
|
|
||||||
points.push(FeaturePt(109.345000, 30.055000, av));
|
|
||||||
|
|
||||||
|
|
||||||
const clt = featureCollection(points);
|
|
||||||
|
|
||||||
const grid = interpolate(clt, CELLSIZE, {
|
|
||||||
gridType: 'point',
|
|
||||||
property: 'z',
|
|
||||||
units: 'degrees',
|
|
||||||
weight: WEIGHT
|
|
||||||
});
|
|
||||||
|
|
||||||
let maxVal = 0;
|
|
||||||
grid.features.forEach(pt => {
|
|
||||||
if (pt.properties.z > maxVal) {
|
|
||||||
maxVal = pt.properties.z;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (maxVal <= 0.1) {
|
|
||||||
return {
|
|
||||||
breaks: [0],
|
|
||||||
shp: createBouaContour(boua, 0, 0),
|
|
||||||
// interval,
|
|
||||||
interval: "h12",
|
|
||||||
type: 'real',
|
|
||||||
tm,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
maxVal = Math.ceil(maxVal);
|
|
||||||
|
|
||||||
const step = Math.max(1, Math.ceil(maxVal / 10));
|
|
||||||
|
|
||||||
const breaks = [0, 0.1];
|
|
||||||
|
|
||||||
for (let i = step; i <= maxVal; i += step) {
|
|
||||||
breaks.push(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
let bands = isobands(grid, breaks, {
|
|
||||||
zProperty: 'z',
|
|
||||||
breaksProperties: breaks.map(z1 => ({
|
|
||||||
z1,
|
|
||||||
fill: drpShColor(z1, true)
|
|
||||||
}))
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
|
|
||||||
let bands = isobandsCustomer(grid, breaks);
|
|
||||||
|
|
||||||
|
|
||||||
bands = flattern(bands);
|
|
||||||
|
|
||||||
let clipped = [];
|
|
||||||
bands.features.forEach(band => {
|
|
||||||
let intersection = null;
|
|
||||||
try {
|
|
||||||
intersection = intersect(band, boua.features[0]);
|
|
||||||
} catch (e) {
|
|
||||||
console.log(e);
|
|
||||||
try {
|
|
||||||
band = buffer(band, 0.0001);
|
|
||||||
intersection = intersect(band, boua.features[0]);
|
|
||||||
} catch (e) {
|
|
||||||
console.log(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (intersection) {
|
|
||||||
intersection.properties = band.properties;
|
|
||||||
clipped.push(intersection);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
bands.features = clipped;
|
|
||||||
|
|
||||||
let areaInfo = {};
|
|
||||||
bands.features.forEach(o => {
|
|
||||||
const z1 = o.properties.z1;
|
|
||||||
o.properties.area = area(o);
|
|
||||||
areaInfo[z1] = areaInfo[z1] || 0;
|
|
||||||
areaInfo[z1] += o.properties.area;
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
return {
|
|
||||||
shp: bands,
|
|
||||||
breaks,
|
|
||||||
step,
|
|
||||||
interval: "h12",
|
|
||||||
type: 'real',
|
|
||||||
tm,
|
|
||||||
areaInfo,
|
|
||||||
label: 'z',
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function calRealContourLdy(drpReal, interval) {
|
|
||||||
//type 1:站点雨量 2:雨情时间轴 getStPptnRHListApi
|
|
||||||
const tm = Date.now();
|
|
||||||
//const drpReal = await DrpRealPromise.get();
|
|
||||||
|
|
||||||
const boua = await BouaPromise.get();
|
|
||||||
//console.log("@@@落地雨488",drpReal);
|
|
||||||
if (!drpReal) {
|
|
||||||
return { msg: '获取实时数据失败' };
|
|
||||||
}
|
|
||||||
if (!boua) {
|
|
||||||
return { msg: '获取边界数据失败' };
|
|
||||||
}
|
|
||||||
|
|
||||||
let points =
|
|
||||||
drpReal
|
|
||||||
.filter(o => o.lgtd && o.lttd)
|
|
||||||
.map(o => FeaturePt(o.lgtd, o.lttd, o[interval]));
|
|
||||||
|
|
||||||
if (points.length < 1) {
|
|
||||||
return { msg: '无法获得有效实时数据站点数据' };
|
|
||||||
}
|
|
||||||
//console.log("@@@落地雨504",points);
|
|
||||||
let total = 0;
|
|
||||||
points.forEach(pt => {
|
|
||||||
total += pt.properties.z;
|
|
||||||
});
|
|
||||||
const av = total / points.length;
|
|
||||||
|
|
||||||
points.push(FeaturePt(config.extent[0], config.extent[1], av));
|
|
||||||
points.push(FeaturePt(config.extent[2], config.extent[3], av));
|
|
||||||
|
|
||||||
const clt = featureCollection(points);
|
|
||||||
|
|
||||||
const grid = interpolate(clt, CELLSIZE, {
|
|
||||||
gridType: 'point',
|
|
||||||
property: 'z',
|
|
||||||
units: 'degrees',
|
|
||||||
weight: WEIGHT
|
|
||||||
});
|
|
||||||
|
|
||||||
let maxVal = 0;
|
|
||||||
grid.features.forEach(pt => {
|
|
||||||
if (pt.properties.z > maxVal) {
|
|
||||||
maxVal = pt.properties.z;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (maxVal <= 0.1) {
|
|
||||||
return {
|
|
||||||
breaks: [0],
|
|
||||||
shp: createBouaContour(boua, 0, 0),
|
|
||||||
interval,
|
|
||||||
type: 'real',
|
|
||||||
tm,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
maxVal = Math.ceil(maxVal);
|
|
||||||
|
|
||||||
const breaks = [...config.commonBreaks];
|
|
||||||
|
|
||||||
let bands = isobandsCustomer(grid, breaks);
|
|
||||||
|
|
||||||
bands = flattern(bands);
|
|
||||||
|
|
||||||
let clipped = [];
|
|
||||||
bands.features.forEach(band => {
|
|
||||||
let intersection = null;
|
|
||||||
try {
|
|
||||||
intersection = intersect(band, boua.features[0]);
|
|
||||||
} catch (e) {
|
|
||||||
console.log(e);
|
|
||||||
try {
|
|
||||||
band = buffer(band, 0.0001);
|
|
||||||
intersection = intersect(band, boua.features[0]);
|
|
||||||
} catch (e) {
|
|
||||||
console.log(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (intersection) {
|
|
||||||
intersection.properties = band.properties;
|
|
||||||
clipped.push(intersection);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
bands.features = clipped;
|
|
||||||
|
|
||||||
let areaInfo = {};
|
|
||||||
bands.features.forEach(o => {
|
|
||||||
const z1 = o.properties.z1;
|
|
||||||
o.properties.area = area(o);
|
|
||||||
areaInfo[z1] = areaInfo[z1] || 0;
|
|
||||||
areaInfo[z1] += o.properties.area;
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
return {
|
|
||||||
shp: bands
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function calFzdxContour(interval, minValue) {
|
|
||||||
const tm = Date.now();
|
|
||||||
|
|
||||||
//const drpReal = await DrpRealPromise.get();
|
|
||||||
const drpReal = await DrpRealPromiseWX.get();
|
|
||||||
const boua = await BouaPromise.get();
|
|
||||||
|
|
||||||
if (!drpReal) {
|
|
||||||
return { msg: '获取实时数据失败' };
|
|
||||||
}
|
|
||||||
if (!boua) {
|
|
||||||
return { msg: '获取边界数据失败' };
|
|
||||||
}
|
|
||||||
|
|
||||||
const points =
|
|
||||||
drpReal
|
|
||||||
.filter(o => o.state === 1 && o.lgtd && o.lttd)
|
|
||||||
.map(o => FeaturePt(o.lgtd, o.lttd, o[interval]));
|
|
||||||
|
|
||||||
if (points < 1) {
|
|
||||||
return { msg: '无法获得有效实时数据站点数据' };
|
|
||||||
}
|
|
||||||
|
|
||||||
let total = 0;
|
|
||||||
points.forEach(pt => {
|
|
||||||
total += pt.properties.z;
|
|
||||||
});
|
|
||||||
const av = total / points.length;
|
|
||||||
|
|
||||||
points.push(FeaturePt(config.extent[0], config.extent[1], av));
|
|
||||||
points.push(FeaturePt(config.extent[2], config.extent[3], av));
|
|
||||||
|
|
||||||
const clt = featureCollection(points);
|
|
||||||
|
|
||||||
const grid = interpolate(clt, CELLSIZE, {
|
|
||||||
gridType: 'point',
|
|
||||||
property: 'z',
|
|
||||||
units: 'degrees',
|
|
||||||
weight: WEIGHT
|
|
||||||
});
|
|
||||||
|
|
||||||
const breaks = [minValue, 9999];
|
|
||||||
|
|
||||||
/*
|
|
||||||
let bands = isobands(grid, breaks, {
|
|
||||||
zProperty: 'z',
|
|
||||||
breaksProperties: breaks.map(z1 => ({
|
|
||||||
z1,
|
|
||||||
fill: colors.red[300],
|
|
||||||
}))
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
|
|
||||||
let bands = isobandsCustomer(grid, breaks);
|
|
||||||
|
|
||||||
bands = flattern(bands);
|
|
||||||
|
|
||||||
let clipped = [];
|
|
||||||
bands.features.forEach(band => {
|
|
||||||
let intersection = null;
|
|
||||||
try {
|
|
||||||
intersection = intersect(band, boua.features[0]);
|
|
||||||
} catch (e) {
|
|
||||||
console.log(e);
|
|
||||||
try {
|
|
||||||
band = buffer(band, 0.0001);
|
|
||||||
intersection = intersect(band, boua.features[0]);
|
|
||||||
} catch (e) {
|
|
||||||
console.log(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (intersection) {
|
|
||||||
intersection.properties = band.properties;
|
|
||||||
clipped.push(intersection);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
bands.features = clipped;
|
|
||||||
|
|
||||||
let areaInfo = 0;
|
|
||||||
bands.features.forEach(o => {
|
|
||||||
o.properties.area = area(o);
|
|
||||||
areaInfo += o.properties.area;
|
|
||||||
|
|
||||||
})
|
|
||||||
|
|
||||||
return {
|
|
||||||
shp: bands,
|
|
||||||
breaks,
|
|
||||||
interval,
|
|
||||||
type: 'fzdx',
|
|
||||||
tm,
|
|
||||||
areaInfo
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
export function calGridContour(griddata, breaks, boua) {
|
|
||||||
if (!griddata) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
const features = [];
|
|
||||||
const bin = griddata.data;
|
|
||||||
if (!bin || !bin[0]) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
const { x1, y1, dw, dh } = griddata;
|
|
||||||
const nh = bin.length, nw = bin[0].length;
|
|
||||||
let minz = 99999, maxz = 0;
|
|
||||||
for (let ix = 0; ix < nw; ix++) {
|
|
||||||
for (let iy = 0; iy < nh; iy++) {
|
|
||||||
const z = bin[iy][ix];
|
|
||||||
features.push({
|
|
||||||
type: 'Feature',
|
|
||||||
properties: {
|
|
||||||
z,
|
|
||||||
},
|
|
||||||
geometry: {
|
|
||||||
type: 'Point',
|
|
||||||
coordinates: [x1 + ix * dw, y1 + iy * dh],
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
minz = Math.min(z, minz);
|
|
||||||
maxz = Math.max(z, maxz);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (let i = 1; i < breaks.length; i++) {
|
|
||||||
if (minz >= breaks[i - 1] && maxz <= breaks[i]) {
|
|
||||||
return createBouaContour(boua, breaks[i - 1], breaks[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
let bands = isobands(featureCollection(features), breaks, {
|
|
||||||
zProperty: 'z',
|
|
||||||
breaksProperties: breaks.map(z1 => ({
|
|
||||||
z1,
|
|
||||||
fill: drpShColor(z1, true),
|
|
||||||
}))
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
//console.log("480 features+++",featureCollection(features));
|
|
||||||
|
|
||||||
let bands = isobandsCustomer(featureCollection(features), breaks);
|
|
||||||
|
|
||||||
bands = flattern(bands);
|
|
||||||
|
|
||||||
let clipped = [];
|
|
||||||
bands.features.forEach(band => {
|
|
||||||
let intersection = null;
|
|
||||||
try {
|
|
||||||
intersection = intersect(band, boua.features[0]);
|
|
||||||
} catch (e) {
|
|
||||||
console.log(e);
|
|
||||||
try {
|
|
||||||
band = buffer(band, 0.0001);
|
|
||||||
intersection = intersect(band, boua.features[0]);
|
|
||||||
} catch (e) {
|
|
||||||
console.log(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (intersection) {
|
|
||||||
intersection.properties = band.properties;
|
|
||||||
clipped.push(intersection);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
bands.features = clipped;
|
|
||||||
|
|
||||||
return bands;
|
|
||||||
}
|
|
||||||
|
|
||||||
//图层弹窗-预报数据-气象局24小时预报
|
|
||||||
export async function calWeatherContour24H(progress,type,myTm) {
|
|
||||||
const weatherSet = type===1?await WeatherSet24h.get():await WeatherSetRightQx2(myTm);
|
|
||||||
|
|
||||||
const boua = await BouaPromise.get();
|
|
||||||
//console.log("boua 522 ++++",boua);
|
|
||||||
|
|
||||||
if (!weatherSet) {
|
|
||||||
return { msg: '获取天气数据失败' };
|
|
||||||
}
|
|
||||||
if (!boua) {
|
|
||||||
return { msg: '获取边界数据失败' };
|
|
||||||
}
|
|
||||||
|
|
||||||
//console.log(weatherSet);
|
|
||||||
let data24h = weatherSet.find(o => o?.tmRange?.interval === 24);//气象局24小时预报
|
|
||||||
let data1h = weatherSet.filter(o => o?.tmRange?.interval === 1);//预报-雨情-当前及右侧
|
|
||||||
|
|
||||||
data1h = data1h.sort((a, b) => (a?.tmRange.tm1 > b?.tmRange.tm1 ? 1 : -1));
|
|
||||||
|
|
||||||
const breaks = [...config.commonBreaks];
|
|
||||||
|
|
||||||
const shps = [], tms = [];
|
|
||||||
|
|
||||||
// shps.push(calGridContour(data24h, breaks, boua));
|
|
||||||
// tms.push(data24h?.tmRange.tm1);
|
|
||||||
|
|
||||||
|
|
||||||
//落地雨
|
|
||||||
let currentY = moment().format("Y");
|
|
||||||
let currentH = moment().format("H");
|
|
||||||
let currentM = moment().format("m");
|
|
||||||
let currentD = moment().format("MM-DD");
|
|
||||||
|
|
||||||
let currentT = null;
|
|
||||||
if(Number(currentM)>15){
|
|
||||||
currentT = currentH;
|
|
||||||
}else{
|
|
||||||
currentT = Number(currentH) - 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
let currentTime = currentY+"-"+currentD+" "+currentT+":00";
|
|
||||||
//console.log("currentTime 503#####",currentTime);
|
|
||||||
|
|
||||||
const endDateTime = new Date(currentTime);
|
|
||||||
const startDateTime = new Date(endDateTime.getTime() - 24 * 60 * 60 * 1000);
|
|
||||||
|
|
||||||
const timeArray = [];
|
|
||||||
while (startDateTime.getTime() <= endDateTime.getTime()) {
|
|
||||||
const timeString = startDateTime.toLocaleString('en-US', {
|
|
||||||
year: 'numeric',
|
|
||||||
month: '2-digit',
|
|
||||||
day: '2-digit',
|
|
||||||
hour: 'numeric',
|
|
||||||
minute: 'numeric',
|
|
||||||
});
|
|
||||||
timeArray.push(moment(timeString).format("YYYY-MM-DD HH:mm:ss"));
|
|
||||||
startDateTime.setTime(startDateTime.getTime() + 60 * 60 * 1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
//console.log("521@@@@@@@@",timeArray);
|
|
||||||
const resultArray = [];
|
|
||||||
for (let i = 0; i < timeArray.length - 1; i++) {
|
|
||||||
resultArray.push([timeArray[i], timeArray[i + 1]]);
|
|
||||||
}
|
|
||||||
|
|
||||||
//console.log("527@@@@++++",resultArray);
|
|
||||||
|
|
||||||
/*if(resultArray.length>0){
|
|
||||||
resultArray.map(async(item)=>{
|
|
||||||
let params = {
|
|
||||||
"adcd": "420529",
|
|
||||||
"source": ["SH","SW","SK","QX"],
|
|
||||||
"stm": item[0],
|
|
||||||
"etm": item[1]
|
|
||||||
};
|
|
||||||
let drpReal = [];
|
|
||||||
const resData = await getStPptnRHListApi(params);
|
|
||||||
if(resData.code === 200){
|
|
||||||
drpReal = resData.data;
|
|
||||||
}
|
|
||||||
|
|
||||||
const ldyData = await calRealContourLdy(drpReal,"drp",2);
|
|
||||||
shps.push(ldyData.shp);
|
|
||||||
});
|
|
||||||
}*/
|
|
||||||
// console.log("690@@@@",timeArray);
|
|
||||||
// let params = {
|
|
||||||
// "adcd": "420529",
|
|
||||||
// "source": ["SH","SW","SK","QX"],
|
|
||||||
// "stm": timeArray[0],
|
|
||||||
// "etm": moment(endDateTime).format("YYYY-MM-DD HH:mm:ss")
|
|
||||||
// };
|
|
||||||
// let drpReal = [];
|
|
||||||
// const resData = await getStPptnRHListApi(params);
|
|
||||||
// if(resData.code === 200){
|
|
||||||
// drpReal = resData.data;
|
|
||||||
// //console.log("701+++++",drpReal);
|
|
||||||
// const result = [];
|
|
||||||
// const groupedData = drpReal.reduce((acc, item) => {
|
|
||||||
// const key = item.tm;
|
|
||||||
// if (!acc[key]) {
|
|
||||||
// acc[key] = [];
|
|
||||||
// }
|
|
||||||
// acc[key].push(item);
|
|
||||||
// return acc;
|
|
||||||
// }, {});
|
|
||||||
|
|
||||||
// for (const key in groupedData) {
|
|
||||||
// result.push(groupedData[key]);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// //console.log("716+++++@@@@@",result);
|
|
||||||
// if(result.length>0){
|
|
||||||
// result.map(async(item)=>{
|
|
||||||
// const ldyData = await calRealContourLdy(item,"drp");
|
|
||||||
// shps.push(ldyData.shp);
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
let i = 1;
|
|
||||||
if (progress) {
|
|
||||||
await progress(i++);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const o of data1h) {
|
|
||||||
shps.push(calGridContour(o, breaks, boua));
|
|
||||||
tms.push(o?.tmRange.tm1);
|
|
||||||
|
|
||||||
if (progress) {
|
|
||||||
await progress(i++);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//console.log("554@@@@shps++++",shps);
|
|
||||||
|
|
||||||
return {
|
|
||||||
shps,
|
|
||||||
index: 0,
|
|
||||||
breaks,
|
|
||||||
type: 'wf24h',
|
|
||||||
tm: data24h?.tmRange.tm1,
|
|
||||||
tms,
|
|
||||||
label: 'z',
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
//时间选择24小时预报
|
|
||||||
export async function calWeatherContourTm24H(progress,type) {
|
|
||||||
const weatherSet = await WeatherSetTm24h(moment().format('YYYYMMDD08'));//type===1?await WeatherSet24h.get():await WeatherSetRightQx.get();
|
|
||||||
const boua = await BouaPromise.get();
|
|
||||||
//console.log("boua 522 ++++",boua);
|
|
||||||
|
|
||||||
if (!weatherSet) {
|
|
||||||
return { msg: '获取天气数据失败' };
|
|
||||||
}
|
|
||||||
if (!boua) {
|
|
||||||
return { msg: '获取边界数据失败' };
|
|
||||||
}
|
|
||||||
|
|
||||||
//console.log(weatherSet);
|
|
||||||
let data24h = weatherSet.find(o => o?.tmRange?.interval === 24);//气象局24小时预报
|
|
||||||
let data1h = weatherSet.filter(o => o?.tmRange?.interval === 1);//预报-雨情-当前及右侧
|
|
||||||
|
|
||||||
data1h = data1h.sort((a, b) => (a?.tmRange.tm1 > b?.tmRange.tm1 ? 1 : -1));
|
|
||||||
|
|
||||||
const breaks = [...config.commonBreaks];
|
|
||||||
|
|
||||||
const shps = [], tms = [];
|
|
||||||
|
|
||||||
shps.push(calGridContour(data24h, breaks, boua));
|
|
||||||
tms.push(data24h?.tmRange.tm1);
|
|
||||||
|
|
||||||
|
|
||||||
//落地雨
|
|
||||||
let currentY = moment().format("Y");
|
|
||||||
let currentH = moment().format("H");
|
|
||||||
let currentM = moment().format("m");
|
|
||||||
let currentD = moment().format("MM-DD");
|
|
||||||
|
|
||||||
let currentT = null;
|
|
||||||
if(Number(currentM)>15){
|
|
||||||
currentT = currentH;
|
|
||||||
}else{
|
|
||||||
currentT = Number(currentH) - 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
let currentTime = currentY+"-"+currentD+" "+currentT+":00";
|
|
||||||
//console.log("currentTime 503#####",currentTime);
|
|
||||||
|
|
||||||
const endDateTime = new Date(currentTime);
|
|
||||||
const startDateTime = new Date(endDateTime.getTime() - 24 * 60 * 60 * 1000);
|
|
||||||
|
|
||||||
const timeArray = [];
|
|
||||||
while (startDateTime.getTime() <= endDateTime.getTime()) {
|
|
||||||
const timeString = startDateTime.toLocaleString('en-US', {
|
|
||||||
year: 'numeric',
|
|
||||||
month: '2-digit',
|
|
||||||
day: '2-digit',
|
|
||||||
hour: 'numeric',
|
|
||||||
minute: 'numeric',
|
|
||||||
});
|
|
||||||
timeArray.push(moment(timeString).format("YYYY-MM-DD HH:mm:ss"));
|
|
||||||
startDateTime.setTime(startDateTime.getTime() + 60 * 60 * 1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
//console.log("521@@@@@@@@",timeArray);
|
|
||||||
const resultArray = [];
|
|
||||||
for (let i = 0; i < timeArray.length - 1; i++) {
|
|
||||||
resultArray.push([timeArray[i], timeArray[i + 1]]);
|
|
||||||
}
|
|
||||||
|
|
||||||
//console.log("527@@@@++++",resultArray);
|
|
||||||
|
|
||||||
/*if(resultArray.length>0){
|
|
||||||
resultArray.map(async(item)=>{
|
|
||||||
let params = {
|
|
||||||
"adcd": "420529",
|
|
||||||
"source": ["SH","SW","SK","QX"],
|
|
||||||
"stm": item[0],
|
|
||||||
"etm": item[1]
|
|
||||||
};
|
|
||||||
let drpReal = [];
|
|
||||||
const resData = await getStPptnRHListApi(params);
|
|
||||||
if(resData.code === 200){
|
|
||||||
drpReal = resData.data;
|
|
||||||
}
|
|
||||||
|
|
||||||
const ldyData = await calRealContourLdy(drpReal,"drp",2);
|
|
||||||
shps.push(ldyData.shp);
|
|
||||||
});
|
|
||||||
}*/
|
|
||||||
console.log("690@@@@",timeArray);
|
|
||||||
let params = {
|
|
||||||
"adcd": "420529",
|
|
||||||
"source": ["SH","SW","SK","QX"],
|
|
||||||
"stm": timeArray[0],
|
|
||||||
"etm": moment(endDateTime).format("YYYY-MM-DD HH:mm:ss")
|
|
||||||
};
|
|
||||||
let drpReal = [];
|
|
||||||
const resData = await getStPptnRHListApi(params);
|
|
||||||
if(resData.code === 200){
|
|
||||||
drpReal = resData.data;
|
|
||||||
//console.log("701+++++",drpReal);
|
|
||||||
const result = [];
|
|
||||||
const groupedData = drpReal.reduce((acc, item) => {
|
|
||||||
const key = item.tm;
|
|
||||||
if (!acc[key]) {
|
|
||||||
acc[key] = [];
|
|
||||||
}
|
|
||||||
acc[key].push(item);
|
|
||||||
return acc;
|
|
||||||
}, {});
|
|
||||||
|
|
||||||
for (const key in groupedData) {
|
|
||||||
result.push(groupedData[key]);
|
|
||||||
}
|
|
||||||
|
|
||||||
//console.log("716+++++@@@@@",result);
|
|
||||||
if(result.length>0){
|
|
||||||
result.map(async(item)=>{
|
|
||||||
const ldyData = await calRealContourLdy(item,"drp");
|
|
||||||
shps.push(ldyData.shp);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let i = 1;
|
|
||||||
if (progress) {
|
|
||||||
await progress(i++);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const o of data1h) {
|
|
||||||
shps.push(calGridContour(o, breaks, boua));
|
|
||||||
tms.push(o?.tmRange.tm1);
|
|
||||||
|
|
||||||
if (progress) {
|
|
||||||
await progress(i++);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//console.log("554@@@@shps++++",shps);
|
|
||||||
|
|
||||||
return {
|
|
||||||
shps,
|
|
||||||
index: 0,
|
|
||||||
breaks,
|
|
||||||
type: 'wf24h',
|
|
||||||
tm: data24h?.tmRange.tm1,
|
|
||||||
tms,
|
|
||||||
label: 'z',
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
////图层弹窗-预报数据-气象局2小时预报?
|
|
||||||
export async function calWeatherContourRadar({myTm}) {
|
|
||||||
|
|
||||||
let weatherData = await WeatherRadar2(myTm);
|
|
||||||
const boua = await BouaPromise.get();
|
|
||||||
|
|
||||||
if (!weatherData) {
|
|
||||||
return { msg: '获取天气数据失败' };
|
|
||||||
}
|
|
||||||
if (!boua) {
|
|
||||||
return { msg: '获取边界数据失败' };
|
|
||||||
}
|
|
||||||
|
|
||||||
const breaks = [...config.commonBreaks];
|
|
||||||
|
|
||||||
const shp = calGridContour(weatherData, breaks, boua);
|
|
||||||
|
|
||||||
return {
|
|
||||||
shp,
|
|
||||||
breaks,
|
|
||||||
type: 'wf2h',
|
|
||||||
tm: weatherData?.tmRange.tm1,
|
|
||||||
label: 'z',
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
{
|
|
||||||
shp | shps , index;
|
|
||||||
breaks,
|
|
||||||
type: fzdx | real | wf24h | wf2h
|
|
||||||
tm:
|
|
||||||
interval for rcmap
|
|
||||||
areaInfo: number or numberMap
|
|
||||||
label: filed
|
|
||||||
}
|
|
||||||
|
|
@ -1,83 +0,0 @@
|
||||||
import { wait } from '../../utils/tools';
|
|
||||||
import appconsts from '../../service/appconsts';
|
|
||||||
import { calRealContour, calFzdxContour } from './calculator';
|
|
||||||
|
|
||||||
function initState() {
|
|
||||||
return {
|
|
||||||
type: 'real', // 'real', 'h24', 'fzdx'
|
|
||||||
|
|
||||||
fzdxList: null,
|
|
||||||
flrvvlgList: null,
|
|
||||||
adList: null,
|
|
||||||
searchType: 'fzdx',
|
|
||||||
|
|
||||||
warnDealingInfoType: appconsts.warnDealingInfo.RAIN_ORANGE,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
const rcview = {
|
|
||||||
state: initState(),
|
|
||||||
reducers: {
|
|
||||||
setType(state, val) {
|
|
||||||
return { ...state, type: val };
|
|
||||||
},
|
|
||||||
setFzdxList(state, val) {
|
|
||||||
return { ...state, fzdxList: val };
|
|
||||||
},
|
|
||||||
setFlrvvlgList(state, val) {
|
|
||||||
return { ...state, flrvvlgList: val };
|
|
||||||
},
|
|
||||||
setAdList(state, val) {
|
|
||||||
return { ...state, adList: val };
|
|
||||||
},
|
|
||||||
clearFzdxResult(state) {
|
|
||||||
return { ...state, fzdxList: null, flrvvlgList: null, adList: null }
|
|
||||||
},
|
|
||||||
setSearchType(state, val) {
|
|
||||||
return { ...state, searchType: val };
|
|
||||||
},
|
|
||||||
setWarnDealingInfoType(state, val) {
|
|
||||||
return { ...state, warnDealingInfoType: val };
|
|
||||||
},
|
|
||||||
|
|
||||||
reset() {
|
|
||||||
return initState();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
effects: dispatch => ({
|
|
||||||
async showRealContour(interval) {
|
|
||||||
//console.log("站点面雨量 实时");
|
|
||||||
//根据传入的数据-面雨量
|
|
||||||
dispatch.runtime.setCalculating(true);
|
|
||||||
|
|
||||||
await wait(100);
|
|
||||||
try {
|
|
||||||
const contour = await calRealContour(interval,1);
|
|
||||||
dispatch.runtime.setLayerSetting({ contour, dem: false });
|
|
||||||
dispatch.map.setLayerVisible({ ContourLayer: true });
|
|
||||||
} finally {
|
|
||||||
dispatch.runtime.setCalculating(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
//dispatch.runtime.setHome();
|
|
||||||
},
|
|
||||||
|
|
||||||
async showFzdxContour({ interval, minValue }) {
|
|
||||||
dispatch.runtime.setCalculating(true);
|
|
||||||
|
|
||||||
await wait(100);
|
|
||||||
try {
|
|
||||||
const contour = await calFzdxContour(interval, minValue);
|
|
||||||
|
|
||||||
dispatch.runtime.setLayerSetting({ contour, dem: false });
|
|
||||||
dispatch.map.setLayerVisible({ ContourLayer: true });
|
|
||||||
} finally {
|
|
||||||
dispatch.runtime.setCalculating(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
dispatch.runtime.setHome();
|
|
||||||
},
|
|
||||||
})
|
|
||||||
};
|
|
||||||
|
|
||||||
export default rcview;
|
|
||||||
|
|
@ -1,129 +0,0 @@
|
||||||
import difference from '@turf/difference';
|
|
||||||
import buffer from '@turf/buffer';
|
|
||||||
import { contours } from 'd3-contour';
|
|
||||||
import { drpShColor, drpColorLevel } from '../../utils/renutils';
|
|
||||||
|
|
||||||
function getGridWH(features) {
|
|
||||||
let x = features[0].geometry.coordinates[0];
|
|
||||||
let w = 1, h = 1;
|
|
||||||
for (; h < features.length; h++) {
|
|
||||||
if (features[h].geometry.coordinates[0] !== x) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
w = features.length / h;
|
|
||||||
if (w !== Math.round(w) || w === 1 || h === 1) {
|
|
||||||
return { w: 0, h: 0 };
|
|
||||||
}
|
|
||||||
return { w, h };
|
|
||||||
}
|
|
||||||
|
|
||||||
function transC(coordinates, x1, y1, dx, dy) {
|
|
||||||
return coordinates.map(polygon => polygon.map(ring => ring.map(([x, y]) => ([x1 + (x - 0.5) * dx, y1 + (y - 0.5) * dy]))));
|
|
||||||
}
|
|
||||||
|
|
||||||
function diffFeatures(features) {
|
|
||||||
let lastGeometry = null;
|
|
||||||
|
|
||||||
const ret = [];
|
|
||||||
for (let i = features.length - 1; i >= 0; i -= 1) {
|
|
||||||
const { geometry } = features[i];
|
|
||||||
if (!geometry.coordinates.length) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
let clippedGeometry = features[i];
|
|
||||||
|
|
||||||
try {
|
|
||||||
let currentSub = lastGeometry;
|
|
||||||
|
|
||||||
try {
|
|
||||||
lastGeometry = clippedGeometry;
|
|
||||||
if (currentSub != null) {
|
|
||||||
clippedGeometry = difference(clippedGeometry, currentSub);
|
|
||||||
}
|
|
||||||
} catch (e) {
|
|
||||||
clippedGeometry = buffer(clippedGeometry, 0);
|
|
||||||
lastGeometry = clippedGeometry;
|
|
||||||
if (currentSub != null) {
|
|
||||||
clippedGeometry = difference(clippedGeometry, currentSub);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (clippedGeometry) {
|
|
||||||
ret.push(clippedGeometry);
|
|
||||||
}
|
|
||||||
} catch (e) {
|
|
||||||
console.log(e);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function isobandsCustomer(grid, breaks) {
|
|
||||||
const gridfeatures = grid.features;
|
|
||||||
const { w, h } = getGridWH(gridfeatures);
|
|
||||||
if (!w || !h) {
|
|
||||||
console.error('w, h error');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const values = new Array(w * h);
|
|
||||||
|
|
||||||
for (let ih = 0; ih < h; ih++) {
|
|
||||||
for (let iw = 0; iw < w; iw++) {
|
|
||||||
values[ih * w + iw] = gridfeatures[iw * h + ih].properties.z;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const [x1, y1] = gridfeatures[0].geometry.coordinates;
|
|
||||||
const dy = gridfeatures[1].geometry.coordinates[1] - y1;
|
|
||||||
const dx = gridfeatures[h].geometry.coordinates[0] - x1;
|
|
||||||
const contour = contours().size([w, h]).thresholds(breaks)(values);
|
|
||||||
const geojson = {
|
|
||||||
"type": "FeatureCollection",
|
|
||||||
"features": contour.map(({ type, value, coordinates }, index) => {
|
|
||||||
if (!coordinates || !coordinates.length || value !== breaks[index] || type !== 'MultiPolygon') {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
type: 'Feature',
|
|
||||||
properties: {
|
|
||||||
z1: value,
|
|
||||||
// fill: drpShColor(value, true, 0.9),
|
|
||||||
fill: drpColorLevel(value),
|
|
||||||
z: `${value}-${breaks[index + 1] || '-'}`
|
|
||||||
},
|
|
||||||
geometry: { type, coordinates: transC(coordinates, x1, y1, dx, dy) }
|
|
||||||
};
|
|
||||||
}).filter(Boolean)
|
|
||||||
};
|
|
||||||
|
|
||||||
geojson.features = diffFeatures(geojson.features);
|
|
||||||
|
|
||||||
return geojson;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
export function isobandsCustomerGridData(w, h, x1, y1, dx, dy, values, breaks) {
|
|
||||||
const contour = contours().size([w, h]).thresholds(breaks)(values);
|
|
||||||
const geojson = {
|
|
||||||
"type": "FeatureCollection",
|
|
||||||
"features": contour.map(({ type, value, coordinates }, index) => {
|
|
||||||
if (!coordinates || !coordinates.length || value !== breaks[index] || type !== 'MultiPolygon') {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
type: 'Feature',
|
|
||||||
properties: {
|
|
||||||
z1: value,
|
|
||||||
fill: drpShColor(value, true),
|
|
||||||
z: `${value}-${breaks[index + 1] || '-'}`
|
|
||||||
},
|
|
||||||
geometry: { type, coordinates: transC(coordinates, x1, y1, dx, dy) }
|
|
||||||
};
|
|
||||||
}).filter(Boolean)
|
|
||||||
};
|
|
||||||
|
|
||||||
geojson.features = diffFeatures(geojson.features);
|
|
||||||
|
|
||||||
return geojson;
|
|
||||||
}
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
{
|
|
||||||
shp | shps , index;
|
|
||||||
}
|
|
||||||
|
|
@ -1,113 +0,0 @@
|
||||||
import { wait } from '../../utils/tools';
|
|
||||||
import { calWeatherContour24H, calWeatherContourRadar, calWeatherContourTm24H } from '../rcview/calculator';
|
|
||||||
|
|
||||||
function initState() {
|
|
||||||
return {
|
|
||||||
overallType: '24h', // 24h, radar
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
const shyjview = {
|
|
||||||
state: initState(),
|
|
||||||
reducers: {
|
|
||||||
setOverallType(state, val) {
|
|
||||||
return { ...state, overallType: val }
|
|
||||||
},
|
|
||||||
reset() {
|
|
||||||
return initState();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
effects: dispatch => ({
|
|
||||||
async showWeather24h(_, state) {
|
|
||||||
/*const progress = (idx) => {
|
|
||||||
dispatch.runtime.setCalculating([idx, 25]);
|
|
||||||
return wait(100);
|
|
||||||
}
|
|
||||||
|
|
||||||
await progress(0);*/
|
|
||||||
|
|
||||||
dispatch.runtime.setCalculating(true);
|
|
||||||
await wait(100);
|
|
||||||
|
|
||||||
try {
|
|
||||||
//const contour = await calWeatherContour24H(progress);
|
|
||||||
// const contour = await calWeatherContour24H(null,1);
|
|
||||||
const contour = await calWeatherContourTm24H(null,1);
|
|
||||||
//console.log("showWeather24h 32++++++++++++++",contour);
|
|
||||||
dispatch.runtime.setLayerSetting({ contour, dem: false });
|
|
||||||
dispatch.map.setLayerVisible({ ContourLayer: true });
|
|
||||||
} finally {
|
|
||||||
dispatch.runtime.setCalculating(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
// dispatch.runtime.setHome();
|
|
||||||
},
|
|
||||||
|
|
||||||
async showWeather24h1(_, state) {
|
|
||||||
const progress = (idx) => {
|
|
||||||
dispatch.runtime.setCalculating([idx, 25]);
|
|
||||||
return wait(100);
|
|
||||||
}
|
|
||||||
|
|
||||||
await progress(0);
|
|
||||||
|
|
||||||
dispatch.runtime.setCalculating(true);
|
|
||||||
await wait(100);
|
|
||||||
|
|
||||||
try {
|
|
||||||
const contour = await calWeatherContour24H(progress,2);
|
|
||||||
//console.log("showWeather24h 32++++++++++++++",contour);
|
|
||||||
dispatch.runtime.setLayerSettingLoop({ contour, dem: false });
|
|
||||||
//dispatch.map.setLayerVisible({ ContourLayerLoop: true });
|
|
||||||
} finally {
|
|
||||||
dispatch.runtime.setCalculatingLoop(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
// dispatch.runtime.setHome();
|
|
||||||
},
|
|
||||||
|
|
||||||
//24h面雨量逐时间
|
|
||||||
async showWeather24h1h({myTm}) {
|
|
||||||
const progress = (idx) => {
|
|
||||||
dispatch.runtime.setCalculating([idx, 24]);
|
|
||||||
return wait(100);
|
|
||||||
}
|
|
||||||
|
|
||||||
await progress(0);
|
|
||||||
|
|
||||||
dispatch.runtime.setCalculating(true);
|
|
||||||
await wait(100);
|
|
||||||
|
|
||||||
try {
|
|
||||||
const contour = await calWeatherContour24H(progress,2,myTm);
|
|
||||||
//console.log("showWeather24h 32++++++++++++++",contour);
|
|
||||||
dispatch.runtime.setLayerSettingLoop({ contour, dem: false });
|
|
||||||
//dispatch.map.setLayerVisible({ ContourLayerLoop: true });
|
|
||||||
} finally {
|
|
||||||
dispatch.runtime.setCalculatingLoop(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
// dispatch.runtime.setHome();
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
async showWeatherRadar({myTm}, state) {
|
|
||||||
|
|
||||||
dispatch.runtime.setCalculating(true);
|
|
||||||
await wait(100);
|
|
||||||
try {
|
|
||||||
const contour = await calWeatherContourRadar({myTm});
|
|
||||||
//console.log("showWeatherRadar 47+++++",contour);
|
|
||||||
dispatch.runtime.setLayerSetting({ contour, dem: false });
|
|
||||||
dispatch.map.setLayerVisible({ ContourLayer: true });
|
|
||||||
} finally {
|
|
||||||
dispatch.runtime.setCalculating(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// dispatch.runtime.setHome();
|
|
||||||
}
|
|
||||||
})
|
|
||||||
};
|
|
||||||
|
|
||||||
export default shyjview;
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
import { httppost1, httppost2, httpget } from "../../utils/request";
|
|
||||||
import { message } from 'antd';
|
|
||||||
import apiurl from '../apiurl';
|
|
||||||
|
|
||||||
|
|
||||||
//图像监控汇总
|
|
||||||
export async function txPage(params = {}) {
|
|
||||||
const myParams = {
|
|
||||||
countycode: localStorage.getItem('ADCD6'),
|
|
||||||
...params
|
|
||||||
}
|
|
||||||
|
|
||||||
const { data, code, msg } = await httppost2(apiurl.imageSummary.page, myParams) || {};
|
|
||||||
|
|
||||||
if (code !== 200) {
|
|
||||||
message.error(msg || '请求失败');
|
|
||||||
return { list: [], totalRow: 0 };
|
|
||||||
}
|
|
||||||
console.log(data);
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -1,38 +0,0 @@
|
||||||
import { httppost1, httppost2, httpget } from "../../utils/request";
|
|
||||||
import { message } from 'antd';
|
|
||||||
import apiurl from '../apiurl';
|
|
||||||
|
|
||||||
//预报-雨情-站点雨量-汇总雨情
|
|
||||||
export async function page(params = {}) {
|
|
||||||
const myParams = {
|
|
||||||
countycode:localStorage.getItem('ADCD6'),
|
|
||||||
...params
|
|
||||||
}
|
|
||||||
|
|
||||||
const { data, code, msg } = await httppost2(apiurl.rainfall.summaryRain, myParams) || {};
|
|
||||||
|
|
||||||
if (code !== 200) {
|
|
||||||
message.error(msg || '请求失败');
|
|
||||||
return { list: [], totalRow: 0 };
|
|
||||||
}
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
|
|
||||||
//预报-雨情-小流域面雨量
|
|
||||||
export async function queryCountycodeBasinAreaRainfallApi(params = {}) {
|
|
||||||
const myParams = {
|
|
||||||
adcd:localStorage.getItem('ADCD6'),
|
|
||||||
...params
|
|
||||||
};
|
|
||||||
|
|
||||||
const res = await httppost2(apiurl.rainfall.queryCountycodeBasinAreaRainfall,myParams) || {};
|
|
||||||
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
//预报-雨情 小时雨量-落地雨
|
|
||||||
export async function getStPptnRHListApi(params = {}) {
|
|
||||||
const res = await httppost2(apiurl.rainfall.getStPptnRHList,params) || {};
|
|
||||||
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
@ -1,48 +0,0 @@
|
||||||
import { httppost1, httppost2, httpget } from "../../utils/request";
|
|
||||||
import { message } from 'antd';
|
|
||||||
import apiurl from '../apiurl';
|
|
||||||
import appconsts from '../../service/appconsts';
|
|
||||||
|
|
||||||
//汇总河道水情
|
|
||||||
export async function hdPage(params = {}) {
|
|
||||||
const myParams = {
|
|
||||||
countycode:localStorage.getItem('ADCD6'),
|
|
||||||
...params
|
|
||||||
}
|
|
||||||
|
|
||||||
const { data, code, msg } = await httppost2(apiurl.waterSituation.riverWaterRegime, myParams) || {};
|
|
||||||
|
|
||||||
if (code !== 200) {
|
|
||||||
message.error(msg || '请求失败');
|
|
||||||
return { list: [], totalRow: 0 };
|
|
||||||
}
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
|
|
||||||
//汇总水库水情
|
|
||||||
export async function skPage(params = {}) {
|
|
||||||
const myParams = {
|
|
||||||
countycode:localStorage.getItem('ADCD6'),
|
|
||||||
...params
|
|
||||||
}
|
|
||||||
|
|
||||||
const { data, code, msg } = await httppost2(apiurl.waterSituation.reservoirWaterRegime, myParams) || {};
|
|
||||||
|
|
||||||
if (code !== 200) {
|
|
||||||
message.error(msg || '请求失败');
|
|
||||||
return { list: [], totalRow: 0 };
|
|
||||||
}
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
|
|
||||||
//小流域列表查询
|
|
||||||
//汇总水库水情
|
|
||||||
export async function getWaterList(params = {}) {
|
|
||||||
const myParams = {
|
|
||||||
adcd:localStorage.getItem('ADCD6'),
|
|
||||||
...params
|
|
||||||
}
|
|
||||||
const { data } = await httppost2(apiurl.getWaterList, myParams) || {};
|
|
||||||
console.log(data);
|
|
||||||
return data || [];
|
|
||||||
}
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
import { httppost1, httppost2, httpget } from "../../utils/request";
|
|
||||||
import { message } from 'antd';
|
|
||||||
import apiurl from '../apiurl';
|
|
||||||
import appconsts from '../../service/appconsts';
|
|
||||||
|
|
||||||
//预报预警 弹窗页的通讯录
|
|
||||||
export async function getAddressBookApi(adcd) {
|
|
||||||
const { data, code, msg } = await httppost1(apiurl.ybyj.getAddressBook, { adcd }) || {};
|
|
||||||
|
|
||||||
return { data, code, msg };
|
|
||||||
}
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
import { httppost1, httppost2, httpget } from "../../utils/request";
|
|
||||||
import { message } from 'antd';
|
|
||||||
import apiurl from '../apiurl';
|
|
||||||
import appconsts from '../../service/appconsts';
|
|
||||||
|
|
||||||
//预警-监测预警-雨量、水位监测预警
|
|
||||||
export async function getDataListApi(params = {}) {
|
|
||||||
const myParams = {
|
|
||||||
countycode:localStorage.getItem('ADCD6') + '000000',
|
|
||||||
...params
|
|
||||||
}
|
|
||||||
|
|
||||||
const res = await httppost2(apiurl.shyj.find, myParams) || {};
|
|
||||||
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue