Oceanographic Research Cruise Planning System
Project description
CruisePlan
๐ Comprehensive Oceanographic Research Cruise Planning System โ Streamlining the process of planning oceanographic research expeditions.
Background & Context
The Challenge: Oceanographic cruise planning involves complex route and timing calculations, frequent unit conversions (nautical miles <-> kilometers, decimal degrees <-> degrees decimal minutes), and rapid plan updates. Different people may need different formats--spreadsheets for quick calculations, degrees/decimal minutes for navigation, kilometers for station spacing, knots for voyage timing. Using historical station locations may be preferred, but can be tricky to access.
- Fragmented Tools: Scattered spreadsheets, manual calculations, custom code snippets
- Time-Intensive Processes: Semi-manual station planning, timing calculations, and proposal formatting
- Error-Prone Workflows: Manual depth lookups, coordinate formatting, and schedule validation
The Solution: CruisePlan provides an integrated, semi-automated system for an efficient cruise-planning workflow.
Target Audience
Primary Users:
- ๐ฌ Oceanographic Researchers: Principal investigators designing research expeditions
- ๐ Students: Graduate students learning cruise planning methodology
- ๐ Proposal Writers: Scientists preparing funding proposals with detailed cruise plans
Research Domains: The primary development of CruisePlan is for physical oceanographers, with CTD stations, mooring deployments and glider operations as default. However, it is possible to incorporate any type of point, line or area operation of a ship with a specified manual duration based on your own experience.
CruisePlan transforms complex cruise planning from a weeks-long manual process into a structured, validated workflow that produces proposal-ready documentation with some checks on operational feasibility.
โ ๏ธ Breaking Changes in v0.3.0: Commands cruiseplan download and cruiseplan pandoi have been removed. Parameter names shortened (--bathymetry-* โ --bathy-*). See MIGRATION_v0.3.0.md for migration guide and CHANGELOG.md for complete changes.
Disclaimer: This software is provided "as is" without warranty of any kind. Users are responsible for validating all calculations, timing estimates, and operational feasibility for their specific cruise requirements. Always consult with marine operations staff and verify all outputs before finalizing cruise plans.
๐ Full documentation available at:
๐ https://ocean-uhh.github.io/cruiseplan/
๐ What's Included
- โ Interactive station planning: Click-to-place stations on bathymetric maps with real-time depth feedback
- ๐ PANGAEA integration: Browse and incorporate past cruise data for context
- ๐ Multi-format outputs: Generate NetCDF, LaTeX reports, PNG maps, KML files, and CSV data
- ๐ Cruise validation: Automated checking of cruise configurations and operational feasibility
- ๐จ Documentation: Sphinx-based docs with API references and usage guides
- ๐ฆ Modern Python packaging: Complete with testing, linting, and CI/CD workflows
- ๐งพ Scientific citation support: CITATION.cff for academic attribution
Project structure
For a detailed breakdown of the package architecture and module descriptions, see the Project Structure Documentation.
cruiseplan/
โโโ .github/
โ โโโ workflows/ # GitHub Actions for tests, docs, PyPI
โโโ docs/ # Sphinx-based documentation
โ โโโ source/ # reStructuredText + MyST Markdown + _static
โ โโโ Makefile # for building HTML docs
โโโ notebooks/ # Example notebooks and demos
โโโ cruiseplan/ # Main Python package
โ โโโ cli/ # Command-line interface modules
โ โโโ core/ # Core cruise planning logic
โ โโโ calculators/ # Distance, duration, routing calculators
โ โโโ data/ # Bathymetry and PANGAEA data handling
โ โโโ interactive/ # Interactive station picking tools
โ โโโ output/ # Multi-format output generators
โ โโโ utils/ # Utilities and coordinate handling
โโโ tests/ # Comprehensive pytest test suite
โโโ data/ # Bathymetry datasets
โโโ .gitignore
โโโ .pre-commit-config.yaml
โโโ CITATION.cff # Citation file for academic use
โโโ CONTRIBUTING.md # Contribution guidelines
โโโ LICENSE # MIT license
โโโ README.md
โโโ pyproject.toml # Modern packaging config
โโโ requirements.txt # Core package dependencies
โโโ requirements-dev.txt # Development and testing tools
โโโ environment.yml # Conda environment specification
โโโ PROJECT_SPECS.md # Development roadmap and specifications
๐ง Installation
Option 1: Install from PyPI (Most Users)
For general use, install the latest stable release from PyPI. Note: CruisePlan is in active development (0.x versions) with occasional breaking changes.
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# Install CruisePlan
pip install cruiseplan
Option 2: Install Latest from GitHub
For the latest features and bug fixes:
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# Install directly from GitHub
pip install git+https://github.com/ocean-uhh/cruiseplan.git
Option 3: Development Installation
For development or contributing to CruisePlan:
# Clone the repository
git clone https://github.com/ocean-uhh/cruiseplan.git
cd cruiseplan
# Option A: Using conda/mamba
conda env create -f environment.yml
conda activate cruiseplan
pip install -e ".[dev]"
# Option B: Using pip with virtual environment
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[dev]"
Dependencies: Core packages are listed in requirements.txt, development tools in requirements-dev.txt. The conda environment.yml loads from these files automatically.
To run tests:
pytest tests/
To build the documentation locally:
cd docs
make html
๐ Learn More
๐ค Contributing
Contributions are welcome! Please see our Contributing Guidelines for details on how to get started.
For information about planned improvements and development priorities, see our Development Roadmap.
๐ Acknowledgments & Citation
The original timing algorithms were developed by Yves Sorge and Sunke Trace-Kleeberg. CruisePlan initial software development by Yves Sorge and redesigned by Eleanor Frajka-Williams.
If you use CruisePlan in your research, please cite it using the information in CITATION.cff.
Related Software
The following cruise planning tools may also be of interest (Disclaimer: We have not tested these):
Python/GIS:
- cruisetools - Python plugin for QGIS.
Python:
- dreamcoat - Personal tools for cruise planning
R:
- cruisePlanning - R package for cruise planning based on DFO's AZMP
- cruisePlanningStatic - similar to the above
- cruisetrack-planner - Cruise track planning in R plus Shiny App (https://seaflow.shinyapps.io/cruisetrackplanner/)
MATLAB:
- PlanCampanha - Cruise planning with CSV as input
Project details
Release history Release notifications | RSS feed
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 cruiseplan-0.3.2.tar.gz.
File metadata
- Download URL: cruiseplan-0.3.2.tar.gz
- Upload date:
- Size: 31.6 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1a7a54884a74545b0b0ccb1af9a5b7dbcd5d7d0c1e05afacf11c16ed9db7d6bf
|
|
| MD5 |
2aa4da994656ad78e7e245d5c6a3c8c0
|
|
| BLAKE2b-256 |
880f624c0d1ce36ebffd83786ef6222b68c30f5433a0cbeb7db62cd26f0ea9ea
|
Provenance
The following attestation bundles were made for cruiseplan-0.3.2.tar.gz:
Publisher:
pypi.yml on ocean-uhh/cruiseplan
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cruiseplan-0.3.2.tar.gz -
Subject digest:
1a7a54884a74545b0b0ccb1af9a5b7dbcd5d7d0c1e05afacf11c16ed9db7d6bf - Sigstore transparency entry: 813277015
- Sigstore integration time:
-
Permalink:
ocean-uhh/cruiseplan@82a165d4b1a07bcd71388501b5b22baa8002cab8 -
Branch / Tag:
refs/tags/v0.3.2 - Owner: https://github.com/ocean-uhh
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@82a165d4b1a07bcd71388501b5b22baa8002cab8 -
Trigger Event:
release
-
Statement type:
File details
Details for the file cruiseplan-0.3.2-py3-none-any.whl.
File metadata
- Download URL: cruiseplan-0.3.2-py3-none-any.whl
- Upload date:
- Size: 211.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
686902b26929ea3ecb7efa766ce425736e95cd46850ffa4e79d8140bec7da4c9
|
|
| MD5 |
8f3352d268b4fed701ab44f75e510938
|
|
| BLAKE2b-256 |
e79b50a6bf5df0daa33a1172d105807a5db4bed5164e100c8d12acba1b6b956b
|
Provenance
The following attestation bundles were made for cruiseplan-0.3.2-py3-none-any.whl:
Publisher:
pypi.yml on ocean-uhh/cruiseplan
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cruiseplan-0.3.2-py3-none-any.whl -
Subject digest:
686902b26929ea3ecb7efa766ce425736e95cd46850ffa4e79d8140bec7da4c9 - Sigstore transparency entry: 813277016
- Sigstore integration time:
-
Permalink:
ocean-uhh/cruiseplan@82a165d4b1a07bcd71388501b5b22baa8002cab8 -
Branch / Tag:
refs/tags/v0.3.2 - Owner: https://github.com/ocean-uhh
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@82a165d4b1a07bcd71388501b5b22baa8002cab8 -
Trigger Event:
release
-
Statement type: