PyGlobe Documentation

Overview

PyGlobe is a PySide6 / PyOpenGL widget for showing a 3D Globe.

Screenshot

Installation

  • NOTE: This has been tested with python 3.13 on Mac OS 15.6 and Ubuntu 24.04
  • Optional CONDA setup:
conda create --name pyglobe python=3.13
conda activate pyglove
  • Install:
pip install -e .
  • NOTE: Will install pyside6, pyopengl, numpy, requests, pillow

Example

Example at example/example.py

Usage

Include in your project

from pyglobe import globe
class MyWidget(QWidget):
    def __init__(self): 
        super().__init__()
        vbox = QVBoxLayout()
        self.setLayout(vbox) 
        globe = GlobeWidget()
        vbox.addWidget(globe)

Listen for Signals


        self.globe.infoSig.connect(self.myfunc)
        self.globe.sigObjectClicked.connect(self.print_object)

    def myfunc(self, info:dict):
        print (f"Got info: {info}")

    def print_object(self, obj:SceneObject):
        print (f"You clicked on {obj.label}")

Add an object to the map

    track_points = [
        (12.3601, 12.0589, 0),    
    ]
    for i in range(12):
        track_points.append( ( track_points[0][0] + i * 0.2,
                               track_points[0][1] + i * 0.2,
                               0) )
    self.track = scene.PolyLineSceneObject(
        'Track',
        points_wgs84=track_points,
        color=(0.0, 0.0, 0.0),  # Yellow
        width=8.0,
        altitude_offset=2000, # earth curvature
        pick_radius=25000
    )
    self.globe.add_object(self.track)

Move the map object

    polyline_points = self.track.points_wgs84
    new_points = []
    for point in polyline_points:
        newpoint = (point[0] - 0.1, point[1] - 0.1, point[2] )
        new_points.append(newpoint)
    self.track.set_points(new_points)

    self.point.set_pos(self.point.lat -0.1, self.point.lon - 0.1, self.point.alt)