You are seeing poliastro blog. If you want to see documentation, the latest version can be found in

Articles by Eleftheria Chatziargyriou

CZML Extractor: An overview

As the proverb says "all good things must come to an end". Unfortunately, it's time to bid adieu to the summer and have a look on what has been accomplished so far.

The CZML Extractor

This was undoubtedly the main and most time-consuming part of the project. The extractor allows users to easily convert orbital data to CZML. You can find an overview of the extractor's usage in the User Guide or take a look in the more in-depth Jupyter notebook tutorial

The Cesium Application

Since we need more parameters to accurately represent the data, we also need a specific application to parse said parameters. For this reason, I worked on a Cesium application that allows you to easily visualize the data. At this moment, there are two separate applications: one that runs remotely and one you can copy-paste directly …

Ground track plotting and Ellipsoids

The second evaluation period has come to the end and with the end of the program drawing ever closer, I'm happy to announce that most work on the additional deliverables has been complete!


I've added polylines and points (along with myriad of other dependent properties/types). These also marked the release of v0.1.3!

Ground Track Plotting

Having added the necessary CZML properties, I finally managed to add the ground track plotter. It allows to draw both a static path and an animated one. The coolest feature is that it automatically calculates the path's orthographic projection, allowing you to see the satellite in 2D mode. I was also toying with the idea of allowing the users to export gif images directly from the application, which would mean no longer relying on external screen capturing software to create and …

Moving forward with the Cesium application

I feel like in the last couple of weeks I got to work a little in several aspects of the project. While this didn't allow me to focus on a single feature, it allowed me to make progress in various different areas.

Bug resolving and 2D mode

First and foremost, I got rid of a particularly frustrating bug in the application. Certain javascript events (such as the one that allows the inertial view), where tied to a single Viewer and thus wouldn't trigger when the Viewer was destroyed (which is the case when, for example, loading the data from the file). I also made a few minor changes in the code and introduced the option to set the Viewer mode to 2D. This isn't any useful as of now, but it will be with the new feature I'm planning to …

Converting to CZML and next steps

So the first phase of GSoC is over and with it, it's time to reflect what has been achieved in the last couple of months.


As I mentioned in the last blogpost this is a very useful library created by juanlu. After a few patches, the library now supports most CZML properties and - as far as I can tell - this is the only currently mantained Python library for creating CZML packets.

CZML Extractor

This is the first feature I've started to work on and while it is still far from complete, I'm happy to say that it is now usable.

At first, the czml document was represented by a nested dictionary and then converted to valid JSON format. This worked ok and I did write a function which made manipulating the dictionary a tad more intuitive, but it was …

Communication satellites and refactoring

Those couple of weeks were spent mainly on setting future milestones and improving the quality of the code. In a way, Tom Cargill's famous aphorism came to my mind:

The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time.

Writing stuff that "just works" is relatively easy. But when programming, you always have to keep track of myriad variables including but not limited to: maintanability, integration and readability.


My mentor, Juanlu, wrote a fully-fledged library for composing czml packets. While it's still in the early stages of development, I would urge anyone interested to check it out. I'm currently trying to refactor the czml core, so it utilizes the library instead of the current approach …

Let the coding begin

Let the coding begin

So the bonding period is over, which means that the coding phase has officially begun. I've already worked on some of the key features I'd like to add since my examination period is around the corner. Hopefully, this won't slow me down and I'll keep up with the workload.

The work so far

I've worked on the main part of the project, which was to connect poliastro to the visualization capabilities offered by the Cesium API. There is already the possibility of adding orbits and defining custom attractors, along with various visual customizations. As exciting as this is, there are still way more things that could be added to give life to the project, rendering it more useful and interesting.

Communications satellites

In the past days, I became increasingly interested in adding communication satellites and visualizing …

The beginning of GSoC

Hello everyone, I'm Eleftheria and this summer I'll be working with poliastro under Open Astronomy as part of GSoC 2019. I'm hoping this blog will prove to be interesting to those who are interested in poliastro or simply a source of inspiration to those looking for a way to get their feet wet with open source.

The beginning of a journey

After forking poliastro, I immediately dived in and tried to make sense of the codebase. Fortunately, poliastro is extensively documented so the learning curve wasn't as steep as I expected. After getting familiar with the project structure, I started browsing the open issues to find ways to make myself useful. What caught my attention was the ongoing process of adding visualization features to poliastro, which would make the library more accessible to professionals and beginners alike.

It should be …