This commit is contained in:
baol 2023-11-06 11:28:18 +08:00
parent 6941547024
commit 3bc6533da0
22 changed files with 88 additions and 52 deletions

View File

@ -1,3 +1,5 @@
@import "@/var.less";
.textInfoPanel :global { .textInfoPanel :global {
width: 100%; width: 100%;
height: 100%; height: 100%;
@ -5,7 +7,7 @@
color: white !important; color: white !important;
background-color: #000000e7; background-color: #000000e7;
pointer-events: auto; pointer-events: auto;
font-size: 22px; font-size: @font-32;
text-indent: 2em; text-indent: 2em;
line-height: 1.5; line-height: 1.5;
z-index: 999; z-index: 999;

View File

@ -39,7 +39,7 @@ function CustomChartPanel() {
}, },
legend: { legend: {
data: ["拉布拉多海夏季海温(异常值)", "高原夏季气温(异常值)"], data: ["拉布拉多海夏季海温(异常值)", "高原夏季气温(异常值)"],
textStyle: { color: "#04fbfd", cursor: "point", fontSize: 20 }, textStyle: { color: "#04fbfd", cursor: "point", fontSize: 22 },
}, },
grid: { grid: {
left: "3%", left: "3%",
@ -61,12 +61,16 @@ function CustomChartPanel() {
}, },
}, },
axisLabel: { axisLabel: {
interval: 4, interval: 9,
fontSize: 22,
}, },
}, },
yAxis: { yAxis: {
type: "value", type: "value",
name: "℃", name: "℃",
nameTextStyle: {
fontSize: 22,
},
min: -1.5, min: -1.5,
max: 2.0, max: 2.0,
interval: 0.5, interval: 0.5,
@ -83,6 +87,7 @@ function CustomChartPanel() {
}, },
axisLabel: { axisLabel: {
show: true, show: true,
fontSize: 22,
}, },
axisTick: { show: true }, axisTick: { show: true },
scale: true, scale: true,
@ -100,6 +105,9 @@ function CustomChartPanel() {
itemStyle: { itemStyle: {
color: "red", color: "red",
}, },
lineStyle: {
width: 4, //线
},
animationDelay: 5 * 1000, animationDelay: 5 * 1000,
animationDuration: 30 * 1000, animationDuration: 30 * 1000,
animationEasing: "cubicInOut", animationEasing: "cubicInOut",
@ -115,8 +123,8 @@ function CustomChartPanel() {
color: plateauColor, color: plateauColor,
}, },
lineStyle: { lineStyle: {
type: "dashed", type: "solid",
width: 2, width: 4,
}, },
animationDelay: 25 * 1000, animationDelay: 25 * 1000,
animationDuration: 10 * 1000, animationDuration: 10 * 1000,

View File

@ -5,7 +5,7 @@ import waterwapor from "@/assets/waterwapor.png";
function EntityLegend() { function EntityLegend() {
return ( return (
<div className="entity-legend" style={{ bottom: 116 }}> <div className="entity-legend" style={{ bottom: 129 }}>
<div className="entity-legend-item"> <div className="entity-legend-item">
<div style={{ fontWeight: 800, color: "#04fafc" }}>- - - -</div> <div style={{ fontWeight: 800, color: "#04fafc" }}>- - - -</div>
<div className="entity-legend-item-name">Rossby 波列传播路径</div> <div className="entity-legend-item-name">Rossby 波列传播路径</div>

View File

@ -16,8 +16,8 @@ export default function LabelEntity({ showTime, text, position }) {
}, [replayVersion]); }, [replayVersion]);
const [font, { toggle: fontToggle }] = useToggle( const [font, { toggle: fontToggle }] = useToggle(
"24px Helvetica", "bold 32px Helvetica",
"bold 32px Helvetica" "24px Helvetica"
); );
const [fillColor, { toggle: colorToggle }] = useToggle( const [fillColor, { toggle: colorToggle }] = useToggle(
Color.fromCssColorString("#04fbfd").withAlpha(0.9), Color.fromCssColorString("#04fbfd").withAlpha(0.9),

View File

@ -27,7 +27,7 @@ export default function DomainOne() {
<CustomFlyTo /> <CustomFlyTo />
<Point /> <Point />
<div className="left-panel one"> <div className="left-panel one">
<TextInfoPanel content="基于再分析资料JRA55和线性斜压模式LBM的试验结果拉布拉多海海温偏暖会引起北大西洋至欧洲地区大气环流异常,导致青藏高原夏季出现年代际增温。该成果加深了对中纬度地区最高地形与北极之间冰冻圈联系的认识。" /> <TextInfoPanel content="基于再分析资料JRA55和线性斜压模式LBM的试验结果发现拉布拉多海海温偏暖会引起北大西洋至欧洲地区大气环流异常,导致青藏高原夏季出现年代际增温。该成果加深了对中纬度地区最高地形与北极之间冰冻圈联系的认识。" />
</div> </div>
<div className="right-panel one"> <div className="right-panel one">
<CustomChartPanel /> <CustomChartPanel />

View File

@ -86,7 +86,7 @@ function CustomChartPanel() {
}, },
legend: { legend: {
data: ["南极", "北极", "青藏高原"], data: ["南极", "北极", "青藏高原"],
textStyle: { color: "#04fbfd", cursor: "point", fontSize: 20 }, textStyle: { color: "#04fbfd", cursor: "point", fontSize: 24 },
}, },
animationDuration: 10 * 1000, animationDuration: 10 * 1000,
animationEasing: "cubicInOut", animationEasing: "cubicInOut",
@ -115,16 +115,21 @@ function CustomChartPanel() {
}, },
}, },
axisLabel: { axisLabel: {
interval: 4, interval: 10,
fontSize: 24,
}, },
}, },
yAxis: { yAxis: {
type: "value", type: "value",
name: "℃",
min: -1, min: -1,
max: 1, max: 1,
interval: 0.5, interval: 0.5,
splitNumber: 5, splitNumber: 5,
splitLine: { show: false }, splitLine: { show: false },
nameTextStyle: {
fontSize: 24,
},
axisLine: { axisLine: {
onZero: false, onZero: false,
show: true, show: true,
@ -136,6 +141,7 @@ function CustomChartPanel() {
}, },
axisLabel: { axisLabel: {
show: true, show: true,
fontSize: 24,
}, },
axisTick: { show: true }, axisTick: { show: true },
scale: true, scale: true,
@ -153,6 +159,9 @@ function CustomChartPanel() {
itemStyle: { itemStyle: {
color: "red", color: "red",
}, },
lineStyle: {
width: 4,
},
}, },
{ {
name: "南极", name: "南极",
@ -165,6 +174,9 @@ function CustomChartPanel() {
itemStyle: { itemStyle: {
color: "blue", color: "blue",
}, },
lineStyle: {
width: 4,
},
}, },
{ {
name: "青藏高原", name: "青藏高原",
@ -177,6 +189,9 @@ function CustomChartPanel() {
itemStyle: { itemStyle: {
color: "green", color: "green",
}, },
lineStyle: {
width: 4,
},
}, },
], ],
}; };

View File

@ -0,0 +1,6 @@
import styles from "./index.module.less";
export default function TextLabel() {
return (
<div className={styles.textLabel}>南北极之间温度变化存在跷跷板现象</div>
);
}

View File

@ -4,7 +4,7 @@ import { WebMapServiceImageryProvider } from "cesium";
const url = "http://analysis.tpdc.ac.cn/gs/geoserver/phitrellis/wms"; const url = "http://analysis.tpdc.ac.cn/gs/geoserver/phitrellis/wms";
function LandImageLayer({ name }) { function LandImageLayer({ name, opacity=1.0 }) {
const tempProvider = useMemo( const tempProvider = useMemo(
() => () =>
new WebMapServiceImageryProvider({ new WebMapServiceImageryProvider({
@ -23,7 +23,7 @@ function LandImageLayer({ name }) {
key={`ImageryLayer-${name}`} key={`ImageryLayer-${name}`}
imageryProvider={tempProvider} imageryProvider={tempProvider}
show={true} show={true}
alpha={0.5} alpha={opacity}
/> />
); );
} }

View File

@ -21,7 +21,7 @@ function ViewerOne({ children }) {
/> />
<WavePoint stationLon={88} stationLat={-85} labelText={"南极"} /> <WavePoint stationLon={88} stationLat={-85} labelText={"南极"} />
<ViewerImageLayer name="4_3_1_Antarctic1" /> <ViewerImageLayer name="4_3_1_tas_Layer1" />
{children} {children}
</MapLayout> </MapLayout>
</div> </div>

View File

@ -8,7 +8,7 @@ function ViewerTwo({ children }) {
return ( return (
<div className="domain-viewer"> <div className="domain-viewer">
<MapLayout> <MapLayout>
<ViewerImageLayer name="4_3_1_Arctic3" /> <ViewerImageLayer name="4_3_1_tas_Layer1" />
<CameraFlyTo <CameraFlyTo
duration={5} duration={5}
destination={Cartesian3.fromDegrees(0, 88, 10000000)} destination={Cartesian3.fromDegrees(0, 88, 10000000)}

View File

@ -4,6 +4,7 @@ import Legend from "./Legend";
import ViewerOne from "./ViewerOne"; import ViewerOne from "./ViewerOne";
import ViewerTwo from "./ViewerTwo"; import ViewerTwo from "./ViewerTwo";
import ViewerThree from "./ViewerThree"; import ViewerThree from "./ViewerThree";
import TextLabel from "./TextLabel";
import styles from "./index.module.less"; import styles from "./index.module.less";
function SceneOne() { function SceneOne() {
@ -12,17 +13,14 @@ function SceneOne() {
<div className="domain-viewers"> <div className="domain-viewers">
<ViewerOne /> <ViewerOne />
<ViewerTwo /> <ViewerTwo />
<ViewerThree />
</div> </div>
<div className="domain-info"> <div className="domain-info">
<div className="left-panel">
<TextInfoPanel content="利用GISTEMP资料通过EEMD分解方法提取两极温度多年代际变化序列发现南北极温度变化的跷跷板现象与大西洋多年代际振荡AMO紧密相关。而AMO与热带大西洋经向模AMM在年代际尺度上显著相关。ERA5再分析资料显示AMM可以通过Rossby波影响西南极的气温与海冰偶极子。因此AMM可能在联系南北极气候变化的中起到了重要的媒介作用。" />
</div>
<div className="right-panel"> <div className="right-panel">
<CustomChartPanel /> <CustomChartPanel />
</div> </div>
</div> </div>
<Legend /> <Legend />
<TextLabel />
</div> </div>
); );
} }

View File

@ -1,3 +1,5 @@
@import "@/var.less";
.sceneOne :global { .sceneOne :global {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@ -106,6 +108,7 @@
.legend-title { .legend-title {
color: #04fbfd; color: #04fbfd;
font-size: @font-32;
} }
.colorbar { .colorbar {
@ -134,9 +137,18 @@
.legend-text-item { .legend-text-item {
flex: 1; flex: 1;
text-align: right; text-align: right;
font-weight: 600;
color: white; color: white;
-webkit-text-stroke: #04fbfd 1px; -webkit-text-stroke: #04fbfd 1px;
} }
} }
} }
.textLabel :global {
position: absolute;
bottom: calc(50% + 132px);
width: 50%;
left: 25%;
text-align: center;
color: #04fbfd;
font-size: @font-32;
}

View File

@ -7,6 +7,7 @@ import Circles from "./Circles";
import CustomChartPanel from "./CustomChartPanel"; import CustomChartPanel from "./CustomChartPanel";
import Labels from "./Labels"; import Labels from "./Labels";
import ReplayButton from "./ReplayButton"; import ReplayButton from "./ReplayButton";
import ViewerImageLayer from "../SceneOne/ViewerImageLayer";
function SceneTwo() { function SceneTwo() {
return ( return (
@ -25,6 +26,9 @@ function SceneTwo() {
<Labels /> <Labels />
<Legend /> <Legend />
<HGTImageLayer /> <HGTImageLayer />
<ViewerImageLayer name="4_3_1_Antarctic1" opacity={0.5} />
<ViewerImageLayer name="4_3_1_Arctic3" opacity={0.5} />
<ViewerImageLayer name="4_3_1_Atlantic2" opacity={0.5} />
<Point /> <Point />
<ReplayButton /> <ReplayButton />
</MapLayout> </MapLayout>

View File

@ -89,17 +89,6 @@ function Circles() {
> >
{circle} {circle}
</Entity> </Entity>
<Entity position={Cartesian3.fromDegrees(lon, lat, 0)}>
<LabelGraphics
text={"Rossby波列"}
font="24px Helvetica"
fillColor={Color.fromCssColorString("#04fbfd")}
outlineColor={Color.BLACK}
outlineWidth={2}
style={LabelStyle.FILL_AND_OUTLINE}
eyeOffset={new Cartesian2(0, 1000000)}
/>
</Entity>
</Fragment> </Fragment>
); );
}; };

View File

@ -6,7 +6,7 @@ import moisture from "@/assets/moisture.png";
function EntityLegend() { function EntityLegend() {
return ( return (
<div className="entity-legend" style={{ bottom: 116 }}> <div className="entity-legend" style={{ bottom: 128 }}>
<div className="entity-legend-item"> <div className="entity-legend-item">
<div style={{ transform: "rotate(45deg)" }}> <div style={{ transform: "rotate(45deg)" }}>
<img src={low} alt="low" width={32} /> <img src={low} alt="low" width={32} />

View File

@ -18,7 +18,7 @@ export default function HadleyCell() {
stopTime.secondsOfDay - currentTime.secondsOfDay stopTime.secondsOfDay - currentTime.secondsOfDay
); );
if (leftTime < 3) { if (leftTime < 5) {
setShow(true); setShow(true);
} else if (show) setShow(false); } else if (show) setShow(false);
}, [show]); }, [show]);

View File

@ -16,8 +16,8 @@ export default function LabelEntity({ showTime, text, position }) {
}, [replayVersion]); }, [replayVersion]);
const [font, { toggle: fontToggle }] = useToggle( const [font, { toggle: fontToggle }] = useToggle(
"24px Helvetica", "bold 32px Helvetica",
"bold 32px Helvetica" "24px Helvetica"
); );
const [fillColor, { toggle: colorToggle }] = useToggle( const [fillColor, { toggle: colorToggle }] = useToggle(
Color.fromCssColorString("#04fbfd").withAlpha(0.9), Color.fromCssColorString("#04fbfd").withAlpha(0.9),

View File

@ -21,7 +21,7 @@ export default function Labels() {
position={Cartesian3.fromDegrees(73, -7, 0)} position={Cartesian3.fromDegrees(73, -7, 0)}
/> />
<LabelEntity <LabelEntity
showTime={27} showTime={26}
text={"局地环流异常"} text={"局地环流异常"}
position={Cartesian3.fromDegrees(84, 15, 0)} position={Cartesian3.fromDegrees(84, 15, 0)}
/> />

View File

@ -1,6 +1,7 @@
@import "@/var.less";
.siteLegend :global { .siteLegend :global {
position: absolute; position: absolute;
width: 230px; width: 260px;
height: 300px; height: 300px;
right: 12px; right: 12px;
bottom: 14px; bottom: 14px;
@ -18,8 +19,7 @@
gap: 8px; gap: 8px;
.site-legend-item-name { .site-legend-item-name {
font-size: 20px; font-size: @font-32;
font-weight: 700;
flex: 1; flex: 1;
} }
} }

View File

@ -2,11 +2,11 @@ import { Fragment } from "react";
import { Dropdown } from "antd"; import { Dropdown } from "antd";
import NavBarButton from "./NavBarButton"; import NavBarButton from "./NavBarButton";
import funcLibrary from "@/assets/方法库.png"; import funcLibrary from "@/assets/方法库.png";
// import funcLibrary from "@/assets/2.png"; import onlineDecisionSupport from "@/assets/方法库2.png";
import threePoles from "@/assets/三极联动.png"; import threePoles from "@/assets/三极联动.png";
import dataShare from "@/assets/数据共享.jpg"; import dataShare from "@/assets/数据共享.jpg";
import onlineDecisionSupport from "@/assets/在线决策支持.png"; // import onlineDecisionSupport from "@/assets/线.png";
// import onlineDecisionSupport from "@/assets/线2.png"; // import funcLibrary from "@/assets/线2.png";
import styles from "./index.module.less"; import styles from "./index.module.less";
const itemsTwo = [ const itemsTwo = [
@ -18,7 +18,7 @@ const itemsTwo = [
rel="noopener noreferrer" rel="noopener noreferrer"
href="http://casearthpoles.tpdc.ac.cn/zh-hans/data/analyze/list" href="http://casearthpoles.tpdc.ac.cn/zh-hans/data/analyze/list"
> >
简介 方法库在线集成与共享
</a> </a>
), ),
}, },
@ -26,7 +26,7 @@ const itemsTwo = [
key: "2", key: "2",
label: ( label: (
<a target="_blank" rel="noopener noreferrer" href="/random_forest"> <a target="_blank" rel="noopener noreferrer" href="/random_forest">
随机森林方法在线计算案例 随机森林算法融合多源雪深数据产品
</a> </a>
), ),
}, },
@ -38,7 +38,7 @@ const itemsTwo = [
rel="noopener noreferrer" rel="noopener noreferrer"
href="/show/map/climateReconDataAssim" href="/show/map/climateReconDataAssim"
> >
过去千年气候重建数据同化 过去千年气候重建
</a> </a>
), ),
}, },

View File

@ -1,3 +1,5 @@
@import "@/var.less";
.cesiumContainer :global { .cesiumContainer :global {
pointer-events: auto; pointer-events: auto;
@ -114,8 +116,8 @@
.entity-legend { .entity-legend {
position: absolute; position: absolute;
bottom: 140px; bottom: 140px;
width: 960px; width: calc(100% - 948px);
left: 25%; left: 474px;
display: grid; display: grid;
grid-template-columns: repeat(3, 1fr); grid-template-columns: repeat(3, 1fr);
grid-gap: 10px; grid-gap: 10px;
@ -132,7 +134,7 @@
gap: 8px; gap: 8px;
.entity-legend-item-name { .entity-legend-item-name {
font-weight: 700; font-size: @font-32;
} }
} }
} }
@ -140,8 +142,8 @@
.legend { .legend {
position: absolute; position: absolute;
bottom: 12px; bottom: 12px;
width: 960px; width: calc(100% - 948px);
left: 25%; left: 474px;
// height: 40px; // height: 40px;
display: flex; display: flex;
@ -155,8 +157,7 @@
.legend-title { .legend-title {
color: #fff; color: #fff;
font-size: 20px; font-size: @font-32;
font-weight: 600;
} }
.colorbar { .colorbar {

1
src/var.less Normal file
View File

@ -0,0 +1 @@
@font-32: 24px;