Giter Club home page Giter Club logo

opensphere's Introduction

OpenSphere

OpenSphere is a pluggable, single-page, GIS web application that supports both 2D and 3D views. It supports hooking up to many common servers and formats such as ArcGIS, Geoserver (and other OGC WMS/WFS services), XYZ, TMS, KML, GeoJSON, Shapefiles, CSVs, and more! Other features include animation of both raster and vector data, import and export of various formats, saving files and layers between sessions, and much more!

Check it out!

Things to try:

  • Load a KML, GeoJSON, or GPX file (and more!)
  • Add and browse servers such as Geoserver, ArcGIS, and more!
  • Animate data in the timeline

In addition, OpenSphere (and its build system) can serve as a base library for GIS applications. Love what we've done with Openlayers and Cesium but want your own UI? You can do that!

Questions? Ask them in the forum or join our Slack!

Prerequisites

  • Java 1.7.0+
  • Node 20
  • Python 3

Getting Started

OpenSphere is natively developed on Linux and should run great on OS X and typical Linux distributions. See Windows Development for instructions for building on Windows.

Yarn

Yarn is recommended for dependency management over npm, particularly when using plugins and configuration projects. It will automatically link related projects and dependencies in your workspace.

  • Clone opensphere-yarn-workspace
  • Clone OpenSphere to the workspace directory
  • yarn install
  • yarn build
  • npm run start-server
  • Point your browser at workspace/opensphere/dist/opensphere/index.html

NPM

If you prefer to use NPM, that's fine too:

  • Clone the project
  • npm install
  • npm run build
  • npm run start-server
  • Point your browser at localhost:8282/workspace/opensphere/dist/opensphere/index.html

Hosting

OpenSphere is a web application and needs to be hosted by a http server. Any HTTP server will work fine. To get started quickly, a very simple to use node http-server is pre-configured.

To start:

npm run start-server

This will start http-server rooted at the project workspace on port 8282.

If developing locally, navigating to: http://localhost:8282/workspace/opensphere will open a debug-able build, where as http://localhost:8282/workspace/opensphere/dist/opensphere will open the compiled/optimized version.

The debug path can be reloaded in the browser to pick up any changes, generally without re-compiling. This allows for much simpler and rapid development. The compiled/optimized path requires rebuilding to pick up any changes. e.g. npm run build

Installing plugins

Got a cool plugin you want to install? Either:

  • cd opensphere; npm install opensphere-plugin-x
  • or clone the plugin project as a sibling to opensphere

Then do npm run build in opensphere and it will pick up the plugin.

Supported Browsers

The 2D view should be supported by IE10+, FF17+, and Chrome 28+. 3D support depends on proper graphics card drivers and WebGL support by the browser (and also a specific revision of IE11).

Even though IE should work, if you use it, you are going to have a bad time. Edge is only slightly better.

Documentation

Check out our guides at opensphere.readthedocs.io. Guides can be built locally by running npm run guide, which outputs to docs/_build/html.

Bugs

Please use the issue tracker for all bugs and feature requests. Remember to search first to see if the problem has already been reported.

Development

Our general development guide will help with contributions, plugins, and apps. For plugin development, start with our plugin guide. To use OpenSphere as a library and build your own app on top of it, check out our application guide

Contributing

To get involved with OpenSphere directly, see our contributing guide.

About

OpenSphere is an application used to visualize temporal/geospatial data. The application represents data using both two and three-dimensional models of the earth, and has the ability to handle large volumes of features and tiles. The core of the application is based on Open Geospatial Consortium (OGC) standards.

OpenSphere was developed at the National Geospatial-Intelligence Agency (NGA) in collaboration with BIT Systems. The government has "unlimited rights" and is releasing this software to increase the impact of government investments by providing developers with the opportunity to take things in new directions. The software use, modification, and distribution rights are stipulated within the Apache license.

Pull Requests

If you'd like to contribute to this project, please make a pull request. We'll review the pull request and discuss the changes. All pull request contributions to this project will be released under the Apache license.

Software source code previously released under an open source license and then modified by NGA staff is considered a "joint work" (see 17 USC § 101); it is partially copyrighted, partially public domain, and as a whole is protected by the copyrights of the non-government authors and must be released according to the terms of the original open source license.

License

Copyright 2017 BIT Systems

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

opensphere's People

Contributors

adamstja avatar ameletyan avatar arwatts16 avatar bcleveland1022 avatar bclevelandcaci avatar bradh avatar brelsftm avatar dependabot[bot] avatar dwlueth avatar erica-manzer avatar ericadeckl avatar glennkitchellcaci avatar gregroyal avatar jkae avatar johnstacy avatar jsalankey avatar justin-bits avatar kwilson-bits avatar lilysikes avatar marcellonicoletti avatar robertbolan-bits avatar rothmike avatar rusticpenguin avatar schmidtk avatar sethahrenbach avatar smithtb avatar swtyler avatar wallw-teal avatar welchyd avatar wisestmumbler avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

opensphere's Issues

Create Deployment Docs

Write some docs detailing a proper deployment, complete with proper caching directives and various settings values to look into.

Write settings docs

We need some documentation on settings, or at least most of the major ones. The JSON format is somewhat unfortunate since it does not allow comments in the file directly.

Build problems with ol.ext.rbush

/home/bradh/opensphere-yarn-workspace/node_modules/openlayers/src/ol/renderer/canvas/vectorlayer.js:9: ERROR - required "ol.ext.rbush" namespace never provided
goog.require('ol.ext.rbush');
^^^^^^^^^^^^^^^^^^^^^^^^^^^^


/home/bradh/opensphere-yarn-workspace/node_modules/openlayers/src/ol/renderer/canvas/vectortilelayer.js:9: ERROR - required "ol.ext.rbush" namespace never provided
goog.require('ol.ext.rbush');
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

/home/bradh/opensphere-yarn-workspace/node_modules/openlayers/src/ol/source/imagevector.js:7: ERROR - required "ol.ext.rbush" namespace never provided
goog.require('ol.ext.rbush');
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

/home/bradh/opensphere-yarn-workspace/node_modules/openlayers/src/ol/structs/rbush.js:4: ERROR - required "ol.ext.rbush" namespace never provided
goog.require('ol.ext.rbush');
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

4 error(s), 0 warning(s)

Not sure why this is occurring in master - no obviously related changes on the code side.

yarn list shows OL 4.6.2 and rbush 2.0.1

Build fails on ubuntu 17.10

Looks like there are a few bash-ism in the scripts, mostly of the form: node-sass --output-style compressed $(< .build/node-sass-args) > .build/opensphere.min.css which doesn't work if the shell isn't bash (any recent Ubuntu: https://wiki.ubuntu.com/DashAsBinSh).

Any easy replacement is something like: node-sass --output-style compressed `cat .build/node-sass-args` > .build/opensphere.min.css

Working on a PR now.

Unit tests fail - Ubuntu 17.10 (2 of 5)

$ npm run test on 45f3158 produces unit test errors on Ubuntu 17.10 using Chrome "63.0.3239.108 (Official Build) (64-bit)".

Chrome 63.0.3239 (Linux 0.0.0) os.command.CommandProcessor handles setting the index while commands are executing FAILED
	Expected 0 to be 2.
	Error: Expected 0 to be 2.
	    at jasmine.Spec.<anonymous> (test/os/command/commandprocessor.test.js:460:31)
	Expected 1 to be 3.
	Error: Expected 1 to be 3.
	    at jasmine.Spec.<anonymous> (test/os/command/commandprocessor.test.js:462:44)

Fix "dangerous use of this" warning

/home/bradh/opensphere-yarn-workspace/workspace/opensphere/src/plugin/featureaction/ui/editfeatureaction.js:290: WARNING - dangerous use of 'this' in static method plugin.im.action.feature.ui.onIconChange_
  this.unlistenImageChange(plugin.im.action.feature.ui.onIconChange_, this);
  ^^^^

/home/bradh/opensphere-yarn-workspace/workspace/opensphere/src/plugin/featureaction/ui/editfeatureaction.js:290: WARNING - dangerous use of the global this object
  this.unlistenImageChange(plugin.im.action.feature.ui.onIconChange_, this);
  ^^^^

/home/bradh/opensphere-yarn-workspace/workspace/opensphere/src/plugin/featureaction/ui/editfeatureaction.js:290: WARNING - dangerous use of 'this' in static method plugin.im.action.feature.ui.onIconChange_
  this.unlistenImageChange(plugin.im.action.feature.ui.onIconChange_, this);
                                                                      ^^^^

/home/bradh/opensphere-yarn-workspace/workspace/opensphere/src/plugin/featureaction/ui/editfeatureaction.js:292: WARNING - dangerous use of 'this' in static method plugin.im.action.feature.ui.onIconChange_
  if (this.getImageState() < ol.ImageState.ERROR) {
      ^^^^

/home/bradh/opensphere-yarn-workspace/workspace/opensphere/src/plugin/featureaction/ui/editfeatureaction.js:292: WARNING - dangerous use of the global this object
  if (this.getImageState() < ol.ImageState.ERROR) {
      ^^^^

Looks like it needs a @this annotation.

ExportManager test is flakey

Seen on travis (https://travis-ci.org/ngageoint/opensphere/builds/337087171) and locally:

Firefox 58.0.0 (Ubuntu 0.0.0) os.ui.file.ExportManager should log an error when no items are provided FAILED
	Expected 2 to be 0.
	@test/os/ui/file/exportmanager.test.js:21:5
	
	Expected 3 to be 1.
	@test/os/ui/file/exportmanager.test.js:24:5
	
	Expected 4 to be 2.
	@test/os/ui/file/exportmanager.test.js:27:5

Rerun of same configuration passes.

Unit tests fail - Ubuntu 17.10 (5 of 5)

$ npm run test on 45f3158 produces unit test errors on Ubuntu 17.10 using Chrome "63.0.3239.108 (Official Build) (64-bit)".

Chrome 63.0.3239 (Linux 0.0.0) os.xt.Peer supports waiting for a peer by ID and message type FAILED
	Expected { group : 'default', id : 'b', title : 'Peer B', details : '', types : [ 'messageFromA' ] } to equal { group : 'default', id : 'b', title : '', details : '', types : [  ] }.
	Error: Expected { group : 'default', id : 'b', title : 'Peer B', details : '', types : [ 'messageFromA' ] } to equal { group : 'default', id : 'b', title : '', details : '', types : [  ] }.
	    at jasmine.Spec.<anonymous> (test/os/xt/peer.test.js:709:41)

Investigate jquery upgrade

Our version of jQuery has two vulnerabilities listed for it:

https://nvd.nist.gov/vuln/detail/CVE-2015-9251 - I'm fairly sure this one is a moot point because we don't use jQuery for requests.

https://nvd.nist.gov/vuln/detail/CVE-2016-10707 - This would cause issues in testing if we had any attributes with the issue. We need to verify that user-generated content cannot produce those attributes.

However, investigate the recommended upgrade to ^3.0.0 and see if our plugins/frameworks are compatible.

KML Network link shows "cannot be parsed" error

Trying with http://www.nhc.noaa.gov/gis/kml/nhc_active.kml (see http://www.nhc.noaa.gov/gis/activekml.php).

The UI error is Unable to load URL "http://www.nhc.noaa.gov/gis/kml/nhc_active.kml"! Please check that it was entered correctly.

The real issue appears to be CORS:

log:GET http://www.nhc.noaa.gov/gis/kml/nhc_active.kml
log:Http response at 400 or 500 level. Http Status code: 0
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://www.nhc.noaa.gov/gis/kml/nhc_active.kml. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).

Editing to add Access-Control-Allow-Origin: * and resending appears to work OK.

Unit tests fail - Ubuntu 17.10 (1 of 5)

$ npm run test on 45f3158 produces unit test errors on Ubuntu 17.10 using Chrome "63.0.3239.108 (Official Build) (64-bit)".

Chrome 63.0.3239 (Linux 0.0.0) os.bearing should get magnetic bearings correctly FAILED
	Expected 44.22224540742933 to be close to 44.22244309187904, 8.
	Error: Expected 44.22224540742933 to be close to 44.22244309187904, 8.
	    at jasmine.Spec.<anonymous> (test/os/bearing/bearing.test.js:52:71)
	Expected 45.373682324668195 to be close to 45.37388000911791, 8.
	Error: Expected 45.373682324668195 to be close to 45.37388000911791, 8.
	    at jasmine.Spec.<anonymous> (test/os/bearing/bearing.test.js:53:67)
	Expected 112.16026829059825 to be close to 112.16177561564162, 8.
	Error: Expected 112.16026829059825 to be close to 112.16177561564162, 8.
	    at jasmine.Spec.<anonymous> (test/os/bearing/bearing.test.js:55:74)
	Expected 189.870867311387 to be close to 189.87237463643038, 8.
	Error: Expected 189.870867311387 to be close to 189.87237463643038, 8.
	    at jasmine.Spec.<anonymous> (test/os/bearing/bearing.test.js:56:70)

That could just be a floating point accuracy problem (32 bit / 64 bit, or compiler variations), but I wouldn't have expected it to be quite that large.

Upgrade moment.js to latest

Moment.js < 2.11.2 has been identified as having a ReDoS vulnerability in the duration function. OpenSphere's os.time.parseDuration is susceptible to this attack, though not currently used within OpenSphere in a manner that would allow exploitation. The dependency should be updated to fix the vulnerability.

Remove deprecated Action code

/home/bradh/opensphere-yarn-workspace/workspace/opensphere/src/os/ui/actionmenu.js:225: WARNING - Class os.ui.action.MenuItemAction has been deprecated: Please use {@link os.ui.menu.Menu} and {@link os.ui.menu.MenuItem} instead
          new os.ui.action.MenuItemAction(action),
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

/home/bradh/opensphere-yarn-workspace/workspace/opensphere/src/os/ui/actionmenu.js:234: WARNING - Class os.ui.action.MenuItemList has been deprecated: Please use {@link os.ui.menu.Menu} and {@link os.ui.menu.MenuItem} instead
      var menuItemList = new os.ui.action.MenuItemList(key, new os.ui.action.MenuOptions(null, division));
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

/home/bradh/opensphere-yarn-workspace/workspace/opensphere/src/os/ui/actionmenu.js:234: WARNING - Class os.ui.action.MenuOptions has been deprecated: Please use {@link os.ui.menu.Menu} and {@link os.ui.menu.MenuItem} instead
      var menuItemList = new os.ui.action.MenuItemList(key, new os.ui.action.MenuOptions(null, division));
                                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

/home/bradh/opensphere-yarn-workspace/workspace/opensphere/src/os/ui/actionmenu.js:250: WARNING - Class os.ui.action.MenuItemSeparator has been deprecated: Please use {@link os.ui.menu.Menu} and {@link os.ui.menu.MenuItem} instead
        goog.array.insertAt(menuItems, new os.ui.action.MenuItemSeparator(), i);
                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

/home/bradh/opensphere-yarn-workspace/workspace/opensphere/src/os/ui/actionmenu.js:254: WARNING - Class os.ui.action.MenuItemSeparatorHeader has been deprecated: Please use {@link os.ui.menu.Menu} and {@link os.ui.menu.MenuItem} instead
        goog.array.insertAt(menuItems, new os.ui.action.MenuItemSeparatorHeader(division.replace(/^[0-9]*:/, '')), i);
                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

/home/bradh/opensphere-yarn-workspace/workspace/opensphere/src/os/ui/slick/slickgrid.js:1034: WARNING - Property ActionManager of type os.ui.action has been deprecated: Please use {@link os.ui.menu.Menu} and {@link os.ui.menu.MenuItem} instead
    if (menu instanceof os.ui.action.ActionManager) {
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^

Has potential to impact on external users, so would need coordination.

Support reading KML Track/MultiTrack

KML Track and MultiTrack defines how an object moves around the world over time. The Openlayers KML format supports parsing these, and OpenSphere should support displaying them and animating them via the timeline.

This should support both the KML 2.2 gx extension, and the formalized KML 2.3 spec.

Provide API and plugin example for feed-based data source

There are many data sources that are near-real-time feeds (so you can't just open the file / download the data at initialisation). Instead, the data is "drip" (or firehose...) fed, often with updates to previous position information for an entity.

Examples are ship locations over AIS, aircraft locations from ADS-B, other formats converted into Cursor-on-Target, GPS "puck" locations in NMEA-0183, or tracking information for one or more UAVs. All of those are potentially useful data sources in an OS app.

It would be useful if there was OS API to define an interface for such plugins to implement, an example plugin to copy from, and support on the OS side to integrate those plugins.

Build on windows needs work - tracker bug.

I've been trying to get the build to run on windows. The package.json build commands that assume Posix shell behaviour aren't working out - it appears that even when npm is run from a Posix shell, the commands get run on the default shell (which looks to be cmd.exe). Its possible to work around this with `"bash -c "{blah command here}"" for every command that requires proper shell behaviour (as opposed to those that just execute some command without using command substitution, fancy redirects...). Its ugly, but its only about 16 commands.

After that, the closure compiler step dies with duplicate input files. Still tracking down why that happens - probably something in the way we build .build\gcc-java-args.

Unit tests fail - Ubuntu 17.10 (3 of 5)

$ npm run test on 45f3158 produces unit test errors on Ubuntu 17.10 using Chrome "63.0.3239.108 (Official Build) (64-bit)".

Chrome 63.0.3239 (Linux 0.0.0) os.plugin.PluginManager should time out when init takes too long FAILED
	Expected 2 to be 1.
	Error: Expected 2 to be 1.
	    at jasmine.Spec.<anonymous> (test/os/plugin/pluginmanager.test.js:111:39)
	Expected true to be false.
	Error: Expected true to be false.
	    at jasmine.Spec.<anonymous> (test/os/plugin/pluginmanager.test.js:114:47)

Task: Review vendor/ and migrate to npm where possible

Some of vendor is pretty old, and it might be useful to migrate to newer versions, ideally via npm. I'd see this done in two stages - see what is now available, and progressively migrate.

Example: note that npm offers bootstrap x.y.z, raise a separate issue for the migration.

Support KML tour AnimatedUpdate primitive

The AnimatedUpdate primitive describes how to modify the content displayed by the KML. See the Touring in KML guide for more details on this element.

Features OpenSphere is lacking for full support:

  • KML BalloonStyle (#113)
  • Animating style changes (ie, changing the size of a placemark over a duration)

Keep in mind any style changes made by the AnimatedUpdate should be reverted when the tour ends.

Fix missingOverride warnings.

The compiler update added a new missingOverride check, which was set as a warning in opensphere-build-resolver. This warning was disabled in opensphere's package.json, but we should enable it and fix the warnings.

Unit tests fail - Ubuntu 17.10 (4 of 5)

$ npm run test on 45f3158 produces unit test errors on Ubuntu 17.10 using Chrome "63.0.3239.108 (Official Build) (64-bit)".

Chrome 63.0.3239 (Linux 0.0.0) os.time.TimelineController Playing with higher fps should fire more os.time.TimelineEventType.SHOW event for each frame FAILED
	Expected 3 to be greater than 8.
	Error: Expected 3 to be greater than 8.
	    at jasmine.Spec.<anonymous> (test/os/time/timelinecontroller.test.js:141:73)

This could just be an artifact of varying load on the VM (so possibly a brittle test, rather than a code bug)

Duplicate groups in state menu

The menu refactor introduced a bug with the state file menu. Adding multiple state files and enabling/disabling them is adding multiple copies of the Saved States group and all of its children. The checkboxes associated with each state also get confizzled.

Task: Decide on "implicit" build dependencies

There are a few dependencies listed in the Development guide, but its not complete. For example, there is a build step that requires perl, but we don't mention it. We also assume a posix shell, which is likely, but maybe someone still uses tcsh instead...

This is a bit of a corner case (e.g. what developer machine wouldn't have perl?), but explicit is better than implicit. The documentation is easy - the hard part is deciding what dependencies we allow in code / require for all developers.

Support parsing/displaying KML BalloonStyle

KML BalloonStyle describes how to render a description balloon for KML placemarks. Parse these from KML files, and display them in the application. Balloons should render similarly in both 2D and 3D modes.

We could potentially display the balloon content in the feature info window. Consider what approach makes the most sense for OpenSphere.

Switch to new type inference algorithm in compiler

The Closure Compiler has a new type inference algorithm that produces warnings that arguably should be produced by the old algorithm but are not. We would like to switch to that new algorithm, but it is going to take going through the code and cleaning up many, many new warnings that the compiler produces with that option.

As an example, NTI (as referred to by the compiler project) would have prevented #45 from occurring in the first place. This particular issue was also opened with the compiler at google/closure-compiler#2783.

file plugin example tests fail

19 01 2018 18:13:08.612:INFO [karma]: Karma v1.7.1 server started at http://0.0.0.0:9876/
19 01 2018 18:13:08.612:INFO [launcher]: Launching browsers ChromeHeadless, FirefoxHeadless with unlimited concurrency
19 01 2018 18:13:08.619:INFO [launcher]: Starting browser ChromeHeadless
19 01 2018 18:13:08.638:INFO [launcher]: Starting browser FirefoxHeadless
19 01 2018 18:13:09.341:INFO [HeadlessChrome 0.0.0 (Linux 0.0.0)]: Connected on socket njgPOibhq541csxdAAAA with id 98573298
19 01 2018 18:13:11.843:INFO [Firefox 57.0.0 (Ubuntu 0.0.0)]: Connected on socket jEGrsk_t_2WyF4DoAAAB with id 15672897
...................
HeadlessChrome 0.0.0 (Linux 0.0.0) plugin.georss.GeoRSSTypeMethod should not detect other XML as GeoRSS FAILED
	ReferenceError: typeMethod is not defined
	    at jasmine.Spec.<anonymous> (test/plugin/georss/georsstypemethod.test.js:29:12)
.
HeadlessChrome 0.0.0 (Linux 0.0.0): Executed 21 of 21 (1 FAILED) (1.868 secs / 0.032 secs)
...................
Firefox 57.0.0 (Ubuntu 0.0.0) plugin.georss.GeoRSSTypeMethod should not detect other XML as GeoRSS FAILED
	ReferenceError: typeMethod is not defined in test/plugin/georss/georsstypemethod.test.js (line 29)
	@test/plugin/georss/georsstypemethod.test.js:29:5
	
.
Firefox 57.0.0 (Ubuntu 0.0.0): Executed 21 of 21 (1 FAILED) (0.225 secs / 0.094 secs)
TOTAL: 2 FAILED, 40 SUCCESS

Will submit PR for the missing typeMethod line.

file plugin example unit tests fail on getInstance() for DataManager

I recognise that the guide is a work in progress, and this issue is only intended to provide WIP feedback.

It goes well until we add the data manager part to the plugin.

19 01 2018 21:11:53.775:INFO [HeadlessChrome 0.0.0 (Linux 0.0.0)]: Connected on socket wHGfOQuw0arFcMWmAAAA with id 5191349
19 01 2018 21:11:56.430:INFO [Firefox 57.0.0 (Ubuntu 0.0.0)]: Connected on socket iWpuITgL2omVj8rfAAAB with id 76525060
...................
HeadlessChrome 0.0.0 (Linux 0.0.0) plugin.georss.GeoRSSPlugin should not throw an error on init FAILED
	Expected function not to throw an exception , but it threw Attempted to get a value before settings were loaded!
	Error: Expected function not to throw an exception , but it threw Attempted to get a value before settings were loaded!
	    at jasmine.Spec.<anonymous> (test/plugin/georss/georssplugin.test.js:14:20)
.....
HeadlessChrome 0.0.0 (Linux 0.0.0): Executed 25 of 25 (1 FAILED) (1.391 secs / 0.105 secs)
...................
Firefox 57.0.0 (Ubuntu 0.0.0) plugin.georss.GeoRSSPlugin should not throw an error on init FAILED
	Expected function not to throw an exception , but it threw Attempted to get a value before settings were loaded!
	@test/plugin/georss/georssplugin.test.js:14:5
	
.....
Firefox 57.0.0 (Ubuntu 0.0.0): Executed 25 of 25 (1 FAILED) (0.277 secs / 0.113 secs)

May need some mock?

Error buffering inside a polygon in projections other than EPSG:4326

When the "Buffer Inside" option is enabled while buffering a polygon, errors like this are thrown to the console.

RuntimeError: integer result unrepresentable
    at wasm-function[67]:42
    at wasm-function[98]:318
    at wasm-function[48]:245
    at wasm-function[60]:58
    at wasm-function[608]:18
    at dynCall_iiidd_1 (eval at makeDynCaller (/opensphere-asm/dist/os-wasm.js:1:34425), <anonymous>:4:12)
    at geodesicDirect (eval at new_ (/opensphere-asm/dist/os-wasm.js:1:62583), <anonymous>:10:10)
    at Object.wrapDirect [as geodesicDirect] (/opensphere-asm/dist/os-wasm.js:1:90892)
    at Object.os.geo.jsts.getSplitOffset (/opensphere/src/os/geo/jsts.js:908:22)
    at os.ui.buffer.BufferFormCtrl.getWarningMessage (/opensphere/src/os/ui/buffer/bufferform.js:248:34)

This happens because os.geo.jsts.getSplitOffset expects EPSG:4326, but os.ui.buffer.BufferFormCtrl#getWarningMessage does not ensure that projection. Fix this in the buffer form and add this expectation to the docs for os.geo.jsts.getSplitOffset.

Measure tool has excess bearing precision

The measure tool (range and bearing) has three decimal digits for length, but five for bearing, which seems excessive.

Two or three for both would be more appropriate.

Ellipses and LOBs disappear when the origin is out of sight in 2D mode

In 2D mode, when I draw an ellipse or lob, and zoom in far enough so that I can see part of the ellipse or line but not the origin of a feature, the ellipse/line disappears.

@wallw-bits pointed out this could be tied to forEachFeatureIntersectingExtent in vector.js which does an intersection test with feature.getGeometry

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.