A Python wrapper to parallelize GAMIT executions
Project description
GeoDE (Geodesy Database Engine)
A comprehensive Python framework for automated GNSS data processing, analysis, and management. GeoDE integrates multiple geodetic software packages (GAMIT/GLOBK, GPSPACE, and soon M-PAGES) with PostgreSQL database management and web-based visualization tools.
Overview
GeoDE (Geodesy Database Engine) provides a complete solution for processing and managing large-scale GNSS datasets for geodetic applications. Originally developed by Demian Gomez and contributors, GeoDE handles the entire workflow from raw data ingestion to time series analysis, offering parallelized processing capabilities, robust metadata tracking, and comprehensive quality control tools.
Key Features
- 🚀 Parallel Processing - Distribute geodetic processing jobs across multiple compute nodes for maximum throughput
- 🗄️ PostgreSQL Integration - Centralized storage and management of RINEX data, station metadata, and processing results
- 🌐 GeoDE Desktop Web Interface - Interactive map-based visualization for monitoring station networks and managing metadata
- 📊 Time Series Analysis - Built-in tools for plotting and analyzing position time series with ETM (Extended Trajectory Model) fitting
- 🔍 Quality Control - Automated detection of metadata inconsistencies and data gaps
- 📡 Multi-Format Support - Handle RINEX 2/3, Hatanaka compression, and various coordinate systems
- 🔧 Multi-Software Integration - Seamlessly process data using GAMIT/GLOBK, GPSPACE, and M-PAGES (NGS)
Architecture
GeoDE consists of two main components:
- Command Line Interface (CLI) - Core processing engine for parallel GNSS analysis
- Web Interface - Django-based frontend for station monitoring and metadata management
Installation
Prerequisites
Ensure the following dependencies are installed and available in your PATH:
- GAMIT/GLOBK - http://www-gpsg.mit.edu/gg/
- GFZRNX - https://gnss.gfz-potsdam.de/services/gfzrnx
- rnx2crx/crx2rnx - https://terras.gsi.go.jp/ja/crx2rnx.html
- GPSPACE - https://github.com/demiangomez/GPSPACE
- PostgreSQL (server)
- Python 3.10
Database Setup
- Deploy the database skeleton using
database/gnss_data_dump.sql - Configure required tables using the provided CSV files:
keys.csv- System configuration keysrinex_tank_struct.csv- RINEX file storage structurereceivers.csv&antennas.csv- IGS equipment codesgamit_htc.csv- Antenna height/offset calibrations
CLI Installation
pip install geode-gnss
Create a working directory and configure gnss_data.cfg with your database connection, archive paths, and compute nodes. See Installation.md for detailed configuration options.
Core CLI Tools
Data Management
ArchiveService.py- Service for managing archive operations and locksDownloadSources.py- Automated RINEX data retrieval from external sourcesScanArchive.py- Archive scanning, station info insertion, and PPP processing
Analysis & Visualization
PlotETM.py- Time series plotting with trajectory model fittingAlterETM.py- Modify ETM parameters (polynomial terms, jumps, periodic signals)
Station Selection Syntax
All CLI tools support flexible station selection:
# Single station
./PlotETM.py igs.pwro
# Multiple stations
./PlotETM.py igs.pwro igs.onsa
# All stations in a network
./PlotETM.py igs.all
# Country code (ISO 3166)
./PlotETM.py ARG
# Wildcards (regex style)
./PlotETM.py ars.at1[3-5] # at13, at14, at15
./PlotETM.py ars.at% # all stations starting with 'at'
# Exclusions
./PlotETM.py igs.all *igs.pwro # all IGS stations except pwro
Web Interface
The web interface provides:
- 🗺️ Interactive Map - OpenStreetMap-based visualization with station status indicators
- 📋 Station Details - Equipment history, coordinates, photos, and site visit logs
- 📁 RINEX Management - File browser with metadata validation and gap detection
- ⚙️ Metadata Editor - Web-based forms for updating station information
- 🔍 Search & Filters - Query stations by code, network, country, or date range
Key Indicators
- 🟢 Green markers - Stations with complete, validated metadata
- 🔴 Red markers - Stations requiring attention (missing metadata or errors)
- ⚠️ Warning icons - RINEX files with metadata inconsistencies
See WebInterface.md for detailed interface documentation.
Example Workflows
Process new RINEX data
# Download and scan for new files
./DownloadSources.py igs.all -win 7
# Run PPP solutions
./ScanArchive.py igs.all -ppp
# Plot time series
./PlotETM.py igs.pwro -gui
Add earthquake jump to trajectory model
./AlterETM.py igs.pwro -fun j + 1 2024/02/15 30,60
Documentation
- Installation Guide - Detailed setup instructions
- Web Interface Guide - Complete UI documentation
- CLI Reference - Command-line tool usage
Citation
If you use GeoDE in your research, please cite:
Gomez, D.D., et al. (2024). GeoDE: Geodesy Database Engine for automated GNSS processing and analysis. GitHub repository. https://github.com/demiangomez/Parallel.GAMIT
License
[Include your license information here]
Support
For questions, issues, or contributions, please open an issue on the GitHub repository.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file geode_gnss-1.2.48.tar.gz.
File metadata
- Download URL: geode_gnss-1.2.48.tar.gz
- Upload date:
- Size: 6.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d8f9d4e6265faf318f583a2ad3656ad599b324feb4252e07e69a9772e9c929ec
|
|
| MD5 |
222a9b3bff82af2e217d260895f0be8f
|
|
| BLAKE2b-256 |
c14132fdf9ceff5bf3094cac88ae5271971ab9390b07b2a95bf0c649e79ff383
|
Provenance
The following attestation bundles were made for geode_gnss-1.2.48.tar.gz:
Publisher:
publish.yml on demiangomez/geode
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
geode_gnss-1.2.48.tar.gz -
Subject digest:
d8f9d4e6265faf318f583a2ad3656ad599b324feb4252e07e69a9772e9c929ec - Sigstore transparency entry: 832040703
- Sigstore integration time:
-
Permalink:
demiangomez/geode@c19dadf985b226102c3694d17effc8d57d8793ed -
Branch / Tag:
refs/tags/1.2.48 - Owner: https://github.com/demiangomez
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@c19dadf985b226102c3694d17effc8d57d8793ed -
Trigger Event:
push
-
Statement type:
File details
Details for the file geode_gnss-1.2.48-py3-none-any.whl.
File metadata
- Download URL: geode_gnss-1.2.48-py3-none-any.whl
- Upload date:
- Size: 1.8 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
44f0e353bc7a9bb5ce6eb70bc3044f43a42dd73d1e382699e95006f6cac652c5
|
|
| MD5 |
0a4a272c2603f5a219dd6def5ee0ab34
|
|
| BLAKE2b-256 |
d36c6c8ba30ed0a3cba068a803d11cfa84eacda70df662efa38c3022ad69c592
|
Provenance
The following attestation bundles were made for geode_gnss-1.2.48-py3-none-any.whl:
Publisher:
publish.yml on demiangomez/geode
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
geode_gnss-1.2.48-py3-none-any.whl -
Subject digest:
44f0e353bc7a9bb5ce6eb70bc3044f43a42dd73d1e382699e95006f6cac652c5 - Sigstore transparency entry: 832040705
- Sigstore integration time:
-
Permalink:
demiangomez/geode@c19dadf985b226102c3694d17effc8d57d8793ed -
Branch / Tag:
refs/tags/1.2.48 - Owner: https://github.com/demiangomez
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@c19dadf985b226102c3694d17effc8d57d8793ed -
Trigger Event:
push
-
Statement type: