GithubHelp home page GithubHelp logo

poliastro / czml3 Goto Github PK

View Code? Open in Web Editor NEW
36.0 7.0 31.0 1.22 MB

Python 3 library to write CZML

Home Page: https://pypi.org/project/czml3/

License: MIT License

Python 100.00%
czml orbital-simulation python python3

czml3's Introduction

Name

czml3

Authors

Juan Luis Cano Rodríguez, Eleftheria Chatziargyriou

circleci codecov license Join the chat at https://openastronomy.riot.im/#/room/#poliastro-czml:matrix.org

czml3 is a Python library to write CZML.

What is CZML?

From the official CZML Guide:

CZML is a JSON format for describing a time-dynamic graphical scene, primarily for display in a web browser running Cesium. It describes lines, points, billboards, models, and other graphical primitives, and specifies how they change with time. While Cesium has a rich client-side API, CZML allows it to be data-driven so that a generic Cesium viewer can display a rich scene without the need for any custom code.

Installation

You can install czml3 using pip:

$ pip install czml3

or conda:

$ conda install czml3 --channel conda-forge

czml3 requires Python >= 3.7.

Examples

A CZML document is a list of packets, which have several properties. When using czml3 in an interactive interpreter, all objects show as nice CZML (JSON):

>>> from czml3 import Packet
>>> print(Packet())
{
    "id": "adae4d3a-7087-4fda-a70b-d18a262a890e"
}
>>> packet0 = Packet(id="Facility/AGI", name="AGI")
>>> print(packet0)
{
    "id": "Facility/AGI",
    "name": "AGI"
}
>>> packet0.dumps()
'{"id": "Facility/AGI", "name": "AGI"}'

And there are more complex examples available:

>>> from czml3.examples import simple
>>> print(simple)
[
    {
        "id": "document",
        "version": "1.0",
        "name": "simple",
        "clock": {
            "interval": "2012-03-15T10:00:00Z/2012-03-16T10:00:00Z",
            "currentTime": "2012-03-15T10:00:00Z",
            "multiplier": 60,
            "range": "LOOP_STOP",
            "step": "SYSTEM_CLOCK_MULTIPLIER"
        }
    },
...

Jupyter widget

You can easily display your CZML document using our interactive widget:

In [1]: from czml3.examples import simple

In [2]: from czml3.widget import CZMLWidget

In [3]: CZMLWidget(simple)

And this would be the result:

image

Support

Join the chat at https://openastronomy.riot.im/#/room/#poliastro-czml:matrix.org

If you find any issue on czml3 or have questions, please open an issue on our repository and join our chat!

Contributing

You want to contribute? Awesome! There are lots of CZML properties that we still did not implement. Also, it would be great to have better validation, a Cesium widget in Jupyter notebook and JupyterLab... Ideas welcome!

We recommend this GitHub workflow to fork the repository. To run the tests, use tox:

$ tox

Before you send us a pull request, remember to reformat all the code:

$ tox -e reformat

This will apply black, isort, and lots of love ❤️

License

license

czml3 is released under the MIT license, hence allowing commercial use of the library. Please refer to the LICENSE file.

czml3's People

Contributors

astrojuanlu avatar gorgiastro avatar idanmiara avatar mixxen avatar mwarnick123 avatar rengrub avatar sedictious 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

czml3's Issues

Make get_color more robust

  • If given a Color, return a Color
  • If given a tuple, convert to list
  • If the tuple contains things that resemble integers (i.e. numpy integers) do not crash

Default branch was renamed to main

For more info: https://github.com/github/renaming

I know this is controversial, and nobody asked for it (yet). Still, I went ahead and unilaterally made the change, to avoid more pain in the future.

This issue is just to notify everyone, please adjust your local environments accordingly:

git branch -m master main
git fetch origin
git branch -u origin/main main

Regardless of whether I like this or not, (1) it's a debate that is not going away, and it will hit every project sooner or later, and (2) I will keep doing things I consider are important and impactful to make the tech industry and the open source universe more welcoming to others, as I've been doing for almost a decade now, and encourage others to do the same.

The open source universe has a diversity, inclusion and representation problem, and we have the moral obligation to fix it. This is just a baby step in that direction. The battle doesn't end here.

Drawing arrows does not seem to work properly

I may be trying to accomplish this improperly:

Packet(
           id="Arrow/Arrow-" + str(uuid.uuid4()),
           name="Arrow",
           polyline=Polyline(
               positions=positions,
               material=PolylineArrowMaterial(color=Color(rgba=[200, 100, 30, 255])),
               arcType="NONE",
               width=width
           )
       )

image

Implement equality

>>> from czml3.properties import Color
>>> Color()
{}
>>> Color() == Color()
False

Should it be based on the representation, or the properties?

Fix inertial transformation

(Asked in the Cesium forum)

When enabling the icrf function on the JavaScript side implemented here:

// To have an inertial (ICRF) view
function icrf(scene, time) {{
var icrfToFixed = Cesium.Transforms.computeIcrfToFixedMatrix(time);
if (Cesium.defined(icrfToFixed)) {{
var camera = viewer.camera;
var offset = Cesium.Cartesian3.clone(camera.position);
var transform = Cesium.Matrix4.fromRotationTranslation(icrfToFixed);
camera.lookAtTransform(transform, offset);
}}
}}
// Temporarily disable inertial view
// until we make it work with 2D Mercator view
// and fix the zoom sensitivity, see
// https://groups.google.com/d/msg/cesium-dev/vuXmepd4T2E/i71tq2I8EAAJ
// viewer.scene.postUpdate.addEventListener(icrf);

There are some strange effects when rotating the view or switching to 2D. We should try to fix those.

Packet does not expect property Point

When trying to reproduce this example:

https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Apps/Sandcastle/gallery/CZML%20Point.html

I get an error:

>>> from czml3 import Packet
>>> Packet(point=...)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: __init__() got an unexpected keyword argument 'point'

because in #25 we forgot to add point to the list of expected properties:

czml3/src/czml3/core.py

Lines 39 to 71 in afe4b83

class Packet(BaseCZMLObject):
"""A CZML Packet.
See https://github.com/AnalyticalGraphicsInc/czml-writer/wiki/Packet
for further information.
"""
# https://github.com/AnalyticalGraphicsInc/czml-writer/wiki/Packet
KNOWN_PROPERTIES = [
"id",
"delete",
"name",
"parent",
"description",
"availability",
"properties",
"position",
"orientation",
"viewFrom",
"billboard",
"box",
"corridor",
"cylinder",
"ellipse",
"ellipsoid",
"label",
"model",
"path",
"polygon",
"polyline",
"rectangle",
"wall",
]

Limit multiple inheritance to mixins?

The classes DeletableProperty and InterpolatableProperty define an initializer as well, and therefore need the super() magic to call all the classes in the hierarchy. Apart from producing python/mypy#5887, it complicates the code, so it would be nice to find an alternative.

Lack of support for positional references

Support is necessary for positional references...

`
polyline":{
...
"arcType":"NONE",
"positions":{
"references":[
"Facility/AGI#position","Satellite/ISS#position"
]
}

`
Position constructor doesn't accept "references" attribute. This comes from the CZML simple example from the sandcastle that is the basis for your "simple" example.

Add CI

Good opportunity to try Azure pipelines? Or perhaps just Circle CI

Work after switching to attrs

(Copied from #44)

This already passes all the tests locally.

Things that will have to be reworked:

  • Shortcuts, converters

Things I removed and I'd like to bring back:

  • Docstrings

Things I'd like to review:

  • Defaults (we should probably be using default=None everywhere)
  • isinstance (we are inconsistently using positive and negative checks)
  • Validation (we use __attrs_post_init__ but we could use @x.validator instead http://www.attrs.org/en/stable/init.html#decorator)
  • Mixins (are they necessary?)
  • KNOWN_PROPERTIES (can I iterate over attrs properties now instead?)
  • Enumerations (including missing StripeOrientationValue)

Things I'd like to add in the future:

Removing white space from document output

First, thank you for this awesome library. My project wouldn't be anywhere near what it is without it.

Is there a good way to remove white space from the document? I found a way to do it, but I feel like it's inefficient/has extra steps.
output = json.dumps(json.loads(str(Document([top] + packets))), separators=(',', ':'))

Removing white space turns a 24MB CZML file into a 9MB CZML file.

Add version to czml3

The czml3 package doesn't have a version. I propose Semantic Versioning: major.minor.patch.

Further, what should the current version be? 1.0.0 probably makes the most sense as it seems like czml3 is very much out of beta testing.

I'll do a PR once a decision has been made.

Support JupyterLab

Edit: See current status in this comment.

At the moment, czml3.widget.CZMLWidget has a straightforward _repr_html_ that prints some HTML. However, this is not how custom widgets are supposed to be implemented [citation needed]

We should write our own custom Jupyter widget so it's compatible, at least, with modern JupyterLab.

Edit: Adding more information to this description for completeness

Rather than a JupyterLab extension, if I understand correctly we would need to create a custom Jupyter widget. Therefore, we should be using either https://github.com/jupyter-widgets/widget-cookiecutter (JavaScript, barebones) or https://github.com/jupyter-widgets/widget-ts-cookiecutter (TypeScript + bells & whistles), which are described in https://ipywidgets.readthedocs.io/en/latest/examples/Widget%20Low%20Level.html

However, we should wait for the TypeScript one to be updated: jupyter-widgets/widget-ts-cookiecutter#83

These cookiecutters already make use of https://github.com/jupyter/jupyter-packaging.

For inspiration, we could also have a look at https://github.com/bloomberg/bqplot, https://github.com/jovyan/pythreejs, https://github.com/ellisonbg/ipyleaflet or https://github.com/matplotlib/ipympl.

With this and https://www.npmjs.com/package/c137.js shared by @TJKoury above, we should have everything we need already.

IntervalValue does not accept integer or float

I seem to be unable to insert values other than booleans into an IntervalValue, defined within types.py

I essentially run into this error upon hitting the following function:

    obj_dict.update(**self._value.to_json())

AttributeError: 'int' object has no attribute 'to_json'

And another exception occurs as well

    key = TYPE_MAPPING[type(self._value)]

KeyError: <class 'int'>

This is interesting because I am inserting a number '1' as the value, and json.dumps works on that number.

Now i noticed that TYPE_MAPPING is a dictionary defined at the top.

TYPE_MAPPING = {bool: "boolean"}

Obviously to circumvent the error, all one needs to do is insert the keys for int and/or float

Now my question is, is my integer and float type meant to fail? Does Cesium's interval values not accept intervalvalues of numbers apart from boolean values?

I am trying to create a time-varying width of polylines using the IntervalValues, considering that IntervalValues can accept BooleanValues. I would like to vary the width of the polylines between 1-5 dependent on another parameter in my simulation.

I am using Spyder 4.1.4, Python 3.7,7, My operating system is windows 10.

Here is the class in question

@attr.s(repr=False, frozen=True, kw_only=True)
class IntervalValue(BaseCZMLObject):
    """Value over some interval."""

    _start = attr.ib()
    _end = attr.ib()
    _value = attr.ib()

    def to_json(self):
        obj_dict = {"interval": TimeInterval(start=self._start, end=self._end)}

        try:
            obj_dict.update(**self._value.to_json())
        except AttributeError:
            key = TYPE_MAPPING[type(self._value)]
            obj_dict[key] = self._value

        return obj_dict

Expand README

  • What is CZML? And some examples
  • Add CI badges (see #1)
  • Installation instructions
  • Roadmap
  • Contributor guide / Developer docs

czml3 is looking for new maintainers

Full context: poliastro/poliastro#1640

I don't see the need to archive czml3, we can transition that project.

There's a pending release and a couple of pull requests that need merging. Are there any volunteers to move this project forward?

Please explain your motivation, how you are currently using czml3, and what do you intend to do with it in the future.

Remove Cesium ion runtime dependency in CZMLWidget

Currently CZMLWidget uses the default Cesium Ion token. With every release of Cesium the old token will be invalidated, breaking old notebooks [citation needed](see CesiumGS/cesium#8433 (comment)). Afaik this token is only required to be able to access the imagery for the basemap via Cesium Ion.

Example notebook Binder
screenshot:
Screenshot_2019-12-12 poliastro_issue817 - Jupyter Notebook

possibles fixes

  • option A: find a new, "long-term" reliable source for hosting the basemaps
  • option B: provide a static basemap
  • something else?

Related issues

Support cartographicDegrees in Position

Interestingly, PositionList supports it:

@property
def cartographicDegrees(self):
"""The list of positions specified in Cartographic WGS84 coordinates, [Longitude, Latitude, Height, Longitude,
Latitude, Height, ...], where Longitude and Latitude are in degrees and Height is in meters."""
return self._cartographic_degrees

However, Position doesn't.

cesium token

I am trying to use my own cesium token. However, it does not seem to work. I am new to Cesium. Any advice? Thanks.

image

Label.pixelOffset does not appear to work

I am unable to get Label.pixelOffset to work with a list of x/y values.
I would expect it to work like this:
label=Label(pixelOffset=[5,5])

but instead I can only make it work like this:
label=Label( pixelOffset=dict([("cartesian2", [5, 5])]) )

PyPi czml3 release is outdated

Please push a new version to PyPi. We want to obtain new changes in the master branch with pip. I can help with this if you give me access. Thanks.

Testing of poliastro failed with test_czml_add_orbit.py and test_ground_station.py

I'm running poliastro ver. 0.13.0 on an iMacPro running Mac OS X ver. 10.14.6 under Python 3.7.3. In running the test,

python -c "import poliastro.testing; poliastro.testing.test()

I get error messages concerning test_czml_add_orbit and test_ground_station. I'm testing poliastro with the setup.cfg file in the anaconda3 directory disabled (i.e., renamed so as not to be used). czml3 was installed.

The output from the test is contained in the attached file.

Please advise.

Sam Dupree.

poliastro_test_23-Aug-2019.txt

PyPi release cycle

I see that the last release, 0.5.3, was about 10 months ago.
Since then there were many additions and fixes to Master.
Would you please release a new version into PyPi occasionally?
Thanks!

Cesium Widget full screen does not behave properly in Jupyter

🐞 Problem

Cesium widget has a full-scree button in the lower right hand corner. Pressing it should make the window go full screen, however it has a different behavior. It seems that it makes the entire Jupyter notebook full screen and sets the background outside of the notebook to be the same as a the widget. Screenshot below:

full screen cesium widget doesn't work in browser

🖥 Please paste the output of following commands
Observed on both Chrome Version 80.0.3987.163 (Official Build) (64-bit) and Opera v67.0.3575.115 on Windows 10 Version 1909.

  • conda info -a (only if you have conda)
(poliastroprereqs-nopresintalled) C:\Users\IMDes>conda info -a

     active environment : poliastroprereqs-nopresintalled
    active env location : C:\Users\IMDes\Anaconda3\envs\poliastroprereqs-nopresintalled
            shell level : 1
       user config file : C:\Users\IMDes\.condarc
 populated config files : C:\Users\IMDes\.condarc
          conda version : 4.8.2
    conda-build version : 3.18.9
         python version : 3.7.4.final.0
       virtual packages : __cuda=10.2
       base environment : C:\Users\IMDes\Anaconda3  (writable)
           channel URLs : https://repo.anaconda.com/pkgs/main/win-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/win-64
                          https://repo.anaconda.com/pkgs/r/noarch
                          https://repo.anaconda.com/pkgs/msys2/win-64
                          https://repo.anaconda.com/pkgs/msys2/noarch
          package cache : C:\Users\IMDes\Anaconda3\pkgs
                          C:\Users\IMDes\.conda\pkgs
                          C:\Users\IMDes\AppData\Local\conda\conda\pkgs
       envs directories : C:\Users\IMDes\Anaconda3\envs
                          C:\Users\IMDes\.conda\envs
                          C:\Users\IMDes\AppData\Local\conda\conda\envs
               platform : win-64
             user-agent : conda/4.8.2 requests/2.22.0 CPython/3.7.4 Windows/10 Windows/10.0.18362
          administrator : False
             netrc file : None
           offline mode : False

# conda environments:
#
base                     C:\Users\IMDes\Anaconda3
calc.py                  C:\Users\IMDes\Anaconda3\envs\calc.py
lowthrustsim             C:\Users\IMDes\Anaconda3\envs\lowthrustsim
plasmapydev              C:\Users\IMDes\Anaconda3\envs\plasmapydev
poliastropreinstalled     C:\Users\IMDes\Anaconda3\envs\poliastropreinstalled
poliastroprereqs-nopresintalled  *  C:\Users\IMDes\Anaconda3\envs\poliastroprereqs-nopresintalled

sys.version: 3.7.4 (default, Aug  9 2019, 18:34:13) [...
sys.prefix: C:\Users\IMDes\Anaconda3
sys.executable: C:\Users\IMDes\Anaconda3\python.exe
conda location: C:\Users\IMDes\Anaconda3\lib\site-packages\conda
conda-build: C:\Users\IMDes\Anaconda3\Scripts\conda-build.exe
conda-convert: C:\Users\IMDes\Anaconda3\Scripts\conda-convert.exe
conda-debug: C:\Users\IMDes\Anaconda3\Scripts\conda-debug.exe
conda-develop: C:\Users\IMDes\Anaconda3\Scripts\conda-develop.exe
conda-env: C:\Users\IMDes\Anaconda3\Scripts\conda-env.exe
conda-index: C:\Users\IMDes\Anaconda3\Scripts\conda-index.exe
conda-inspect: C:\Users\IMDes\Anaconda3\Scripts\conda-inspect.exe
conda-metapackage: C:\Users\IMDes\Anaconda3\Scripts\conda-metapackage.exe
conda-render: C:\Users\IMDes\Anaconda3\Scripts\conda-render.exe
conda-server: C:\Users\IMDes\Anaconda3\Scripts\conda-server.exe
conda-skeleton: C:\Users\IMDes\Anaconda3\Scripts\conda-skeleton.exe
conda-verify: C:\Users\IMDes\Anaconda3\Scripts\conda-verify.exe
user site dirs:

AF_PATH: C:\Program Files\ArrayFire\v3
CIO_TEST: <not set>
CONDA_DEFAULT_ENV: poliastroprereqs-nopresintalled
CONDA_EXE: C:\Users\IMDes\Anaconda3\condabin\..\Scripts\conda.exe
CONDA_EXES: "C:\Users\IMDes\Anaconda3\condabin\..\Scripts\conda.exe"
CONDA_PREFIX: C:\Users\IMDes\Anaconda3\envs\poliastroprereqs-nopresintalled
CONDA_PROMPT_MODIFIER: (poliastroprereqs-nopresintalled)
CONDA_PYTHON_EXE: C:\Users\IMDes\Anaconda3\python.exe
CONDA_ROOT: C:\Users\IMDes\Anaconda3
CONDA_SHLVL: 1
CUDA_PATH: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2
GOPATH: C:\Users\IMDes\go
HOMEPATH: \Users\IMDes
NVTOOLSEXT_PATH: C:\Program Files\NVIDIA Corporation\NvToolsExt\
PATH: C:\Users\IMDes\Anaconda3;C:\Users\IMDes\Anaconda3\Library\mingw-w64\bin;C:\Users\IMDes\Anaconda3\Library\usr\bin;C:\Users\IMDes\Anaconda3\Library\bin;C:\Users\IMDes\Anaconda3\Scripts;C:\Users\IMDes\Anaconda3\bin;C:\Users\IMDes\Anaconda3\envs\poliastroprereqs-nopresintalled;C:\Users\IMDes\Anaconda3\envs\poliastroprereqs-nopresintalled\Library\mingw-w64\bin;C:\Users\IMDes\Anaconda3\envs\poliastroprereqs-nopresintalled\Library\usr\bin;C:\Users\IMDes\Anaconda3\envs\poliastroprereqs-nopresintalled\Library\bin;C:\Users\IMDes\Anaconda3\envs\poliastroprereqs-nopresintalled\Scripts;C:\Users\IMDes\Anaconda3\envs\poliastroprereqs-nopresintalled\bin;C:\Users\IMDes\Anaconda3\condabin;C:\Users\IMDes\Anaconda3;C:\Users\IMDes\Anaconda3\Library\mingw-w64\bin;C:\Users\IMDes\Anaconda3\Library\usr\bin;C:\Users\IMDes\Anaconda3\Library\bin;C:\Users\IMDes\Anaconda3\Scripts;C:\Python27;C:\Python27\Scripts;C:\Program Files\Haskell\bin;C:\Program Files\Haskell Platform\8.6.5\lib\extralibs\bin;C:\Program Files\Haskell Platform\8.6.5\bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\libnvvp;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\iCLS;C:\Program Files\Intel\Intel(R) Management Engine Components\iCLS;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\Program Files (x86)\Wolfram Research\WolframScript;C:\Program Files\Intel\WiFi\bin;C:\Program Files\Common Files\Intel\WirelessCommon;C:\WINDOWS\System32\OpenSSH;C:\Program Files\MATLAB\R2019b\bin;C:\TDM-GCC-64\bin;C:\Program Files\Microsoft SQL Server\120\Tools\Binn;C:\Program Files\PuTTY;C:\Program Files\NVIDIA Corporation\Nsight Compute 2019.5.0;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files\Haskell Platform\8.6.5\mingw\bin;C:\Program Files\nodejs;C:\ProgramData\chocolatey\bin;C:\Program Files\Git\cmd;C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\usr\bin;C:\Program Files\CMake\bin;C:\Go\bin;C:\Gcc64\bin;C:\Users\IMDes\AppData\Roaming\cabal\bin;C:\Users\IMDes\AppData\Roaming\local\bin;C:\Users\IMDes\.cargo\bin;C:\Users\IMDes\AppData\Local\Microsoft\WindowsApps;C:\Users\IMDes\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\IMDes\AppData\Local\GitHubDesktop\bin;C:\Program Files\ArrayFire\v3\lib;C:\Users\IMDes\AppData\Local\Programs\MiKTeX 2.9\miktex\bin\x64;C:\Program Files\JetBrains\PyCharm 2019.3.1\bin;.;C:\Users\IMDes\AppData\Roaming\npm;C:\Users\IMDes\AppData\Local\Box\Box Edit;C:\Users\IMDes\go\bin
PSMODULEPATH: C:\Program Files\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules
REQUESTS_CA_BUNDLE: <not set>
SSL_CERT_FILE: <not set>
VBOX_MSI_INSTALL_PATH: C:\Program Files\Oracle\VirtualBox\
  • conda list (only if you have conda)
(poliastroprereqs-nopresintalled) C:\Users\IMDes>conda list
# packages in environment at C:\Users\IMDes\Anaconda3\envs\poliastroprereqs-nopresintalled:
#
# Name                    Version                   Build  Channel
appdirs                   1.4.3                    pypi_0    pypi
asn1crypto                1.3.0                    py38_0
astropy                   4.0                      pypi_0    pypi
astroquery                0.4                      pypi_0    pypi
atomicwrites              1.3.0                      py_0
attrs                     19.3.0                     py_0
backcall                  0.1.0                    py38_0
beautifulsoup4            4.8.2                    pypi_0    pypi
blas                      1.0                         mkl
bleach                    3.1.0                      py_0
ca-certificates           2020.1.1                      0
certifi                   2019.11.28               py38_1
cffi                      1.14.0           py38h7a1dbc1_0
chardet                   3.0.4                 py38_1003
colorama                  0.4.3                      py_0
console_shortcut          0.1.1                         4
cryptography              2.8              py38h7a1dbc1_0
cycler                    0.10.0                   py38_0
czml3                     0.5.3                    pypi_0    pypi
decorator                 4.4.2                      py_0
defusedxml                0.6.0                      py_0
distlib                   0.3.0                    pypi_0    pypi
entrypoints               0.3                      py38_0
filelock                  3.0.12                   pypi_0    pypi
freetype                  2.9.1                ha9979f8_1
html5lib                  1.0.1                    pypi_0    pypi
icc_rt                    2019.0.0             h0cc432a_1
icu                       58.2                 ha66f8fd_1
idna                      2.9                        py_1
importlib_metadata        1.5.0                    py38_0
intel-openmp              2020.0                      166
ipykernel                 5.1.4            py38h39e3cac_0
ipython                   7.13.0           py38h5ca1d4c_0
ipython_genutils          0.2.0                    py38_0
jedi                      0.16.0                   py38_0
jinja2                    2.11.1                     py_0
jpeg                      9b                   hb83a4c4_2
json5                     0.9.4                      py_0
jsonschema                3.2.0                    py38_0
jupyter_client            5.3.4                    py38_0
jupyter_core              4.6.1                    py38_0
jupyterlab                1.2.6              pyhf63ae98_0
jupyterlab_server         1.1.0                      py_0
keyring                   21.1.1                   pypi_0    pypi
kiwisolver                1.0.1            py38ha925a31_0
libpng                    1.6.37               h2a8f88b_0
libsodium                 1.0.16               h9d3ae62_0
llvmlite                  0.31.0           py38ha925a31_0
m2w64-gcc-libgfortran     5.3.0                         6
m2w64-gcc-libs            5.3.0                         7
m2w64-gcc-libs-core       5.3.0                         7
m2w64-gmp                 6.1.0                         2
m2w64-libwinpthread-git   5.0.0.4634.697f757               2
markupsafe                1.1.1            py38he774522_0
matplotlib                3.1.3                    py38_0
matplotlib-base           3.1.3            py38h64f37c6_0
mistune                   0.8.4           py38he774522_1000
mkl                       2020.0                      166
mkl-service               2.3.0            py38hb782905_0
mkl_fft                   1.0.15           py38h14836fe_0
mkl_random                1.1.0            py38hf9181ef_0
more-itertools            8.2.0                      py_0
msys2-conda-epoch         20160418                      1
nbconvert                 5.6.1                    py38_0
nbformat                  5.0.4                      py_0
notebook                  6.0.3                    py38_0
numba                     0.48.0           py38h47e9c7a_0
numpy                     1.18.1                   pypi_0    pypi
numpy-base                1.18.1           py38hc3f5095_1
openssl                   1.1.1f               he774522_0
packaging                 20.3                       py_0
pandas                    1.0.1            py38h47e9c7a_0
pandoc                    2.2.3.2                       0
pandocfilters             1.4.2                    py38_1
parso                     0.6.1                      py_0
pickleshare               0.7.5                 py38_1000
pip                       20.0.2                   py38_1
plotly                    4.5.2                      py_0
pluggy                    0.13.1                   py38_0
prometheus_client         0.7.1                      py_0
prompt_toolkit            3.0.3                      py_0
py                        1.8.1                      py_0
pycparser                 2.20                       py_0
pygments                  2.5.2                      py_0
pyopenssl                 19.1.0                   py38_0
pyparsing                 2.4.6                      py_0
pyqt                      5.9.2            py38ha925a31_4
pyrsistent                0.15.7           py38he774522_0
pysocks                   1.7.1                    py38_0
pytest                    5.3.5                    py38_0
python                    3.8.1           h5fd99cc_8_cpython
python-dateutil           2.8.1                      py_0
pytz                      2019.3                     py_0
pywin32                   227              py38he774522_1
pywin32-ctypes            0.2.0                    pypi_0    pypi
pywinpty                  0.5.7                    py38_0
pyzmq                     18.1.1           py38ha925a31_0
qt                        5.9.7            vc14h73c81de_0
qtconsole                 4.7.1                      py_0
qtpy                      1.9.0                      py_0
requests                  2.23.0                   py38_0
retrying                  1.3.3                      py_2
scipy                     1.4.1            py38h9439919_0
send2trash                1.5.0                    py38_0
setuptools                46.0.0                   py38_0
sip                       4.19.13          py38ha925a31_0
six                       1.14.0                   py38_0
soupsieve                 2.0                      pypi_0    pypi
sqlite                    3.31.1               he774522_0
tbb                       2020.0               h74a9793_0
terminado                 0.8.3                    py38_0
testpath                  0.4.4                      py_0
toml                      0.10.0                   pypi_0    pypi
tornado                   6.0.4            py38he774522_1
tox                       3.14.6                   pypi_0    pypi
traitlets                 4.3.3                    py38_0
urllib3                   1.25.8                   py38_0
vc                        14.1                 h0510ff6_4
virtualenv                20.0.14                  pypi_0    pypi
vs2015_runtime            14.16.27012          hf0eaf9b_1
w3lib                     1.21.0                   pypi_0    pypi
wcwidth                   0.1.8                      py_0
webencodings              0.5.1                    py38_1
wheel                     0.34.2                   py38_0
win_inet_pton             1.1.0                    py38_0
wincertstore              0.2                      py38_0
winpty                    0.4.3                         4
zeromq                    4.3.1                h33f27b4_3
zipp                      2.2.0                      py_0
zlib                      1.2.11               h62dcd97_3
  • pip freeze
(poliastroprereqs-nopresintalled) C:\Users\IMDes>pip freeze
appdirs==1.4.3
asn1crypto==1.3.0
astropy==4.0
astroquery==0.4
atomicwrites==1.3.0
attrs==19.3.0
backcall==0.1.0
beautifulsoup4==4.8.2
bleach==3.1.0
certifi==2019.11.28
cffi==1.14.0
chardet==3.0.4
colorama==0.4.3
cryptography==2.8
cycler==0.10.0
czml3==0.5.3
decorator==4.4.2
defusedxml==0.6.0
distlib==0.3.0
entrypoints==0.3
filelock==3.0.12
html5lib==1.0.1
idna==2.9
importlib-metadata==1.5.0
ipykernel==5.1.4
ipython==7.13.0
ipython-genutils==0.2.0
jedi==0.16.0
Jinja2==2.11.1
json5==0.9.4
jsonschema==3.2.0
jupyter-client==5.3.4
jupyter-core==4.6.1
jupyterlab==1.2.6
jupyterlab-server==1.1.0
keyring==21.1.1
kiwisolver==1.0.1
llvmlite==0.31.0
MarkupSafe==1.1.1
matplotlib==3.1.3
mistune==0.8.4
mkl-fft==1.0.15
mkl-random==1.1.0
mkl-service==2.3.0
more-itertools==8.2.0
nbconvert==5.6.1
nbformat==5.0.4
notebook==6.0.3
numba==0.48.0
numpy==1.18.1
packaging==20.3
pandas==1.0.1
pandocfilters==1.4.2
parso==0.6.1
pickleshare==0.7.5
plotly==4.5.2
pluggy==0.13.1
prometheus-client==0.7.1
prompt-toolkit==3.0.3
py==1.8.1
pycparser==2.20
Pygments==2.5.2
pyOpenSSL==19.1.0
pyparsing==2.4.6
pyrsistent==0.15.7
PySocks==1.7.1
pytest==5.3.5
python-dateutil==2.8.1
pytz==2019.3
pywin32==227
pywin32-ctypes==0.2.0
pywinpty==0.5.7
pyzmq==18.1.1
qtconsole==4.7.1
QtPy==1.9.0
requests==2.23.0
retrying==1.3.3
scipy==1.4.1
Send2Trash==1.5.0
sip==4.19.13
six==1.14.0
soupsieve==2.0
terminado==0.8.3
testpath==0.4.4
toml==0.10.0
tornado==6.0.4
tox==3.14.6
traitlets==4.3.3
urllib3==1.25.8
virtualenv==20.0.14
w3lib==1.21.0
wcwidth==0.1.8
webencodings==0.5.1
win-inet-pton==1.1.0
wincertstore==0.2
zipp==2.2.0

Code to reproduce:

from poliastro.examples import molniya, iss
from poliastro.czml.extract_czml import CZMLExtractor
from czml3.widget import CZMLWidget
from czml3.core import Document
start_epoch = iss.epoch
end_epoch = iss.epoch + molniya.period
N = 10

extractor = CZMLExtractor(start_epoch, end_epoch, N)

extractor.add_orbit(molniya, label_text="Molniya")
extractor.add_orbit(iss, label_text="ISS")

with open('play.czml', 'w') as f:
    for l in extractor.packets:
        f.write(l.__str__())
d = extractor.get_document()
CZMLWidget(d)

Another note:
The missing Earth map in the screenshot is fixed by changing to a different map skin. I think this is due to some subscription access or something. That issue is not related to this issue (as far as I know).

Define scope for first release

I don't plan to implement all CZML by the first release. That would remove all the fun for potential contributors 😛

However, it would be nice to have a minimum set of functionality, plus #1 and #2. We have to define it somehow.

Model3D view lost in PR 44

After PR #44, I was unable to plot models in the CZMLWidget().

Here is the code:

from czml3 import Document, Packet, Preamble
from czml3.properties import Model, Position, Orientation, Clock
from czml3.widget import CZMLWidget
import datetime

doc = Document([
    Preamble(name="newsat1_test"),
    Packet(
        position=Position(cartographicDegrees=[-77, 37, 0]),
        orientation=Orientation(unitQuaternion=[0, 0, 0, 1]),
        model=Model(
            gltf="http://localhost:8890/Cesium_Air.glb",  # Para comparar
            scale=2.0,
            minimumPixelSize=128,
        )
    ),
    
])

CZMLWidget(doc)

The widget is display, but no model is rendered.

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.