How to use CesiumJS to visualize data from a Session: Difference between revisions

From Tygron Support wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
<pre>
<pre>
// variables
// variables
const dim = 128;
const dim = 128;
const minLevel = 6;
const minLevel = 6;
const maxLevel = 19;
const maxLevel = 19;
const tilepx = 512;
const tilepx = 512;


// Construct the default list of terrain sources.
// Construct the default list of terrain sources.
var terrainModels = [];
var terrainModels = [];
terrainModels.push(new Cesium.ProviderViewModel({
terrainModels.push(new Cesium.ProviderViewModel({
name: "Project Terrain",
name: "Project Terrain",
category: "Terrain",
category: "Terrain",
iconUrl: Cesium.buildModuleUrl('Widgets/Images/TerrainProviders/Ellipsoid.png'),
iconUrl: Cesium.buildModuleUrl('Widgets/Images/TerrainProviders/Ellipsoid.png'),
creationFunction: function () {
creationFunction: function () {
return new Cesium.CustomHeightmapTerrainProvider({
return new Cesium.CustomHeightmapTerrainProvider({
width: dim,
width: dim,
height: dim,
height: dim,
maximumLevel: maxLevel,
maximumLevel: maxLevel,
callback: function (x, y, level) {
callback: function (x, y, level) {
if (level <= 10) { // ignore zoom levels 10 and lower
if (level <= 10) { // ignore zoom levels 10 and lower
return new Float32Array(dim * dim); // all zeros
return new Float32Array(dim * dim); // all zeros
}
}
const test = Cesium.Resource.fetchArrayBuffer('terrain/' + level + '/' + x + '/' + y + '.bin?worlddatum=true&token=$TOKEN&width=' + dim + '&height=' + dim);
const test = Cesium.Resource.fetchArrayBuffer('terrain/' + level + '/' + x + '/' + y + '.bin?worlddatum=true&token=$TOKEN&width=' + dim + '&height=' + dim);
return test.then(function (buffer) {
return test.then(function (buffer) {
const array = new Float32Array(dim * dim); // all zeros
const array = new Float32Array(dim * dim); // all zeros
const view = new DataView(buffer);
const view = new DataView(buffer);
for (let i = 0; i < dim * dim; i++) {
for (let i = 0; i < dim * dim; i++) {
array[i] = view.getFloat32(i * 4);
array[i] = view.getFloat32(i * 4);
}
}
return array;
return array;
});
},
});
});
}
},
}));
});
}
}));
</pre>
</pre>



Revision as of 12:54, 1 March 2024

// variables
const dim = 128;
const minLevel = 6;
const maxLevel = 19;
const tilepx = 512;

// Construct the default list of terrain sources.
var terrainModels = [];
terrainModels.push(new Cesium.ProviderViewModel({
	name: "Project Terrain",
	category: "Terrain",
	iconUrl: Cesium.buildModuleUrl('Widgets/Images/TerrainProviders/Ellipsoid.png'),
	creationFunction: function () {
		return new Cesium.CustomHeightmapTerrainProvider({
			width: dim,
			height: dim,
			maximumLevel: maxLevel,
			callback: function (x, y, level) {
				if (level <= 10) { // ignore zoom levels 10 and lower
					return new Float32Array(dim * dim); // all zeros
				}
				const test = Cesium.Resource.fetchArrayBuffer('terrain/' + level + '/' + x + '/' + y + '.bin?worlddatum=true&token=$TOKEN&width=' + dim + '&height=' + dim);
				return test.then(function (buffer) {
					const array = new Float32Array(dim * dim); // all zeros
					const view = new DataView(buffer);
					for (let i = 0; i < dim * dim; i++) {
						array[i] = view.getFloat32(i * 4);
					}
					return array;
				});
			},
		});
	}
}));