Comments (40)
Started work here starting from a JupyterLab extension cookiecutter: https://github.com/dfreeman06/czml3/tree/gh61_support_jupyterlab with strong assistance from @bollwyvl.
The webpack integrates with the cesium source directly but takes care to keep the various modules loading asynchronously so try and keep the bundles separated. Currently there is a rough wrapper around the Cesium Viewer, Clock, Camera, and CZMLDataSource. But it should not be too much effort to pull in the data sources.
This also is using the main Cesium.d.ts
typings to generate the entity json schema (CZML json spec) which could be used to help address #81.
I would love to get a PR back here so it would be great to get some more eyes on it and find the right path to integrate.
from czml3.
Hi, was playing a bit with this, would like to get the old CesiumWidget up and running again.. Did a test with c137.js and cookiecutter widget, now showing the widget nothing else. https://github.com/petrushy/CesiumWidget3/tree/c137_version
I would however like to transition to the "official" cesium where all steps are reproducable, but c137.js was indeed very smooth to get running.
from czml3.
Hi @astrojuanlu, thanks for reaching out. Sorry to say that I can't share the code, but that said it wasn't very far along. Most of the time spent was in tinkering to try to get cesium building as an ipywidget. Sounds like a webpack-cesium
would make that much easier!
In terms of the widget itself, all that I got working was a proof-of-concept where I made a Python/JavaScript model that stored a single lat/lon/altitude coordinate. Updating that coordinate from python triggered the Cesium API to move the sphere around the earth.
Had I stuck with it, I was picturing adopting the approach that bqplot uses (https://github.com/bloomberg/bqplot), where you create a matching hierarchy of nested Python and JavaScript models. But that idea is as far as I got. Hope that helps a little. Good luck!
from czml3.
... if @jonmmease doesn't beat us to it :)
No risk of that for the foreseeable future
from czml3.
@astrojuanlu It will not change the need to pack it up, or mess with our implementation. The issue is not dependency management, it is trying to load external resources like workers at runtime as if they were compile time assets.
from czml3.
It's open source now, Apache 2.0 licensed:
from czml3.
@astrojuanlu Sounds good, let us know if there's anything on our end that we can do to help.
from czml3.
@dfreeman06 you're a madman
unless the implementation shown is entirely different than the one we looked at the other day, here are some big ticket items to consider:
- replaces the
attrs
parameter system withipywidgets
andtraitlets
- it might be possible to emulate the existing API, but there would be new primitives, as described
- more importantly, it becomes possible to get live data back from cesium (e.g. camera position, selections)
- it might eventually be possible to integrate with other widget-based geometry systems such as pythreejs, jupyter-cadquery and ipyleaflet
- this could be particularly interesting for large datasets, as some of the above already work over the binary buffer system that, at its core, efficiently bridges numpy arrays to the browser
- increases complexity of the build
- there is some dark magic in the
.d.ts
->schema.json
as well as webpack stuff in general - we've been using
doit
to handle these inter-language dependencies
- there is some dark magic in the
- ties more closely to the jupyterlab/lumino stack, but this includes
- retrolab (soon too be
notebook
) - jupyterlite
- retrolab (soon too be
- unlike the RISE work, which has to deal with the very ill-tempered
reveal.js
, modern cesiumjs (~1.90) is very hygenic aside from one window-level global URL, which can be forgiven)- what you're seeing in that screenshot are not iframes, but rather all in-dom, which is what enables properly sharing cameras, etc.
- there is some complexity when rendering the same viewer twice, but we'll be able to figure something out
- confidently upgrading to a new cesium would be a matter of re-solving the js packages and re-building
- what you're seeing in that screenshot are not iframes, but rather all in-dom, which is what enables properly sharing cameras, etc.
from czml3.
This is awesome, thanks a lot @dfreeman06 and @bollwyvl! Happy to review whenever you're ready to submit a PR.
from czml3.
from czml3.
According to this post, it could be necessary to get a webpack of Cesium: jupyterlab/jupyterlab#5566
A new webpack of Cesium will come soon: DigitalArsenal/webpack-cesium#7
from czml3.
Oh wow, Jon Mease already worked on it
from czml3.
Yes, but I could not find where he published his ipywidget. Maybe we can ask him in a chat or by tagging him here?
from czml3.
Hi @jonmmease! We noticed your comment from a couple of years ago about making a Cesium widget. @GorgiAstro found that there will be a new version of webpack-cesium soon. Do you have any code you can share so we can pick up from there and perhaps finish the work? Or do you think we should start from scratch?
from czml3.
@jonmmease @astrojuanlu We have a new build that works great, and will be kept up to date with the latest in core Cesium.
As I am sure you are aware, the packing process is non-trivial, and in our case represents a significant investment to maintain. We are trying to keep it open for community use but have not decided on a licensing model yet.
Would any of the companies represented on this project consider sponsoring the work?
from czml3.
Thanks for chiming in @TJKoury! That's great news.
Would any of the companies represented on this project consider sponsoring the work?
poliastro and czml3 are a community effort, unfortunately the only support we can offer is integrating webpack-cesium in czml3 and try to make it work for a broader audience.
from czml3.
@astrojuanlu Understood. How do you think the community would respond to a 'non-commercial' license?
from czml3.
@TJKoury It's a good question. There are many forms of "non-commercial" licensing, for example what Qt does. If you decide use a copyleft license, we'll have to evaluate how to use it from czml3 (MIT, hence non-copyleft) without infringing the terms (and I might need a lawyer for this...). Other than that, I don't know how that can affect adoption.
from czml3.
Also, we are about to release a commercial package for the library behind Celestrak Orbit Viz.
from czml3.
After some consideration, I think we will probably just release it under MIT and ask for donations.
from czml3.
After some consideration, I think we will probably just release it under MIT and ask for donations.
That's great news :) Let me suggest https://opencollective.com/ for the donations part in case you don't know it. Looking forward for the release
from czml3.
Here it is, C137.js.
Decided to go with CC BY 4.0 as freeware, since source-wise it is already open.
Left some crypto addresses at the bottom if people are feeling generous.
from czml3.
Awesome @TJKoury, thanks a lot! We'll soon try to figure out how to use, if @jonmmease doesn't beat us to it :)
from czml3.
It should be fairly straightforward, use an es6 import
any bundler will take care of the rest. Let me know if you have any issues.
from czml3.
Seems like JupyterLab 3.0 and webpack 5.0 will change some things? See lengthy discussion at jupyterlab/jupyterlab#7468, keyword "Module Federation" https://module-federation.github.io/
from czml3.
I edited the first comment to add some extra information.
from czml3.
That's great news @petrushy ! I think it's pointless to have two widgets, so one option would be that we remove our widget.py
from czml3 and we lend a hand with the maintenance of CesiumWidget3, what do you think?
from czml3.
Thanks for the vote of confidence @petrushy, and make sure to check out our soon-to-be decentralized notebook app, mapshot.app. Still in beta but you get the idea.
from czml3.
@astrojuanlu I am very happy to collaborate on this, the one currently in czml is working but does not fully meet the needs of a widget for other purposes. I am thinking to also add a bit of higher level easy-plotting for quick visualizations.
@TJKoury , sorry I may express myself unclear, I do not see a future using closed source, your package is very nice and the example was a quick confirmation of that, but we need unfortunately to have transparency of the full process of the items that goes into it.
from czml3.
@petrushy No problem! The source is available, itβs just the build process that is proprietary. Seems like this project does not have issues using libraries built with closed-source IDEβs or operating systems, but if this is where you draw the line I understand.
from czml3.
Thanks a lot @TJKoury !
By the way, this discussion is very relevant: jupyter/notebook#6210 basically we are in the same situation as many other extensions. Doing what czml3 does in Classic Notebook is easy, but it turns out that doing it in JupyterLab requires an entirely different set of skills. I added my two cents to that discussion, and it looks like there are some ideas to make tinkering with JupyterLab easier. But if we want this migration to happen in the short term, we will have to bite the bullet and figure out how to do it. Undoubtedly, having c137.js
open sourced makes everything easier.
from czml3.
It's open source now, Apache 2.0 licensed:
Many Thanks!!!
from czml3.
PSA: I'm learning webpack. I might tackle this myself
from czml3.
Inspiration: damianavila/RISE#605
from czml3.
how i contribute
please guide me
from czml3.
Some of those issues are alleviated if you swap out our single-file open source distro, c137.js, for Cesium. We made it in part to deal with the issues you mentioned. You can clone the repo and use the build process with the Cesium code, if you want to customize.
from czml3.
Makes sense, let us know if you have any questions about the parts of the build process you may decide to use.
from czml3.
Looks great!
from czml3.
Related Issues (20)
- Drawing arrows does not seem to work properly HOT 4
- creating partial ellipsoids HOT 1
- PyPi czml3 release is outdated HOT 7
- Label.pixelOffset does not appear to work HOT 2
- I want to have more dynamic demos
- Allow standalone export HOT 7
- Remove Cesium ion runtime dependency in CZMLWidget HOT 1
- Cesium Widget full screen does not behave properly in Jupyter HOT 5
- Widget window grows vertically HOT 1
- IntervalValue does not accept integer or float HOT 2
- PyPi release cycle HOT 3
- Generate code using JSON schema HOT 14
- Removing white space from document output HOT 5
- support for GeoJSON and __geointerface__ HOT 2
- Default branch was renamed to main
- Lack of support for positional references HOT 1
- Position missing arguments for interval HOT 6
- missing polygon arguments and missing polyline arguments HOT 1
- cesium token HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from czml3.