Python implementation of the QVF satellite imagery file-naming convention (Flood & Danaher, 2013)
Project description
jrsrpname
A Python implementation of the QVF file-naming convention for large satellite imagery archives, as described in:
Flood, N. and Danaher, T. (2013). A File Naming Convention for a Large Satellite Imagery Archive: QVF -- a case study. doi:10.6084/m9.figshare.875298.v1
@article{Flood2013,
author = "Neil Flood and Tim Danaher",
title = "{A File Naming Convention for a Large Satellite Imagery Archive: QVF - a case study}",
year = "2013",
month = "12",
url = "https://figshare.com/articles/journal_contribution/A_File_Naming_Convention_for_a_Large_Satellite_Imagery_Archive_QVF_a_case_study/875298",
doi = "10.6084/m9.figshare.875298.v1"
}
Provenance
jrsrpname is an independent reimplementation, built from the naming-convention description
published in the paper above. It is not a port of, and shares no code with, any existing
implementation.
The author has prior familiarity with an existing closed-source implementation of this
convention (also referred to as qvf.py), whose copyright ownership is not clearly established.
To avoid any ambiguity about derivation, jrsrpname deliberately uses a different name and a
different internal design, and was written directly from the published paper rather than from
that source.
Most of the implementation was written with the assistance of Claude (Anthropic). Unlike the
author, Claude was never given, and did not access, view, or otherwise reference qvf.py or any
other prior implementation of this convention at any point -- its only source for the
naming/parsing specification was the published paper above, fetched directly from figshare.
Installation
python3 -m pip install jrsrpname
Usage
Usage follows closely to that as described in Flood, N. and Danaher, T. (2013), but uses a more object oriented approach. The basic approach is to parse a string representing a QVF filename:
from jrsrpname import QVFName
name = QVFName.parse("l5tmre_p090r079_20090914_dbgm6.img")
The name will then have as members the described what, where, when, processing, suffix
components:
print(name.what)
# l5tmre
print(name.where)
# p090r079
print(name.when)
# 20090914
print(name.processing)
# dbgm6
print(name.suffix)
# img
Modifications to any of these are done with the replace method:
newname = name.replace(where='qld')
print(newname)
# l5tmre_qld_20090914_dbgm6.img
Development
This project uses uv.
# install dev deps
uv sync
# run tests
uv run pytest tests/
# lint / format
uv run ruff check .
uv run ruff format .
# install git hooks (required before contributing -- see CONTRIBUTING.md)
uv run pre-commit install
See CONTRIBUTING.md for more.
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 jrsrpname-0.1.0.tar.gz.
File metadata
- Download URL: jrsrpname-0.1.0.tar.gz
- Upload date:
- Size: 73.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.8.24
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
142ad74b272c794f02b46f64603b229ecde1b9d0b435d9ae4bcc0b571bc4709f
|
|
| MD5 |
5ed6fee67fc34154c87f48c75d83be15
|
|
| BLAKE2b-256 |
3a74b3343a20fb70a674472fda73d9f1277b4a1db735b2c87f3faf71ee84b3c0
|
File details
Details for the file jrsrpname-0.1.0-py3-none-any.whl.
File metadata
- Download URL: jrsrpname-0.1.0-py3-none-any.whl
- Upload date:
- Size: 10.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.8.24
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
73de5e7fb16afdb2cc9b14a034ffaec3272a9d8b1fc5e29d84f3daf3242edba4
|
|
| MD5 |
b3aea59d313c8c1600b94ce8ec19cee8
|
|
| BLAKE2b-256 |
50b8aeb75a51410fc290ff45f37fc21748ab08f81147dc08433cbc9be010fdfe
|