mirror of
https://github.com/NASAWorldWind/WebWorldWind.git
synced 2026-02-01 16:38:15 +00:00
Merge remote-tracking branch 'remotes/origin/develop' into feature/npm
This commit is contained in:
commit
52954ebbce
5
.idea/runConfigurations/SentinelWMTS.xml
generated
Normal file
5
.idea/runConfigurations/SentinelWMTS.xml
generated
Normal file
@ -0,0 +1,5 @@
|
||||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="SentinelWMTS" type="JavascriptDebugType" factoryName="JavaScript Debug" singleton="false" uri="http://localhost:63342/WebWorldWind/apps/SentinelWMTS.html">
|
||||
<method />
|
||||
</configuration>
|
||||
</component>
|
||||
59
apps/SentinelWMTS.html
Normal file
59
apps/SentinelWMTS.html
Normal file
@ -0,0 +1,59 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>World Wind Sentinel WMTS</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js" type="text/javascript"></script>
|
||||
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.min.css">
|
||||
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js" type="text/javascript"></script>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
|
||||
<script data-main="SentinelWMTS/app"
|
||||
src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.17/require.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="jumbotron">
|
||||
<h1 style="text-align:center">Sentinel WMTS</h1>
|
||||
<h2 style="text-align:center">data from <a href="http://www.sentinel-hub.com" target="_blank">www.sentinel-hub.com</a></h2>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-3">
|
||||
<div class="input-group" id="searchBox">
|
||||
<input type="text" class="form-control" placeholder="GoTo" id="searchText"/>
|
||||
<span class="input-group-btn">
|
||||
<button id="searchButton" class="btn btn-primary" type="button">
|
||||
<span class="glyphicon glyphicon-search"></span>
|
||||
</button>
|
||||
</span>
|
||||
</div>
|
||||
<br>
|
||||
<h4>Add a layer</h4>
|
||||
<div class="dropdown" id="layerDropdown">
|
||||
</div>
|
||||
<br>
|
||||
<h4>Layers</h4>
|
||||
<div class="list-group" id="layerList"></div>
|
||||
</div>
|
||||
<div class="col-sm-9">
|
||||
<div class="row">
|
||||
<ul class="nav nav-pills col-sm-2">
|
||||
<li class="dropdown" id="projectionDropdown">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#" id="projectionDropdownTitle">3D
|
||||
<span class="caret"></span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="col-sm-10" style="margin: 0; line-height: 40px; text-align: right">This small application shows how to display ESA Sentinel data using WebWorldWind and its WMTS feature.</p>
|
||||
</div>
|
||||
<canvas id="canvasOne" width="1000" height="1000" style="width: 100%; height: auto;">
|
||||
Your browser does not support HTML5 Canvas.
|
||||
</canvas>
|
||||
<p></p>
|
||||
<p style="text-align: center;">Imagery from <a href="http://www.sentinel-hub.com" target="_blank">Sentinel Hub</a> provided by <a href="http://www.sinergise.com" target="_blank">Sinergise</a>.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
99
apps/SentinelWMTS/SentinelWMTS.js
Normal file
99
apps/SentinelWMTS/SentinelWMTS.js
Normal file
@ -0,0 +1,99 @@
|
||||
/*
|
||||
* Copyright (C) 2017 United States Government as represented by the Administrator of the
|
||||
* National Aeronautics and Space Administration. All Rights Reserved.
|
||||
*/
|
||||
define(['../../src/WorldWind',
|
||||
'../util/GoToBox',
|
||||
'../util/LayersPanel',
|
||||
'../util/ProjectionMenu'],
|
||||
function (ww,
|
||||
GoToBox,
|
||||
LayersPanel,
|
||||
ProjectionMenu) {
|
||||
"use strict";
|
||||
|
||||
var SinergiseWMTS = function () {
|
||||
WorldWind.Logger.setLoggingLevel(WorldWind.Logger.LEVEL_WARNING);
|
||||
|
||||
// Create the World Window.
|
||||
var wwd = new WorldWind.WorldWindow("canvasOne");
|
||||
|
||||
// Sinergise layers
|
||||
var wmtsCapabilities;
|
||||
|
||||
/*
|
||||
* The key to access Copernicus Sentinel data hosted on www.sentinel-hub.com is provided free-of-charge by
|
||||
* Sinergise for demonstration purposes only. You must obtain your own key at www.sentinel-hub.com before
|
||||
* using this layer in your application.
|
||||
*/
|
||||
var wmtsServer = 'http://services.sentinel-hub.com/v1/wmts/56748ba2-4a88-4854-beea-86f9afc63e35';
|
||||
|
||||
$.get(wmtsServer + '?REQUEST=GetCapabilities&SERVICE=WMTS', function (response) {
|
||||
wmtsCapabilities = new WorldWind.WmtsCapabilities(response);
|
||||
console.log(wmtsCapabilities);
|
||||
}).done(function () {
|
||||
// Internal layers
|
||||
var layers = [
|
||||
{layer: new WorldWind.BMNGLandsatLayer(), enabled: false}
|
||||
];
|
||||
|
||||
// Sinergise "Agriculture" layer
|
||||
var agricultureLayerCaps = wmtsCapabilities.getLayer('TRUE_COLOR');
|
||||
var agricultureLayerConf = WorldWind.WmtsLayer.formLayerConfiguration(agricultureLayerCaps);
|
||||
var agricultureLayer = new WorldWind.WmtsLayer(agricultureLayerConf, "2017-03-09");
|
||||
layers.push({layer: agricultureLayer, enabled : true});
|
||||
|
||||
// Internal layers
|
||||
layers.push(
|
||||
{layer: new WorldWind.CompassLayer(), enabled: true},
|
||||
{layer: new WorldWind.CoordinatesDisplayLayer(wwd), enabled: true},
|
||||
{layer: new WorldWind.ViewControlsLayer(wwd), enabled: true}
|
||||
);
|
||||
|
||||
for (var l = 0; l < layers.length; l++) {
|
||||
layers[l].layer.enabled = layers[l].enabled;
|
||||
layers[l].layer.layerSelected = layers[l].selected;
|
||||
wwd.addLayer(layers[l].layer);
|
||||
}
|
||||
|
||||
// Start the view pointing to Paris
|
||||
wwd.navigator.lookAtLocation.latitude = 48.86;
|
||||
wwd.navigator.lookAtLocation.longitude = 2.37;
|
||||
wwd.navigator.range = 5e4;
|
||||
|
||||
// Create controllers for the user interface elements.
|
||||
new GoToBox(wwd);
|
||||
var layersPanel = new LayersPanel(wwd);
|
||||
new ProjectionMenu(wwd);
|
||||
|
||||
var layerDropdown = $("#layerDropdown");
|
||||
|
||||
var dropdownButton = $('<button class="btn btn-info btn-block dropdown-toggle" type="button" data-toggle="dropdown">Add<span class="caret"></span></button>');
|
||||
layerDropdown.append(dropdownButton);
|
||||
|
||||
var ulItem = $('<ul class="dropdown-menu">');
|
||||
layerDropdown.append(ulItem);
|
||||
|
||||
var allWmtsLayers = wmtsCapabilities.getLayers();
|
||||
for (var i = 0; i < allWmtsLayers.length; i++) {
|
||||
var layerItem = $('<li><a data-id="' + allWmtsLayers[i].identifier + '">' + allWmtsLayers[i].titles[0].value + '</a></li>');
|
||||
ulItem.append(layerItem);
|
||||
}
|
||||
|
||||
ulItem = $('</ul>');
|
||||
layerDropdown.append(ulItem);
|
||||
|
||||
dropdownButton.html("Add ("+allWmtsLayers.length+") <span class='caret'></span>");
|
||||
|
||||
layerDropdown.find("li").on("click", function (e) {
|
||||
var layerId = e.target.dataset.id;
|
||||
var layerCaps = wmtsCapabilities.getLayer(layerId);
|
||||
var layerConf = WorldWind.WmtsLayer.formLayerConfiguration(layerCaps);
|
||||
wwd.layers.splice(wwd.layers.length - 3, 0, new WorldWind.WmtsLayer(layerConf, "2017-03-09"));
|
||||
layersPanel.synchronizeLayerList();
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
return SinergiseWMTS;
|
||||
});
|
||||
14
apps/SentinelWMTS/app.js
Normal file
14
apps/SentinelWMTS/app.js
Normal file
@ -0,0 +1,14 @@
|
||||
/*
|
||||
* Copyright (C) 2017 United States Government as represented by the Administrator of the
|
||||
* National Aeronautics and Space Administration. All Rights Reserved.
|
||||
*/
|
||||
|
||||
requirejs.config({
|
||||
"paths": {
|
||||
"SentinelWMTS": "SentinelWMTS"
|
||||
}
|
||||
});
|
||||
|
||||
requirejs(["SentinelWMTS"], function (SentinelWMTS) {
|
||||
new SentinelWMTS();
|
||||
});
|
||||
@ -144,18 +144,18 @@ define([
|
||||
ElevationImage.prototype.elevationsForGrid = function (sector, numLat, numLon, result) {
|
||||
if (!sector) {
|
||||
throw new ArgumentError(
|
||||
Logger.logMessage(Logger.LEVEL_SEVERE, "ElevationImage", "elevationsForSector", "missingSector"));
|
||||
Logger.logMessage(Logger.LEVEL_SEVERE, "ElevationImage", "elevationsForGrid", "missingSector"));
|
||||
}
|
||||
|
||||
if (numLat < 1 || numLon < 1) {
|
||||
throw new ArgumentError(
|
||||
Logger.logMessage(Logger.LEVEL_SEVERE, "ElevationImage", "elevationsForSector",
|
||||
Logger.logMessage(Logger.LEVEL_SEVERE, "ElevationImage", "elevationsForGrid",
|
||||
"The specified number of sample points is less than 1."));
|
||||
}
|
||||
|
||||
if (!result) {
|
||||
throw new ArgumentError(
|
||||
Logger.logMessage(Logger.LEVEL_SEVERE, "ElevationImage", "elevationsForSector", "missingResult"));
|
||||
Logger.logMessage(Logger.LEVEL_SEVERE, "ElevationImage", "elevationsForGrid", "missingResult"));
|
||||
}
|
||||
|
||||
var minLatSelf = this.sector.minLatitude,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user