Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
iCity
EnergyDashboard
Commits
dd0fbc6d
Commit
dd0fbc6d
authored
Jul 16, 2021
by
Sven Schneider
Browse files
continued but not finished working on getting data from several buildings
parent
01d1be71
Changes
1
Hide whitespace changes
Inline
Side-by-side
public/js/appCesium.js
View file @
dd0fbc6d
"
use strict
"
;
// Functions
import
{
aggregateResponse
,
...
...
@@ -29,6 +30,7 @@ import {
}
from
"
./appChart.js
"
;
var
ALLDATA
=
[];
var
bld
=
0
;
Cesium
.
Ion
.
defaultAccessToken
=
"
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIyODgxYzJlNi1kNDZiLTQ3ZmQtYmUxYy0yMWI0OGM3NDA5MzAiLCJpZCI6NDczOSwic2NvcGVzIjpbImFzciIsImdjIl0sImlhdCI6MTU0MTUyMzU0MX0.shj2hM3pvsvcmE_wMb2aBDuk_cKWmFmbolltInGImwU
"
;
...
...
@@ -251,6 +253,8 @@ const activate3DTileFeaturePicking = function() {
selected
.
feature
.
color
=
selected
.
originalColor
;
selected
.
feature
=
undefined
;
}
ALLDATA
=
[];
cnt
=
0
;
// Pick a new feature
const
pickedFeature
=
viewer
.
scene
.
pick
(
movement
.
position
);
if
(
!
Cesium
.
defined
(
pickedFeature
))
{
...
...
@@ -324,7 +328,8 @@ const activate3DTileFeaturePicking = function() {
const
BUILDING_STREAM_ID
=
[
75
,
76
,
77
,
78
,
79
,
80
];
const
BUILDING_ID
=
[
"
101
"
,
"
102
"
,
"
107
"
,
"
112, 118
"
,
"
125
"
,
"
225
"
];
// ALLDATA = [];
var
bld
=
0
;
var
cnt
=
0
;
for
(
bld
=
0
;
bld
<
BUILDING_STREAM_ID
.
length
;
bld
++
)
{
...
...
@@ -353,9 +358,9 @@ const activate3DTileFeaturePicking = function() {
combinedObservations
.
push
(...
dataArrays
);
});
// DEBUG: Check total number of observations
console
.
log
(
combinedObservations
.
length
);
//
console.log(combinedObservations.length);
// DEBUG: Print the array of observations
console
.
log
(
combinedObservations
);
//
console.log(combinedObservations);
return
combinedObservations
;
})
...
...
@@ -366,31 +371,34 @@ const activate3DTileFeaturePicking = function() {
.
then
((
observationArr
)
=>
{
var
agg
=
aggregateResponse
(
observationArr
,
0
,
'
mean
'
);
var
tmpObj
=
{
id
:
BUILDING_ID
[
bld
],
streamID
:
BUILDING_STREAM_ID
[
bld
],
BldID
:
BUILDING_ID
[
cnt
],
streamID
:
BUILDING_STREAM_ID
[
cnt
],
timestamp
:
agg
.
aggDates
,
data
:
agg
.
aggVals
,
};
ALLDATA
.
push
(
tmpObj
);
// console.log(agg);
drawHeatMapHC
(
formatSTAResponseForHeatMap
(
agg
.
originalFormat
));
drawLineChartHC
(
formatSTAResponseForLineChart
(
agg
.
originalFormat
));
console
.
log
(
ALLDATA
.
length
);
var
selectedDate
=
document
.
getElementById
(
"
DateSelected
"
).
innerHTML
;
var
date
=
new
Date
(
Date
.
parse
(
switchDayMonth_inDate
(
selectedDate
)
)
);
if
(
ALLDATA
.
length
==
6
)
{
var
selectedDate
=
document
.
getElementById
(
"
DateSelected
"
).
innerHTML
;
var
p
=
whereIsDateInArray
(
ALLDATA
[
0
].
timestamp
,
date
);
if
(
p
==
-
1
)
console
.
log
(
'
date not found in date array
'
);
else
console
.
log
(
'
date found at position
'
+
p
);
var
date
=
new
Date
(
Date
.
parse
(
switchDayMonth_inDate
(
selectedDate
)
)
);
console
.
log
(
date
);
var
p
=
whereIsDateInArray
(
ALLDATA
[
0
].
timestamp
,
date
);
const
DATA
=
getDataForAllBuildingsPerDate
(
p
);
colorBlds
(
DATA
);
console
.
log
(
date
);
}
console
.
log
(
ALLDATA
.
length
);
cnt
++
// alert('waiting...');
});
...
...
@@ -399,8 +407,135 @@ const activate3DTileFeaturePicking = function() {
}
},
Cesium
.
ScreenSpaceEventType
.
LEFT_CLICK
);
};
activate3DTileFeaturePicking
();
\ No newline at end of file
activate3DTileFeaturePicking
();
function
goon
(
ALLDATA
)
{
if
(
ALLDATA
.
length
>
0
)
{
var
selectedDate
=
document
.
getElementById
(
"
DateSelected
"
).
innerHTML
;
var
date
=
new
Date
(
Date
.
parse
(
switchDayMonth_inDate
(
selectedDate
)
)
);
var
p
=
whereIsDateInArray
(
ALLDATA
[
0
].
timestamp
,
date
);
const
DATA
=
getDataForAllBuildingsPerDate
(
p
);
colorBlds
(
DATA
);
console
.
log
(
date
);
}
}
// /**
// *
// * @param {Number} datePos
// */
export
const
getDataForAllBuildingsPerDate
=
function
(
datePos
)
{
var
dataObjPerBld
=
[];
var
dataArray
=
[];
for
(
var
i
=
0
;
i
<
ALLDATA
.
length
;
i
++
)
{
var
tmp
=
{
BldId
:
ALLDATA
[
i
].
BldID
,
dateVal
:
ALLDATA
[
i
].
timestamp
[
datePos
],
dataVal
:
ALLDATA
[
i
].
data
[
datePos
]
};
dataArray
.
push
(
tmp
.
dataVal
);
dataObjPerBld
.
push
(
tmp
);
}
return
{
dataPerBld
:
dataObjPerBld
,
dataArray
:
dataArray
};
}
export
const
colorBlds
=
function
(
bldInfo
)
{
// see: https://github.com/PimpTrizkit/PJs/wiki/12.-Shade,-Blend-and-Convert-a-Web-Color-(pSBC.js)
const
RGB_Linear_Blend
=
(
p
,
c0
,
c1
)
=>
{
var
i
=
parseInt
,
r
=
Math
.
round
,
P
=
1
-
p
,
[
a
,
b
,
c
,
d
]
=
c0
.
split
(
"
,
"
),
[
e
,
f
,
g
,
h
]
=
c1
.
split
(
"
,
"
),
x
=
d
||
h
,
j
=
x
?
"
,
"
+
(
!
d
?
h
:
!
h
?
d
:
r
((
parseFloat
(
d
)
*
P
+
parseFloat
(
h
)
*
p
)
*
1000
)
/
1000
+
"
)
"
)
:
"
)
"
;
return
"
rgb
"
+
(
x
?
"
a(
"
:
"
(
"
)
+
r
(
i
(
a
[
3
]
==
"
a
"
?
a
.
slice
(
5
)
:
a
.
slice
(
4
))
*
P
+
i
(
e
[
3
]
==
"
a
"
?
e
.
slice
(
5
)
:
e
.
slice
(
4
))
*
p
)
+
"
,
"
+
r
(
i
(
b
)
*
P
+
i
(
f
)
*
p
)
+
"
,
"
+
r
(
i
(
c
)
*
P
+
i
(
g
)
*
p
)
+
d
;
}
// get the gradient colors between the two defined colors;
const
c1
=
"
rgb(255,64,0)
"
;
const
c2
=
"
rgb(63,131,163)
"
;
var
L
=
bldInfo
.
dataArray
.
length
;
var
offset
=
1
/
(
L
-
1
);
var
colorsForBld
=
[];
var
p
=
0
;
for
(
var
i
=
0
;
i
<
L
;
i
++
)
{
var
cnew
=
RGB_Linear_Blend
(
p
,
c1
,
c2
);
cnew
=
cnew
.
replace
(
'
undefined
'
,
'
)
'
);
colorsForBld
.
push
(
cnew
);
p
+=
offset
;
console
.
log
(
p
);
}
var
numbers
=
bldInfo
.
dataArray
,
ma
=
numbers
.
reduce
(
function
(
a
,
b
)
{
return
Math
.
max
(
a
,
b
);
}),
mi
=
numbers
.
reduce
(
function
(
a
,
b
)
{
return
Math
.
min
(
a
,
b
);
}),
dif
=
ma
-
mi
,
l
=
numbers
.
length
,
i
;
for
(
i
=
0
;
i
<
l
;
i
++
)
{
numbers
[
i
]
=
(
numbers
[
i
]
-
mi
)
/
dif
;
}
function
sortWithIndeces
(
toSort
)
{
for
(
var
i
=
0
;
i
<
toSort
.
length
;
i
++
)
{
toSort
[
i
]
=
[
toSort
[
i
],
i
];
}
toSort
.
sort
(
function
(
left
,
right
)
{
return
left
[
0
]
<
right
[
0
]
?
-
1
:
1
;
});
toSort
.
sortIndices
=
[];
for
(
var
j
=
0
;
j
<
toSort
.
length
;
j
++
)
{
toSort
.
sortIndices
.
push
(
toSort
[
j
][
1
]);
toSort
[
j
]
=
toSort
[
j
][
0
];
}
return
toSort
;
}
sortWithIndeces
(
numbers
);
// alert(numbers.sortIndices.join(","));
var
sortedIndices
=
numbers
.
sortIndices
;
// convert object to array
var
i
=
0
,
arr
=
[];
for
(
var
ob
in
inputObj
)
arr
[
i
++
]
=
ob
;
// numbers = (6)[0.37684400819550146, 0, 0.5862015830883935, 1, 0.444816858861194, 0.9179110359561272],
console
.
log
(
numbers
);
// assign the color to the buildings based on their id
// var sortedValues = bldInfo.dataArray.sort
// if (!Cesium.defined(name)) {
// name = pickedFeature.getProperty("id");
// }
}
\ No newline at end of file
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment