Git Product home page Git Product logo

opengeoscience / geojs Goto Github PK

View Code? Open in Web Editor NEW
428.0 41.0 78.0 103.02 MB

High-performance visualization and interactive data exploration of scientific and geospatial location aware datasets

Home Page: https://opengeoscience.github.io/geojs

License: Apache License 2.0

Python 0.62% CSS 0.91% JavaScript 92.13% HTML 0.29% GLSL 1.42% Stylus 0.12% Pug 3.76% SCSS 0.27% EJS 0.47%
geovisualization scientific-visualization infovis opensource high-performance javascript gis performance-visualization kitware opengeoscience

geojs's Introduction

GeoJS

Build Status codecov.io DOI npm published version Gitter

GeoJS is intended to bridge the gap between GIS, Scientific Visualization, and Infovis. GeoJS is more than just a GIS library as users can create scientific plots such as vector and contour and can embed infovis plots using D3.js. GeoJS aims for high-performance visualization and interactive data exploration of scientific and geospatial location aware datasets.

GeoJS supports features such as Point, Line, Polygon, and advanced features such as Pixelmap, Contour, Heatmap, and Choropleth.

GeoJS can read and render data from GeoJSON files, and WMS servers. Additional features includes Annotations, Legends, Animated Transitions, and Widgets.

GeoJS can also be used for visualizing medical imagery. See Digital Slide Archive for an example.

Examples

For live examples visit Github.io

Historical hurricane data Visualization in GeoJS

Documentation

You can find more information on GeoJS installation and usage in our Documentation.

There are some additional resources:

Support

We would love to get your feedback and bug reports. Please use GitHub issues.

Get Involved

We are open for collaboration. Kitware has been doing open source development for the last 20 year and understands and appreciates what it takes to develop open source software.

Related Efforts

GeoJS has been used in various Girder based applications such as Dansfield-App and DIVE.

geojs's People

Contributors

aashish24 avatar bitdeli-chef avatar bradking avatar brianhelba avatar bryonlewis avatar cjh1 avatar danlamanna avatar dcjohnston avatar dependabot[bot] avatar dkosmari avatar firefishy avatar jamesscottbrown avatar jbeezley avatar jeffbaumes avatar jourdain avatar manthey avatar marysalvi avatar matthewma7 avatar sankhesh avatar waxlamp avatar wendelbsilva avatar wphicks avatar zachmullen 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

geojs's Issues

Fix initialization issues

We treated _init method kind of special which I didn't really like since it could cause confusions to the developers. Also, along with it fixed some other bugs.

Remove src/core/data.js from the build

This is a fairly big file to put into the javascript source. If it is needed somewhere, I would suggest we include it as a separate json file and load it on demand.

Need an exposed method in the api for converting coordinates

At the moment, there is a function in the renderer class worldToDisplay. In my mind, this should convert from latitude/longitude into display pixel coordinates; however, it seems to be converting from GCS (mercator, for the currently implemented OSM base layer) to pixel coordinates. For the pointFeature class, the code performs the world to GCS conversion on call to positions, which is opaque to both the user and the renderer. I think makes more sense to have renderer.worldToDisplay moved to renderer.gcsToDisplay, unless I am misunderstanding something.

I understand the need to have coordinates used in features stored internally in GCS coordinates (i.e. making it possible to make shapes) as it is now, but for external layers, like the GRITS jquery plugin I am making, it makes adding geocoded features difficult.

Initial documentation

README.md, LICENSE, etc. missing. Also gh-pages branch is just using a GitHub template right now.

Adding event handling infrastructure in geo.object

In this commit 7325742, I have add a jQuery like interface for binding and triggering events. The idea is that classes will interact with each other like this (for example panning in the layer class)

this.map().on(geo.event.pan, function (arg) {
  if (arg.layer !== this) {
    this.trigger(geo.event.pan, arg);
  }
});
this.on(geo.event.pan, function (arg) {

  // layer specific implementation here

  this.map().trigger(geo.event.pan, arg);
});

The only problem is that this kind of propagation through the tree will have to be coded for every event type. I'm wondering if it might be useful to add standard parent/children attributes to the object, then the map would copy its layers into children and layer would put the map in parent and the renderer in children, etc. This way we could implement this generically in geo.object. Also, we would want to bind the triggerer to this in the handler to prevent circular propagation. What does everyone think?

There are other features that could be implemented as well like namespacing of handlers, but I think that could be added later if needed.

Trigger mouseup when mouse leaves the view

This would eliminate the problem of dragging outside the view and releasing the mouse. That action currently drops the mouseup and will continue the drag or zoom movement when the user's mouse hovers back into the view.

Switch OpenStreetMap layers so pixel perfect in the center of the zoom level

Currently seems to only be pixel perfect at the fully zoomed out threshold for a layer, so the layer is always super-sampled, which can get bad-looking just before another layer appears when zooming in. Seems a better default would be to start with a subsampled layer, move to pixel perfect, then supersample for the remaining half of the level while zooming in. There could be a parameter that adjusts where the pixel-perfect level is reached (e.g. have a 0 to 1 continuous setting where 0 = always subsample, 1 = always supersample, and the default is 0.5).

Create macro for getters and setters

Currently we do this:

foo.setBar(10);
foo.setLength(20);
foo.bar()

Instead we want to do this:
foo.bar(10).length(20);

But we don't want to write each function where we would have to check
for the argument.

Add mousewheel support

Let the user zoom on mousewheel. This might be an option that can be turned off in case the map is part of a page that can be scrolled.

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.