pygeometa is a Python package to generate metadata for geospatial datasets
Project description
pygeometa
pygeometa is a Python package to generate metadata for geospatial datasets.
Table of Contents
Overview
pygeometa is a Python package to generate metadata for geospatial datasets. Metadata content is managed by pygeometa in simple Metadata Control Files (MCF) which consist of ‘parameter = value’ pairs. pygeometa generates metadata records from MCF files based on the schema specified by the user, such as ISO-19139. pygeometa supports nesting MCF files, which reduces duplication of metadata content common to multiple records and ease maintenance.
Features
simple configuration: inspired by Python’s ConfigParser
extensible: template architecture allows for easy addition of new metadata formats
flexible: use as a command-line tool or integrate as a library
Quickstart
Workflow to generate metadata XML:
Install pygeometa
Create a ‘metadata control file’ .mcf file that contains metadata information
Modify the sample.mcf example
pygeometa supports nesting MCF files together, allowing providing a single MCF file for common metadata parameters (e.g. common contact information)
Refer to the Metadata Control File Reference documentation
Run pygeometa for the .mcf file with a specified target metadata schema
Installation
pygeometa is best installed and used within a Python virtualenv.
Requirements
Python 2.7 and above. Works with Python 3
Python virtualenv package
Dependencies
Dependencies are listed in requirements.txt. Dependencies are automatically installed during pygeometa’s installation.
Installing the Package
virtualenv my-env
cd my-env
. bin/activate
git clone https://github.com/geopython/pygeometa.git
cd pygeometa
python setup.py build
python setup.py install
Running
From the command line
generate_metadata.py --mcf=path/to/file.mcf --schema=iso19139 # to stdout
generate_metadata.py --mcf=path/to/file.mcf --schema=iso19139 --output=some_file.xml # to file
# to use your own defined schema:
generate_metadata.py --mcf=path/to/file.mcf --schema_local=/path/to/my-schema --output=some_file.xml # to file
Supported schemas
Schemas supported by pygeometa: * iso19139, reference * iso19139-hnap, reference * wmo-cmp, reference * Local schema, specified with --schema_local=/path/to/my-schema
Using the API from Python
from pygeometa import render_template
# default schema
xml_string = render_template('/path/to/file.mcf', schema='iso19139')
# user-defined schema
xml_string = render_template('/path/to/file.mcf', schema_local='/path/to/new-schema')
with open('output.xml', 'w') as ff:
ff.write(xml_string)
# render from an MCF stored in a string
mcf_string = '...' # some string
xml_string = render_template_string(mcf_string, schema='iso19139')
# render from an MCF as a ConfigParser object
from pygeometa import render_template
mcf_cp = '...' # some ConfigParser object
xml_string = render_template_string(mcf_cp, schema='iso19139')
Development
Setting up a Development Environment
Same as installing a package. Use a virtualenv. Also install developer requirements:
pip install -r requirements-dev.txt
Adding Another Metadata Schema to the Core
List of supported metadata schemas in pygeometa/templates/
To add support to new metadata schemas:
cp -r pygeometa/templates/iso19139 pygeometa/templates/new-schema
Then modify *.j2 files in the new pygeometa/templates/new-schema directory to comply to new metadata schema.
Running Tests
# via distutils
python setup.py test
# manually
cd tests
python run_tests.py
Code Conventions
Bugs and Issues
All bugs, enhancements and issues are managed on GitHub.
History
pygeometa originated within an internal project called pygdm, which provided generic geospatial data management functions. pygdm (now at end of life) was used for generating MSC/CMC geospatial metadata. pygeometa was pulled out of pygdm to focus on the core requirement of generating geospatial metadata within a real-time environment.
In 2015 pygeometa was made publically available in support of the Treasury Board Policy on Acceptable Network and Device Use.
Contact
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.