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!
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/NPM
- Python
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
- Point your browser at
dist/opensphere
NPM
If you prefer to use NPM, that's fine too:
- Clone the project
npm install
npm run build
- Point your browser at
dist/opensphere
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.