Commit 27ca663e authored by Rushikesh Padsala's avatar Rushikesh Padsala
Browse files

Added Viewer

parent e21f1f45
No related merge requests found
Showing with 484 additions and 0 deletions
+484 -0
public/CSS/Images/hft.jpg

57.1 KB

/*
html,
body,
*/
#Navbar {
overflow: hidden;
}
html,
body,
#cesiumContainer {
top: 0px;
left: 0px;
position: absolute;
width: 100%;
height: 100%;
margin: 0;
padding: 0;
overflow: hidden;
z-index: -1;
}
/*for chart*/
#chart {
padding: 5px 10px;
color: #fff;
font: 1em "Fira Sans", sans-serif;
display: block;
}
#chartcontainer {
width: 481px;
right: 5px;
top: 382px;
background: rgba(0, 0, 0, 0.65);
border-radius: 10px;
border: 1px solid #444;
padding: 5px 10px;
color: #fff;
font: 1em "Fira Sans", sans-serif;
position: absolute;
display: block;
visibility: hidden;
box-shadow: 0 0 10px 1px #000;
}
table {
display: table;
border-collapse: separate;
border-spacing: 1px;
border-color: grey;
}
.apexcharts-tooltip {
background: #C0C0C0 !important;
color: black;
}
/*for chart*/
#legend {
position: relative;
left: 5px;
top: 5px;
}
.backdrop {
display: inline-block;
background: rgba(42, 42, 42, 0.7);
border-radius: 5px;
border: 1px solid #444;
color: #fff;
line-height: 150%;
font-size: small;
box-shadow: 0 0 10px 1px #000;
}
button.cesium-infoBox-camera {
display: none;
}
.cesium-infoBox {
width: 80%;
height: auto;
right: 5px;
background: rgba(0, 0, 0, 0.65);
border-radius: 10px;
border: 1px solid #444;
padding: 5px 10px;
color: #fff;
font: 1em "Fira Sans", sans-serif;
float: right;
}
.cesium-infoBox-title {
background: rgba(0, 0, 0, 0);
font: 1em "Fira Sans", sans-serif;
}
.cesium-infoBox-close {
z-index: 99999;
}
.my-legend .legend-title {
text-align: left;
margin-bottom: 5px;
font-weight: bold;
font-size: 90%;
}
.my-legend .legend-scale ul {
margin: 0;
margin-bottom: 5px;
padding: 0;
float: left;
list-style: none;
}
.my-legend .legend-scale ul li {
list-style: none;
margin-left: 0;
line-height: 18px;
margin-bottom: 2px;
}
.my-legend ul.legend-labels li span {
display: block;
float: left;
height: 16px;
width: 30px;
margin-right: 5px;
margin-left: 0;
border: 1px solid #999;
}
.my-legend a {
color: #777;
}
.credit {
width: 100px;
height: 100px;
overflow: hidden;
position: fixed;
z-index: 99999;
background: url(Images/hft.jpg) no-repeat;
background-size: 100px;
bottom: 70px;
left: 10px;
box-shadow: 0 0 10px 1px #000;
/* left: 5px;*/
}
Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJiNWFjZDJiMy1hYzk3LTQ2YWUtYWVjYi01MDk1OGVlZGI0NTgiLCJpZCI6MTEwNzEsInNjb3BlcyI6WyJhc3IiLCJnYyJdLCJpYXQiOjE1NTgwMjE1Mjh9.lF6TGAJrX3qMGBt5egdAA7SJYNnaYX17mhURwGg_Kbg';
//////////////////////////////////////////////////////////////////////////
// Creating the Viewer
//////////////////////////////////////////////////////////////////////////
var viewer = new Cesium.Viewer('cesiumContainer', {
scene3DOnly: true,
selectionIndicator: false,
timeline: false,
animation: false,
shadow: false,
// // Set default basemap
imageryProvider : new Cesium.MapboxImageryProvider({
mapId: 'mapbox.streets'
}),
baseLayerPicker: true
});
viewer.clock.shouldAnimate = false;
viewer.clock.startTime = Cesium.JulianDate.fromIso8601("2019-09-20T13:00:00Z");
viewer.clock.stopTime = Cesium.JulianDate.fromIso8601("2019-09-20T13:20:00Z");
viewer.clock.currentTime = Cesium.JulianDate.fromIso8601("2019-09-20T13:00:00Z");
document.getElementById("legend").style.display = "none"; //defining legends hidden by default
//////////////////////////////////////////////////////////////////////////
// Configuring the camera
//////////////////////////////////////////////////////////////////////////
// // Create an initial camera view
var initialPosition = Cesium.Rectangle.fromDegrees(-73.9907, 40.6776, -73.9856, 40.6809);
//var initialOrientation = new Cesium.HeadingPitchRoll.fromDegrees(1.0820674827650922, -0.6183562882750495, 0.003599879447971688);
var homeCameraView = {
destination : initialPosition
//orientation : initialOrientation,
//endTransform: Cesium.Matrix4.IDENTITY
};
// // Set the initial view
viewer.scene.camera.setView(homeCameraView);
console.log (Cesium.Rectangle.fromDegrees);
// set home button to initial view
viewer.homeButton.viewModel.command.beforeExecute.addEventListener(function (e) {
e.cancel = true;
viewer.scene.camera.flyTo(homeCameraView);
});
console.log (viewer.scene.camera);
//////////////////////////////////////////////////////////////////////////
// Loading GeoJSON with polygon outline - strokewidth is an issue with windows
//////////////////////////////////////////////////////////////////////////
// var jsonOptions = {
// stroke: Cesium.Color.DARKRED,
//fill: Cesium.Color.WHITESMOKE.withAlpha(0),
// strokeWidth: 5
// };
// var gowanusboundary = Cesium.GeoJsonDataSource.load('./Source/Data/Gowanus.geojson',jsonOptions);
// viewer.dataSources.add(gowanusboundary);
//////////////////////////////////////////////////////////////////////////
// Load 3D Tileset
//////////////////////////////////////////////////////////////////////////
var currentgowanus = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({url: './Source/Data/Bldg/Current_Gowanus/tileset.json'}));
var bau2050gowanus = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({url: './Source/Data/Bldg/BAU2050_Gowanus/tileset.json'}));
var bp2050gowanus = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({url: './Source/Data/Bldg/BP2050_Gowanus/tileset.json'}));
currentgowanus.show = true;
bau2050gowanus.show = false;
bp2050gowanus.show = false;
//currentgowanus.style = new Cesium.Cesium3DTileStyle({
//color : 'color("white")'});
//bau2050gowanus.style = new Cesium.Cesium3DTileStyle({
//color : 'color("BLACK")'});
var selectscenario = document.getElementById('selectscenario');
function setscenario() {
var selectedscenario = selectscenario.options[selectscenario.selectedIndex].value;
if (selectedscenario === 'current') {currentgowanus.show = true;
bau2050gowanus.show = false;
bp2050gowanus.show = false;}
else if (selectedscenario === 'bau') {currentgowanus.show = false;
bau2050gowanus.show = true;
bp2050gowanus.show = false;}
else if (selectedscenario === 'bp') {currentgowanus.show = false;
bau2050gowanus.show = false;
bp2050gowanus.show = true;}
}
selectscenario.addEventListener('change', setscenario);
//////////////////////////////////////////////////////////////////////////
// Style 3D Tileset
//////////////////////////////////////////////////////////////////////////
var defaultstyle = new Cesium.Cesium3DTileStyle({
color : "color('WHITE')",
show: true
});
var energydemandstyle = new Cesium.Cesium3DTileStyle({
color : {
conditions : [
["(${Specific_space_heating_demand} === 0)", "color('#000000')"],
["(${Specific_space_heating_demand} > 0) && (${Specific_space_heating_demand} < 60)", "color('#33ACFF')"],
["(${Specific_space_heating_demand} >= 60) && (${Specific_space_heating_demand} < 120)", "color('#2AFF00')"],
["(${Specific_space_heating_demand} >= 120) && (${Specific_space_heating_demand} < 170)", "color('#FFFF00')"],
["(${Specific_space_heating_demand} >= 170) && (${Specific_space_heating_demand} < 230)", "color('#FFA200')"],
["(${Specific_space_heating_demand} >= 230)", "color('#FF0000')"]
]
},
show: true
});
var colorstyle1 = document.getElementById('3dbuildings');
var colorstyle2 = document.getElementById('heatdemand');
function set3DColorStyle() {
if (colorstyle1.checked) {
currentgowanus.style = defaultstyle;
bau2050gowanus.style = defaultstyle;
bp2050gowanus.style = defaultstyle;
document.getElementById("legend").style.display = "none";
}
else if (colorstyle2.checked) {
currentgowanus.style = energydemandstyle;
bau2050gowanus.style = energydemandstyle;
bp2050gowanus.style = energydemandstyle;
document.getElementById("legend").style.display = "block";
}
}
colorstyle1.addEventListener('change', set3DColorStyle);
colorstyle2.addEventListener('change', set3DColorStyle);
//////////////////////////////////////////////////////////////////////////
// Custom mouse interaction for highlighting and selecting
//////////////////////////////////////////////////////////////////////////
//Style the overlay
var nameOverlay = document.createElement('div');
viewer.container.appendChild(nameOverlay);
nameOverlay.className = 'backdrop';
nameOverlay.style.display = 'none';
nameOverlay.style.position = 'absolute';
nameOverlay.style.bottom = '0';
nameOverlay.style.left = '0';
nameOverlay.style['pointer-events'] = 'none';
nameOverlay.style.padding = '4px';
nameOverlay.style.backgroundColor = 'black';
nameOverlay.style.fontFamily = 'Fira Sans, sans-serif';
//Selecting a Building
var Pickers_3DTile_Activated = true;
// Information about the currently highlighted feature
function active3DTilePicker() {
var highlighted = {
feature: undefined,
originalColor: new Cesium.Color()
};
// Information about the currently selected feature
var selected = {
feature: undefined,
originalColor: new Cesium.Color()
};
// An entity object which will hold info about the currently selected feature for infobox display
var selectedEntity = new Cesium.Entity();
// Get default left click handler for when a feature is not picked on left click
var clickHandler = viewer.screenSpaceEventHandler.getInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK);
// Color a feature yellow on hover.
viewer.screenSpaceEventHandler.setInputAction(function onMouseMove(movement) {
if (Pickers_3DTile_Activated) {
// If a feature was previously highlighted, undo the highlight
if (Cesium.defined(highlighted.feature)) {
highlighted.feature.color = highlighted.originalColor;
highlighted.feature = undefined;
}
// Pick a new feature
var picked3DtileFeature = viewer.scene.pick(movement.endPosition);
if (!Cesium.defined(picked3DtileFeature)) {
nameOverlay.style.display = 'none';
return;
}
// A feature was picked, so show it's overlay content
nameOverlay.style.display = 'block';
nameOverlay.style.bottom = viewer.canvas.clientHeight - movement.endPosition.y + 'px';
nameOverlay.style.left = movement.endPosition.x + 'px';
var name = picked3DtileFeature.getProperty('PrimaryUsageZoneType');
if (!Cesium.defined(name)) {
name = picked3DtileFeature.getProperty('PrimaryUsageZoneType');
}
nameOverlay.textContent = name;
// Highlight the feature if it's not already selected.
if (picked3DtileFeature !== selected.feature) {
highlighted.feature = picked3DtileFeature;
Cesium.Color.clone(picked3DtileFeature.color, highlighted.originalColor);
picked3DtileFeature.color = Cesium.Color.GREY;
}
}
}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
// Color a feature on selection and show metadata in the InfoBox.
viewer.screenSpaceEventHandler.setInputAction(function onLeftClick(movement) {
if (Pickers_3DTile_Activated) {
// If a feature was previously selected, undo the highlight
if (Cesium.defined(selected.feature)) {
selected.feature.color = selected.originalColor;
selected.feature = undefined;
$("#chart").html("");
var options = null;
}
// Pick a new feature
var picked3DtileFeature = viewer.scene.pick(movement.position);
if (!Cesium.defined(picked3DtileFeature)) {
clickHandler(movement);
return;
}
// Select the feature if it's not already selected
if (selected.feature === picked3DtileFeature) {
return;
}
selected.feature = picked3DtileFeature;
// Save the selected feature's original color
if (picked3DtileFeature === highlighted.feature) {
Cesium.Color.clone(highlighted.originalColor, selected.originalColor);
highlighted.feature = undefined;
} else {
Cesium.Color.clone(picked3DtileFeature.color, selected.originalColor);
}
// Highlight newly selected feature
picked3DtileFeature.color = Cesium.Color.AQUA;
// Set feature infobox description
var featureName = "Net Zero Gowanus 3D Viewer";
selectedEntity.name = featureName;
selectedEntity.description = 'Loading <div class="cesium-infoBox-loading"></div>';
viewer.selectedEntity = selectedEntity;
selectedEntity.description =
'<table class="cesium-infoBox-defaultTable"><tbody>' +
'<tr><th>Building ID</th><td>' + picked3DtileFeature.getProperty('GMLId') + '</td></tr>' +
'<tr><th>Year of Construction</th><td>' + picked3DtileFeature.getProperty('Year of construction') + '</td></tr>' +
'<tr><th>PLUTO Code</th><td>' + picked3DtileFeature.getProperty('ALKIS code') + '</td></tr>' +
'<tr><th>Primary Building Usage</th><td>' + picked3DtileFeature.getProperty('PrimaryUsageZoneType') + '</td></tr>' +
'<tr><th>Building Footprint </th><td>' + picked3DtileFeature.getProperty('Footprint area') + ' ' + '' + '</td></tr>' +
'<tr><th>Building Volume</th><td>' + picked3DtileFeature.getProperty('Gross volume') + ' ' + '' + '</td></tr>' +
'<tr><th>Mean U-value</th><td>' + picked3DtileFeature.getProperty('Mean Uvalue') + ' ' + 'W/m²·K' +'</td></tr>' +
'<tr><th>Sp. Domestic Hot Water Demand</th><td>' + picked3DtileFeature.getProperty('Specific domestic hot water demand') + ' ' + 'kWh/m²·a' + '</td></tr>' +
'<tr><th>Sp. Heating Demand</th><td>' + picked3DtileFeature.getProperty('Specific_space_heating_demand') + ' ' + 'kWh/m²·a' + '</td></tr>' +
'</tbody></table>';
console.log(picked3DtileFeature.getProperty('Specific_space_heating_demand'));
//Fill Table
options = {
chart: {
foreColor: '#fff',
// background: '#fff',
fontFamily: 'Fira Sans, sans-serif',
type: 'line',
animations: {
enabled: true,
easing: 'easeinout',
speed: 800,
animateGradually: {
enabled: true,
delay: 150
},
dynamicAnimation: {
enabled: true,
speed: 350
}
},
zoom: {
enabled: false
}
},
dataLabels: {
enabled: false
},
tooltip: {
y: {
formatter: function (value) {
return value + " kW/h"
}
}
},
stroke: {
curve: 'straight'
},
series: [{
name: 'Heating Demand',
data: [picked3DtileFeature.getProperty('January Heating Demand'), picked3DtileFeature.getProperty('February Heating Demand'), picked3DtileFeature.getProperty('March Heating Demand'), picked3DtileFeature.getProperty('April Heating Demand'), picked3DtileFeature.getProperty('May Heating Demand'), picked3DtileFeature.getProperty('June Heating Demand'), picked3DtileFeature.getProperty('July Heating Demand'), picked3DtileFeature.getProperty('August Heating Demand'), picked3DtileFeature.getProperty('September Heating Demand'), picked3DtileFeature.getProperty('October Heating Demand'), picked3DtileFeature.getProperty('November Heating Demand'), picked3DtileFeature.getProperty('December Heating Demand')]
}],
title: {
text: 'Monthly Heating Demand',
align: 'center'
},
xaxis: {
categories: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
},
yaxis: {
title: {
text: "Heating Demand (kW/h)"
}
}
}
var chart = new ApexCharts(document.querySelector("#chart"), options);
chart.render();
}
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
}
active3DTilePicker();
//////////////////////////////////////////////////////////////////////////
// Custom mouse interaction for highlighting and selecting
//////////////////////////////////////////////////////////////////////////
function showTable() {
var x = document.getElementById("chartcontainer");
if (x.style.visibility === "hidden") {
x.style.visibility = "visible";
} else {
x.style.visibility = "hidden";
}
}
File added
File added
File added
File added
File added
File added
File added
File added
File added
File added
File added
File added
File added
File added
File added
File added
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment