Skip to content

Commit

Permalink
Merge pull request #838 from OpenGeoscience/isolines
Browse files Browse the repository at this point in the history
Add an isoline feature.
  • Loading branch information
manthey authored Jul 12, 2018
2 parents f4e8749 + e920587 commit 5cf489c
Show file tree
Hide file tree
Showing 90 changed files with 1,889 additions and 263 deletions.
44 changes: 31 additions & 13 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,6 @@ function(add_geojs_test test_name)
set_property(TEST "notes-report" APPEND PROPERTY DEPENDS "${test_name}")
endfunction()

# set variables for girder.cmake
set(Girder_KEY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/testing/test-data")
set(Girder_DATA_DIR "${GEOJS_DEPLOY_DIR}/data")
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/girder.cmake)

add_download_target()

configure_file(${CMAKE_CURRENT_SOURCE_DIR}/testing/test-runners/geojs_test_runner.py.in
${CMAKE_CURRENT_BINARY_DIR}/test/geojs_test_runner.py
)
Expand All @@ -73,12 +66,37 @@ add_test(
)
set_property(TEST "notes-report" APPEND PROPERTY DEPENDS "notes-reset")

add_custom_target(
data_files
ALL
DEPENDS ${Girder_DOWNLOAD_FILES}
)
add_test(NAME get_data_files COMMAND "${CMAKE_COMMAND}" --build ${CMAKE_BINARY_DIR} --target data_files)
# Use ExternalData to download all referenced files in tests/external-data
include(ExternalData)
set(ExternalData_URL_TEMPLATES "https://data.kitware.com/api/v1/file/hashsum/%(algo)/%(hash)/download")
set(ExternalData_BINARY_ROOT "${GEOJS_DEPLOY_DIR}/data")
set(ExternalData_SOURCE_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/tests/external-data")
# Get a list of files to download based on the name *.sha512
file(GLOB data_files_list "${ExternalData_SOURCE_ROOT}/*.sha512")
# Obtain the files using ExternalData
foreach(data_file ${data_files_list})
string(REGEX REPLACE "^(.*)\\.sha512$" "\\1" base_file "${data_file}")
ExternalData_Expand_Arguments(data_files tmp DATA{${base_file}})
endforeach()
# Add a target to get the files
ExternalData_Add_Target(data_files)
# For any file that is a .tgz file, expand it after we get it
foreach(data_file ${data_files_list})
string(REGEX REPLACE "^(.*)\\.sha512$" "\\1" base_file "${data_file}")
get_filename_component(base_file "${base_file}" NAME)
get_filename_component(base_fileext "${base_file}" EXT)
if("${base_fileext}" STREQUAL ".tgz")
get_filename_component(base_filename "${base_file}" NAME_WE)
add_custom_command(
TARGET data_files POST_BUILD
DEPENDS "${ExternalData_BINARY_ROOT}/${base_file}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${ExternalData_BINARY_ROOT}/${base_filename}"
COMMAND ${CMAKE_COMMAND} -E chdir "${ExternalData_BINARY_ROOT}/${base_filename}" tar zxf "${ExternalData_BINARY_ROOT}/${base_file}"
)
endif()
endforeach()
# Create a test that gets this target
add_test(NAME get_data_files COMMAND "${CMAKE_COMMAND}" --build "${CMAKE_BINARY_DIR}" --target data_files)

if(HEADLESS_TESTS)
add_test(
Expand Down
13 changes: 0 additions & 13 deletions cmake/configure-js-coverage-test.cmake

This file was deleted.

5 changes: 0 additions & 5 deletions cmake/configure-js-unit-test.cmake

This file was deleted.

127 changes: 0 additions & 127 deletions cmake/girder.cmake

This file was deleted.

7 changes: 7 additions & 0 deletions examples/isoline/example.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"title": "Isolines",
"exampleJs": ["main.js"],
"about": {
"text": "This example shows how to add isolines to a map."
}
}
63 changes: 63 additions & 0 deletions examples/isoline/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
// Run after the DOM loads
$(function () {
'use strict';

// Create a map object with the OpenStreetMaps base layer.
var map = geo.map({
node: '#map',
center: {
x: -157.965,
y: 21.482
},
zoom: 11
});

// Add a faint osm layer
map.createLayer('osm', {opacity: 0.5});

// Create a feature layer that supports contours
var isolineLayer = map.createLayer('feature', {
features: ['isoline']
});

// Load the data
$.get('../../data/oahu-dense.json').done(function (data) {
// Create an isoline feature
var iso = isolineLayer.createFeature('isoline', {
isoline: {
// Specify our grid data
gridWidth: data.gridWidth,
gridHeight: data.gridHeight,
x0: data.x0,
y0: data.y0,
dx: data.dx,
dy: data.dy,
// Don't plot any values less than zero
min: 0,
// Create a contour line every 50 meters
spacing: 50,
// Make every 4th line heavier and every 4*5 = 20th line heavier yet
levels: [4, 5]
},
style: {
// The data uses -9999 to represent no value; modify it to return null
// instead.
value: function (d) { return d > -9999 ? d : null; },
// level relates to the isoline importance, with 0 being the most
// common and, using the levels specified, a level of 1 being every
// fourth, and 2 every twentieth line. Color the lines differently
// depending on the level
strokeColor: function (v, vi, d) {
return ['grey', 'mediumblue', 'blue'][d.level];
}
}
}).data(data.values).draw();
// Make some values available in the global context so curious people can
// play with them.
window.example = {
map: map,
isolineLayer: isolineLayer,
iso: iso
};
});
});
Binary file added examples/isoline/thumb.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion karma-base.js
Original file line number Diff line number Diff line change
Expand Up @@ -339,7 +339,7 @@ module.exports = function (config) {
}, FirefoxPrefs)
}
},
browserNoActivityTimeout: 30000,
browserNoActivityTimeout: 300000,
reporters: [
'spec', // we had used the 'progress' reporter in the past.
'kjhtml'
Expand Down
1 change: 1 addition & 0 deletions src/canvas/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
module.exports = {
canvasRenderer: require('./canvasRenderer'),
heatmapFeature: require('./heatmapFeature'),
isolineFeature: require('./isolineFeature'),
lineFeature: require('./lineFeature'),
pixelmapFeature: require('./pixelmapFeature'),
quadFeature: require('./quadFeature'),
Expand Down
34 changes: 34 additions & 0 deletions src/canvas/isolineFeature.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
var inherit = require('../inherit');
var registerFeature = require('../registry').registerFeature;
var isolineFeature = require('../isolineFeature');

/**
* Create a new instance of class isolineFeature.
*
* @class
* @alias geo.canvas.isolineFeature
* @extends geo.isolineFeature
* @param {geo.isolineFeature.spec} arg
* @returns {geo.canvas.isolineFeature}
*/
var canvas_isolineFeature = function (arg) {
'use strict';
if (!(this instanceof canvas_isolineFeature)) {
return new canvas_isolineFeature(arg);
}

arg = arg || {};
isolineFeature.call(this, arg);

var object = require('./object');
object.call(this);

this._init(arg);
return this;
};

inherit(canvas_isolineFeature, isolineFeature);

// Now register it
registerFeature('canvas', 'isoline', canvas_isolineFeature);
module.exports = canvas_isolineFeature;
7 changes: 4 additions & 3 deletions src/contourFeature.js
Original file line number Diff line number Diff line change
Expand Up @@ -117,11 +117,12 @@ var contourFeature = function (arg) {
this._createContours = function () {
var contour = m_this.contour,
valueFunc = m_this.style.get('value'),
usedFunc = m_this.style('used') !== undefined ?
m_this.style.get('used') :
function (d, i) { return util.isNonNullFinite(valueFunc(d, i)); },
minmax, val, range, i, k;
var result = this._createMesh({
used: function (d, i) {
return util.isNonNullFinite(valueFunc(d, i));
},
used: usedFunc,
opacity: m_this.style.get('opacity'),
value: valueFunc
});
Expand Down
1 change: 1 addition & 0 deletions src/gl/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
module.exports = {
choroplethFeature: require('./choroplethFeature'),
contourFeature: require('./contourFeature'),
isolineFeature: require('./isolineFeature'),
lineFeature: require('./lineFeature'),
pointFeature: require('./pointFeature'),
polygonFeature: require('./polygonFeature'),
Expand Down
33 changes: 33 additions & 0 deletions src/gl/isolineFeature.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
var inherit = require('../inherit');
var registerFeature = require('../registry').registerFeature;
var isolineFeature = require('../isolineFeature');

/**
* Create a new instance of isolineFeature.
*
* @class
* @alias geo.gl.isolineFeature
* @extends geo.isolineFeature
* @param {geo.isolineFeature.spec} arg
* @returns {geo.gl.isolineFeature}
*/
var gl_isolineFeature = function (arg) {
'use strict';
if (!(this instanceof gl_isolineFeature)) {
return new gl_isolineFeature(arg);
}
arg = arg || {};
isolineFeature.call(this, arg);

var object = require('./object');
object.call(this);

this._init(arg);
return this;
};

inherit(gl_isolineFeature, isolineFeature);

// Now register it
registerFeature('vgl', 'isoline', gl_isolineFeature);
module.exports = gl_isolineFeature;
1 change: 1 addition & 0 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ module.exports = $.extend({
graphFeature: require('./graphFeature'),
heatmapFeature: require('./heatmapFeature'),
imageTile: require('./imageTile'),
isolineFeature: require('./isolineFeature'),
jsonReader: require('./jsonReader'),
layer: require('./layer'),
lineFeature: require('./lineFeature'),
Expand Down
Loading

0 comments on commit 5cf489c

Please sign in to comment.