Giter VIP home page Giter VIP logo

sphere's Introduction

Sphere

WARNING: This software is not maintained any more.

Sphere is a small GUI aimed at easily projecting rectangular images of planetary surfaces into azimuthal equidistant images and manipulating them in a simple interface.

Ultimately, both projection and image manipulation shall be done through the same interface such that even non-specialist can easily perform it.

Interface

Why azimuthal equidistant projection ?

Because this is the type of projection required as input for IRAP EXPLOIT project aimed at projecting planetary surfaces into a real spherical surface.

Since most images of planetary surfaces are usually found as rectangular images, one must project them into azimuthal equidistant projection so that the system optics can reconstruct the spherical shape.

What can it do for now ?

Here is a list of things it does and shall do in the future:

  • Open configuration files to load the project parameters
  • Open projected images given the latitude and longitude
  • Update the image when the latitude and/or longitude is/are changed
  • Interact with the image in a simple way using the mouse (not very natural yet)
  • Interact in a natural and smooth way using the mouse
  • Have its own interface to perform the projection (for now it is hidden/unusuable in backend code)
  • Have a smoother interface for startup loading
  • Be able to save the current state of the application to easily load back later on
  • Detach/dupplicate the image into another window (with no/very few buttons and lebls) to have it fullscreen on another monitor for instance
  • Automatically rotate the image along the latitude or longitude at a given speed

What do I need to run it ?

python3, one of the latest versions would be preferable. glob, tkinter and ttk should be installed by default in theory. Additionnaly, here are the following librairies that you need to install:

The code + icons are actually quite light weight. Most of the space comes from the example, which for the moment is mandatory if you want to try this software, but will not in future versions. So hopefully, the example will be moved somewhere else and this project will be much less heavy than it is now.

Caveats

This software has only been tested on an Ubuntu 20.04.1 machine.

A couple of tests were performed on a MAC OSX machine. The threading used to catch SIGINT does not work properly on MAC and is therefore disabled for now. Plenty of issues appear when running this software on a MAC OSX machine. These shall be dealt with once the bulge of the code has been completed.

Tests on a windows machine should arrive sometimes in the 'near' future as well.

sphere's People

Contributors

wilfriedmercier avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Forkers

linaissa

sphere's Issues

bug

Dear Wilfried Mercier,

I would be utterly honored if you could have a look at my bugs :) ๐Ÿฅ‡

Sincerely yours

Here is a snap of my terminal
Traceback (most recent call last):
File "/Users/linaissa/anaconda3/bin/ipython", line 11, in
sys.exit(start_ipython())
File "/Users/linaissa/anaconda3/lib/python3.7/site-packages/IPython/init.py", line 125, in start_ipython
return launch_new_instance(argv=argv, **kwargs)
File "/Users/linaissa/anaconda3/lib/python3.7/site-packages/traitlets/config/application.py", line 658, in launch_instance
app.start()
File "/Users/linaissa/anaconda3/lib/python3.7/site-packages/IPython/terminal/ipapp.py", line 356, in start
self.shell.mainloop()
File "/Users/linaissa/anaconda3/lib/python3.7/site-packages/IPython/terminal/interactiveshell.py", line 498, in mainloop
self.interact()
File "/Users/linaissa/anaconda3/lib/python3.7/site-packages/IPython/terminal/interactiveshell.py", line 481, in interact
code = self.prompt_for_code()
File "/Users/linaissa/anaconda3/lib/python3.7/site-packages/IPython/terminal/interactiveshell.py", line 410, in prompt_for_code
**self._extra_prompt_options())
File "/Users/linaissa/anaconda3/lib/python3.7/site-packages/prompt_toolkit/shortcuts/prompt.py", line 738, in prompt
return run_sync()
File "/Users/linaissa/anaconda3/lib/python3.7/site-packages/prompt_toolkit/shortcuts/prompt.py", line 727, in run_sync
return self.app.run(inputhook=self.inputhook, pre_run=pre_run2)
File "/Users/linaissa/anaconda3/lib/python3.7/site-packages/prompt_toolkit/application/application.py", line 709, in run
return run()
File "/Users/linaissa/anaconda3/lib/python3.7/site-packages/prompt_toolkit/application/application.py", line 682, in run
run_until_complete(f, inputhook=inputhook)
File "/Users/linaissa/anaconda3/lib/python3.7/site-packages/prompt_toolkit/eventloop/defaults.py", line 123, in run_until_complete
return get_event_loop().run_until_complete(future, inputhook=inputhook)
File "/Users/linaissa/anaconda3/lib/python3.7/site-packages/prompt_toolkit/eventloop/posix.py", line 66, in run_until_complete
self._run_once(inputhook)
File "/Users/linaissa/anaconda3/lib/python3.7/site-packages/prompt_toolkit/eventloop/posix.py", line 85, in _run_once
self._inputhook_context.call_inputhook(ready, inputhook)
File "/Users/linaissa/anaconda3/lib/python3.7/site-packages/prompt_toolkit/eventloop/inputhook.py", line 81, in call_inputhook
inputhook(self)
File "/Users/linaissa/anaconda3/lib/python3.7/site-packages/IPython/terminal/interactiveshell.py", line 513, in inputhook
self._inputhook(context)
File "/Users/linaissa/anaconda3/lib/python3.7/site-packages/IPython/terminal/pt_inputhooks/tk.py", line 88, in inputhook
wait_using_filehandler()
File "/Users/linaissa/anaconda3/lib/python3.7/site-packages/IPython/terminal/pt_inputhooks/tk.py", line 65, in wait_using_filehandler
root.createfilehandler(inputhook_context.fileno(), _tkinter.READABLE, done)
RuntimeError: Calling Tcl from different apartment

If you suspect this is an IPython bug, please report it at:
https://github.com/ipython/ipython/issues
or send an email to the mailing list at [email protected]

You can print a more detailed traceback right now with "%tb", or use "%debug"
to interactively debug it.

Extra-detailed tracebacks for bug-reporting purposes can be enabled via:
%config Application.verbose_crash=True

2020-10-19 14:00:29.017 python[2423:63972] WARNING: NSWindow drag regions should only be invalidated on the Main Thread! This will throw an exception in the future. Called from (
0 AppKit 0x00007fff3391e7f0 -[NSWindow(NSWindow_Theme) _postWindowNeedsToResetDragMarginsUnlessPostingDisabled] + 371
1 AppKit 0x00007fff3391bce1 -[NSWindow _initContent:styleMask:backing:defer:contentView:] + 1416
2 AppKit 0x00007fff3391b753 -[NSWindow initWithContentRect:styleMask:backing:defer:] + 42
3 libtk8.6.dylib 0x000000011a22d426 TkMacOSXMakeRealWindowExist + 742
4 libtk8.6.dylib 0x000000011a233c04 ApplyWindowAttributeFlagChanges + 196
5 libtk8.6.dylib 0x000000011a2318a5 Tk_WmObjCmd + 14293
6 libtcl8.6.dylib 0x0000000119fc7b26 Tcl_EvalObjv + 342
7 _tkinter.cpython-37m-darwin.so 0x0000000119f9a572 Tkapp_Call + 210
8 python 0x000000010deaf18e _PyMethodDef_RawFastCallKeywords + 350
9 python 0x000000010debbe64 _PyMethodDescr_FastCallKeywords + 84
10 python 0x000000010dfebec5 call_function + 437
11 python 0x000000010dfe9a56 _PyEval_EvalFrameDefault + 45942
12 python 0x000000010dfdd49e _PyEval_EvalCodeWithName + 414
13 python 0x000000010deaefe3 _PyFunction_FastCallKeywords + 195
14 python 0x000000010dfebdc7 call_function + 183
15 python 0x000000010dfe9be0 _PyEval_EvalFrameDefault + 46336
16 python 0x000000010dfdd49e _PyEval_EvalCodeWithName + 414
17 python 0x000000010deadde7 _PyFunction_FastCallDict + 231
18 python 0x000000010df30381 slot_tp_init + 193
19 python 0x000000010df3a361 type_call + 241
20 python 0x000000010deaeae3 _PyObject_FastCallKeywords + 179
21 python 0x000000010dfebed5 call_function + 453
22 python 0x000000010dfe9be0 _PyEval_EvalFrameDefault + 46336
23 python 0x000000010dfdd49e _PyEval_EvalCodeWithName + 414
24 python 0x000000010deadde7 _PyFunction_FastCallDict + 231
25 python 0x000000010df30381 slot_tp_init + 193
26 python 0x000000010df3a361 type_call + 241
27 python 0x000000010deaeae3 _PyObject_FastCallKeywords + 179
28 python 0x000000010dfebed5 call_function + 453
29 python 0x000000010dfe9b27 _PyEval_EvalFrameDefault + 46151
30 python 0x000000010deae8d5 function_code_fastcall + 117
31 python 0x000000010dfebdc7 call_function + 183
32 python 0x000000010dfe9a56 _PyEval_EvalFrameDefault + 45942
33 python 0x000000010deae8d5 function_code_fastcall + 117
34 python 0x000000010dfebdc7 call_function + 183
35 python 0x000000010dfe9a56 _PyEval_EvalFrameDefault + 45942
36 python 0x000000010deae8d5 function_code_fastcall + 117
37 python 0x000000010deb1ce2 method_call + 130
38 python 0x000000010deaf752 PyObject_Call + 130
39 python 0x000000010e0cd8cb t_bootstrap + 123
40 python 0x000000010e054707 pythread_wrapper + 39
41 libsystem_pthread.dylib 0x00007fff6db93d76 _pthread_start + 125
42 libsystem_pthread.dylib 0x00007fff6db905d7 thread_start + 15
)
Exception in thread Thread-193:
Traceback (most recent call last):
File "/Users/linaissa/anaconda3/lib/python3.7/threading.py", line 917, in _bootstrap_inner
self.run()
File "/Users/linaissa/Documents/Willou/Sphere-master/main.py", line 301, in run
app = mainApplication(self.root)
File "/Users/linaissa/Documents/Willou/Sphere-master/main.py", line 105, in init
self.iconDict['FOLDER'] = tk.BitmapImage(data=icons['FOLDER'], maskdata=icons['FOLDER_MASK'], background='goldenrod')
KeyError: 'FOLDER'

(base) MacBook-Air-de-Lina:Sphere-master linaissa$

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.