Skip to main content

Python implementation of the QVF satellite imagery file-naming convention (Flood & Danaher, 2013)

Project description

jrsrpname

Pipeline Status Security Python License Latest Release

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jrsrpname-0.1.0.tar.gz (73.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jrsrpname-0.1.0-py3-none-any.whl (10.9 kB view details)

Uploaded Python 3

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

Hashes for jrsrpname-0.1.0.tar.gz
Algorithm Hash digest
SHA256 142ad74b272c794f02b46f64603b229ecde1b9d0b435d9ae4bcc0b571bc4709f
MD5 5ed6fee67fc34154c87f48c75d83be15
BLAKE2b-256 3a74b3343a20fb70a674472fda73d9f1277b4a1db735b2c87f3faf71ee84b3c0

See more details on using hashes here.

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

Hashes for jrsrpname-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 73de5e7fb16afdb2cc9b14a034ffaec3272a9d8b1fc5e29d84f3daf3242edba4
MD5 b3aea59d313c8c1600b94ce8ec19cee8
BLAKE2b-256 50b8aeb75a51410fc290ff45f37fc21748ab08f81147dc08433cbc9be010fdfe

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page