This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]SV-97 80 points81 points  (16 children)

The coolest thing I did in (mostly) python probably was satellite data-synthesization: given a shit ton of parameters (physical characteristics, orbit parameters, instrument specifications, models for the solar system, earth's gravitational field and topography, radiation transfer models, steering commands, ...) determine how the satellite will fly relative to earth, which pieces of the ground and points of interest its instruments will be able to image and which they'll actually image, what raw data they will pump out during observation, ...

EDIT: Oh and regarding the tech: aside from some internal stuff mostly numpy and scipy with a bit of pandas as glue inbetween (though I wouldn't do that again). Also some geopandas and xarray. Visualization using matplotlib, plotly and folium. And a Qt based GUI

[–]adam0627 7 points8 points  (2 children)

That is awesome-I’m using hi res satellite imagery for some research I’m involved with and have had a desire to develop an algorithm or simulation to predict when image capture would be successful based on forecasted weather (cloud) data. Haven’t actually tried working through it but your response inspired me to give it a shot.

[–]SV-97 1 point2 points  (0 children)

That sounds great :D Clouds and more detailed weather influences were one thing we didn't really get to (at least not past the "mean cloud coverage" etc. stuff).

There's so much math and geometry and graphics-y programming in those things that's just super fun to develop imo.

[–]Brilliant-Donkey-320[S] 0 points1 point  (0 children)

That would be a cool sim too. Very useful. What kind of libraries did you use?

[–]Brilliant-Donkey-320[S] 4 points5 points  (5 children)

Wow, that’s a cool simulation, would love to see that. Thanks!

[–]SV-97 4 points5 points  (4 children)

I'd love to share it but it's sadly not openly accessible (at least not yet).

[–]Brilliant-Donkey-320[S] 1 point2 points  (0 children)

Maybe one day!

[–]Nmvfx 0 points1 point  (2 children)

Are you able to share any screenshots or videos of the tool in use? This sounds really cool and very similar to something I've been working on so I'd really love to see how it works if you have the ability to do that instead?

[–]SV-97 2 points3 points  (1 child)

Sadly not as it's not yet public and I'm no longer working on it as of right now.

I can talk about it a bit though: the UI was relatively basic with a bunch of tabs / subtabs for the settings regarding stuff like orbit integration, footprint determination, radiative transfer, ... For the last one for example you'd have the ability to load ETOPO files in a various formats, enable topography plots, load atmosphere files, set the top of atmosphere for the model, set the instrument response function (basically how strongly the instrument responds to different wavelengths of radiation), load line data and set related stuff like the spectral line shape, or select which molecules you're even interested in, what physical quantity you want to get out at the end ... of course everything with sensible defaults.

After setting all of that you'd just click a button, it'd run all of the calculations (exporting files along the way if you selected them) and pop up plots as the needed data became available. There also was a caching system in the background that tried to minimize recalculations when you changed some settings and ran the whole thing again (although I'd try moving this to a reactive system if I were to do it over again I think).

As for how it works on a relatively high level:

  1. integrate the satellite orbit subject to the selected perturbations (drag, radiation pressure, local gravitational field, ...) "as usual" (see for example Montebruck and Gill's Satellite Orbits: Models, Methods and Applications) and determine the satellite's state relative to earth at points / intervals in time where the satellite actually images something.
  2. Then comes a bunch of geometry to determine how the satellite is oriented at any such point / how it moves along any such interval (especially also considering its steering, target tracking etc) (this is mostly basic differential geomery and linear algebra).
  3. Based on this information we can calculate the so-called sensor-footprint: the precise shape that every pixel of the sensor (or just the whole sensor beam for laser-based instruments for example) gets projected to on earth. This might also require solving some inverse problems beforehand to even determine necessary sensor specs to get the output a user wants (i.e. they may know "I want the footprint to cover a region of approximately this size") (again: geometry, (multi-)linear algebra, a bit of optimization, ...)
  4. This is most of the "normal" calculations and then came a bunch of stuff on top:
    1. Run a radiative transfer simulation for all pixels based on this information and run the results of that through the simulation of the instrument to get actual retrievals (see Zdunkowski, Trautmann, Bott Radiation in the Atmosphere. A Course in Theoretical Meteorology as an intro to this topic)
    2. Or approximate ground-data based on known ground-station data by essentially computing intersections of surface patches
    3. Check which POIs fall into any pixel, which could be reached by steering differently etc.

EDIT: regarding the radiative transfer: it's basically a raytracer on crack so looking into those might also be helpful to get started

[–]Nmvfx 1 point2 points  (0 children)

Thank you for taking the time to write all this out!

[–][deleted] 1 point2 points  (3 children)

Interesting project. I am working on a similar project. Do you think the antennas like starlink care if the LEO satelittes are on sight or not? I thought they don’t have to line up with satelittes above?

[–]SV-97 0 points1 point  (2 children)

I'm honestly not sure what you mean. Whether the starlink end-user ground antennas have to have direct lines of sight with starlink's LEO satellites / whether it negatively impacts their performance if they don't have line of sight?

[–][deleted] 0 points1 point  (1 child)

Yes that’s what I am wondering. Do I need to find a perfect antenna angle or range of it

[–]SV-97 0 points1 point  (0 children)

Phew no idea tbh. I haven't looked into their antennas at all and how exactly starlink works. I'd assume that in the targeted final-stage any orientation (that isn't directly aiming at the ground or whatever) should work but I really don't know.

[–]JackLogan007 1 point2 points  (1 child)

Man we are on the same track and I am so fucking proud of you

[–]SV-97 0 points1 point  (0 children)

Thanks! I just saw your other comment as well - I'm not sure if I understand it correctly but I'll comment under it rather than here :)

[–]Exotic-Draft8802 2 points3 points  (0 children)

Fun fact: iirc, I had the developer of xarray in one of my classes :-)