Giter Site home page Giter Site logo

flowm / satvis Goto Github PK

View Code? Open in Web Editor NEW
267.0 13.0 96.0 1.51 MB

Satellite orbit visualization and pass prediction with Cesium.js

Home Page: https://satvis.space

License: MIT License

Vue 9.06% JavaScript 67.48% CSS 1.75% HTML 1.91% Swift 15.84% Shell 0.52% Ruby 1.22% TypeScript 2.15% SCSS 0.08%
satellite orbit cesiumjs pwa satellite-orbit-visualization cesium celestrak hacktoberfest vue

satvis's Introduction

Satellite orbit visualization and pass prediction.

Note

The next branch contains many improvements from a bigger refactoring and is the recommended branch currently. This version is currently deployed to https://satvis.space/next. Planning to merge this back to the master main in the next few months.

Screenshot

Features

  • Calculate position and orbit of satellites from TLE
  • Set groundstation through geolocation or pick on map
  • Calculate passes for a set groundstation
  • Local browser notifications for passes
  • Serverless architecture
  • Works offline as Progressive Web App (PWA)

Built With

Development

Setup

Initialize submodules and install npm build dependencies:

git submodule update --init
npm clean-install

Run

  • npm run start for the dev server
  • npm run build to build the application (output in dist folder)
  • npm run serve to build the application and serve with static webserver
  • npm run update-tle to retrieve the latest satellite TLEs from NORAD

iOS App

To provide pass notifications on iOS where local browser notifications are not supported a simple app wraps the webview and handles the scheduling of UserNotifications.

License

This project is licensed under the MIT License - see LICENSE file for details.

Acknowledgements

Inspired by a visualization developed for the MOVE-II CubeSat project by Jonathan, Marco and Flo.

satvis's People

Contributors

flowm 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

satvis's Issues

Limit the maximum playback speed

Due to orbit calculations the performance decreases significantly when multiple objects with SampledPositionProperty are enabled with a high playback speed.
Maybe requires #19

RuntimeError when rendering sensor cone

An error occurred while rendering. Rendering has stopped.
RuntimeError: Fragment shader failed to compile.  Compile log: ERROR: 0:2: 'czm_ellipsoid' : syntax error

Error
    at new t (https://satvis.space/dist/Cesium.js?__WB_REVISION__=027fc7effde4974efd78fbbfebc2b1bd:471:23527)
    at f (https://satvis.space/dist/Cesium.js?__WB_REVISION__=027fc7effde4974efd78fbbfebc2b1bd:495:14625)
    at y (https://satvis.space/dist/Cesium.js?__WB_REVISION__=027fc7effde4974efd78fbbfebc2b1bd:495:17042)
    at d._bind (https://satvis.space/dist/Cesium.js?__WB_REVISION__=027fc7effde4974efd78fbbfebc2b1bd:495:18057)
    at G (https://satvis.space/dist/Cesium.js?__WB_REVISION__=027fc7effde4974efd78fbbfebc2b1bd:525:11318)
    at k.draw (https://satvis.space/dist/Cesium.js?__WB_REVISION__=027fc7effde4974efd78fbbfebc2b1bd:525:15541)
    at n.execute (https://satvis.space/dist/Cesium.js?__WB_REVISION__=027fc7effde4974efd78fbbfebc2b1bd:494:17590)
    at Ge (https://satvis.space/dist/Cesium.js?__WB_REVISION__=027fc7effde4974efd78fbbfebc2b1bd:550:15680)
    at R (https://satvis.space/dist/Cesium.js?__WB_REVISION__=027fc7effde4974efd78fbbfebc2b1bd:544:9867)
    at g.executeCommands (https://satvis.space/dist/Cesium.js?__WB_REVISION__=027fc7effde4974efd78fbbfebc2b1bd:544:14713)

3D model not work

hello Flowm,
I want to change the entity Point to satellite 3D model. I push a gltf model (scene.glb) in ./data/models folder. But it's not work when i toggle the 3D model button. what's wrong in this situation?

CesiumSensors.RectangularSensorGraphics的问题

如何 使用new CesiumSensors.RectangularSensorGraphics ()

entity.addProperty("rectangularSensor");

entity.rectangularSensor = new CesiumSensors.RectangularSensorGraphics(
{
xHalfAngle : Cesium.Math.toRadians(40.0),
yHalfAngle : Cesium.Math.toRadians(20.0),
intersectionColor : Cesium.Color.GREEN.withAlpha(0.8),
intersectionWidth : 10,
showIntersection : true,
radius : 1000000.0,
show : true,
showThroughEllipsoid : false
}
);
报错:
捕获

Encode layers & elements in URL

I'd like to "deep-link" to certain satellites from an EO web application. For that, it would be cool if the layers and satellite elements would be encodeable into the URL. Especially relevant would be the "Ground Track" and/or "Sensor Cone" options, as well as the "Inertial" camera setting.

Right now, only the satellite name is apparently encoded into the URL (https://satvis.space/?sat=TERRA).

Add UI to save current configuration on iOS

Allow saving the current configuration of

  • Satellites
  • Satellite entities
  • Groundstation
  • Layers

Simply saving the current URL and using this on app launch should be enough.

Support time dependent imagery layers

Some imagery providers offer additional time dependent imagery. Loading these with UrlTemplateImageryProvider as tested in 39afe31 doesn't work as the old tiles are still cached.

The old tile can either be invalidated when the time changes or an ImageryProvider with time dependent imagery support can be used.

Repository not found

Hello,
I try to install satvis but when I ran:

git submodule update --init

I got:

fatal: repository 'https://github.com/AnalyticalGraphicsInc/cesium-assets.git/' not found

The cesium assets repository is now

https://github.com/AnalyticalGraphicsInc/cesium-assets-list.git

instead of

https://github.com/AnalyticalGraphicsInc/cesium-assets.git

Onboarding for iOS App

Currently the first launch of the application immediately triggers permission requests for location and notifications.
Either provide an onboarding with explanation for these permissions or delay asking for permissions until they are required.

Uncaught TypeError: Cannot read property 'Viewer' of undefined

node 11.11.0/10.0.0/10.10.0
npm 6.7.0 /5.6.0/
cnpm install
npm install
all cant start item

error:
CesiumController.js:25 Uncaught TypeError: Cannot read property 'Viewer' of undefined
at new CesiumController (CesiumController.js:25)
at Object.install (VueCesiumController.js:6)
at Function.Vue.use (vue.esm.js:5100)
at eval (Cesium.vue?C:/Users/123/Desktop/orbforce/node_modules/babel-loader/lib??ref--0!C:/Users/123/Desktop/orbforce/node_modules/vue-loader/lib??vue-loader-options:239)
at Module../node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Cesium.vue?vue&type=script&lang=js& (app.3d870e7c.js?WB_REVISION=3d870e7c14472ee0fd3e:862)
at webpack_require (app.3d870e7c.js?WB_REVISION=3d870e7c14472ee0fd3e:80)
at eval (VM1282 Cesium.vue:2)
at Module../src/components/Cesium.vue?vue&type=script&lang=js& (app.3d870e7c.js?WB_REVISION=3d870e7c14472ee0fd3e:2395)
at webpack_require (app.3d870e7c.js?WB_REVISION=3d870e7c14472ee0fd3e:80)
at eval (VM1282 Cesium.vue:3)

webpack_require.r(webpack_exports);
/* harmony export (binding) / webpack_require.d(webpack_exports, "CesiumController", function() { return CesiumController; });
/
harmony import / var Cesium__WEBPACK_IMPORTED_MODULE_0__ = webpack_require(/! Cesium / "Cesium");
/
harmony import / var Cesium__WEBPACK_IMPORTED_MODULE_0___default = /#PURE/webpack_require.n(Cesium__WEBPACK_IMPORTED_MODULE_0__);
/
harmony import / var dayjs__WEBPACK_IMPORTED_MODULE_1__ = webpack_require(/! dayjs / "./node_modules/dayjs/dayjs.min.js");
/
harmony import / var dayjs__WEBPACK_IMPORTED_MODULE_1___default = /#PURE/webpack_require.n(dayjs__WEBPACK_IMPORTED_MODULE_1__);
/
harmony import / var dayjs_plugin_utc__WEBPACK_IMPORTED_MODULE_2__ = webpack_require(/! dayjs/plugin/utc / "./node_modules/dayjs/plugin/utc.js");
/
harmony import / var dayjs_plugin_utc__WEBPACK_IMPORTED_MODULE_2___default = /#PURE/webpack_require.n(dayjs_plugin_utc__WEBPACK_IMPORTED_MODULE_2__);
/
harmony import / var util_DeviceDetect__WEBPACK_IMPORTED_MODULE_3_ = webpack_require(/! ./util/DeviceDetect / "./src/modules/util/DeviceDetect.js");
/
harmony import / var SatelliteManager__WEBPACK_IMPORTED_MODULE_4_ = webpack_require(/! ./SatelliteManager */ "./src/modules/SatelliteManager.js");
// Import webpack externals

code from CesiumController.js when builded:
dayjs__WEBPACK_IMPORTED_MODULE_1___default.a.extend(dayjs_plugin_utc__WEBPACK_IMPORTED_MODULE_2___default.a);
class CesiumController {
constructor() {
this.minimalUI = util_DeviceDetect__WEBPACK_IMPORTED_MODULE_3_["DeviceDetect"].inIframe() || util_DeviceDetect__WEBPACK_IMPORTED_MODULE_3_["DeviceDetect"].isIos(); //检测设备

this.minimalUIAtStartup = _util_DeviceDetect__WEBPACK_IMPORTED_MODULE_3__["DeviceDetect"].inIframe(); //检测设备
// 声明Cesium地方,作为其本身的属性

this.viewer = new Cesium__WEBPACK_IMPORTED_MODULE_0___default.a.Viewer("cesiumContainer",  (please attention)

if you also find the problem, can y tell me if its solved ! thank you!

question - other than TLE inputs

I'm just starting but it appears the only option for adding object is by loading TLE. Which leads me to believe the software is using SGP4 as the propagator.
I'm working a project where I simulate satellites uising numerical integration, but I propagate state vector (e.g. position, velocity) which I would like to visualize with satvis.
I'm going to keep digging but I wanted to ask if there were opther input options.
I figure worst case I create a dirty-TLE with COEs and update it from my simulation frequently.

Reenable flyTo animations

Currently animations when changing the tracked object are disabled as they result in a camera jump after arriving at the object.

Github button not working in ios app

No external URLs are allowed in WKWebView, thus the Github button does nothing.
Opening the github link in safari would be one possible solution.

router-link failed

Why does router link go to other Vue components , the page content remains the same

Thought Exchange Post

Excuse:
Can you talk about how you optimize Vue + cesium? Through workbox or something? Because after I use the structure of Vue + cesium to build, the memory required for the initial opening of the project has occupied about 160-180m, which will be increased later according to the display content. However, the initial memory of your project is about 50m, which will not grow particularly high in the later stage. After the corresponding effect is cancelled, the memory will return to the original state. If you have time to recover me, share your thoughts and ideas.

Thank you very much.

No way to leave data attribution popup

In the latest iOS Testflight Release, it's not possible to leave the "Data Attribution" popup after opening it:

IMG_62DB8DAB4872-1

Feel free to treat as super-low-priority, since nobody looks at the attributions anyway :))

Fade orbit/ground track

Fade the orbit/ ground track with increasing distance to the object to clarify movement direction.

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.