pygeometa is a Python package to generate metadata for geospatial datasets.
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.
- 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
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
pygeometa is best installed and used within a Python virtualenv.
- Python 2.7 and above. Works with Python 3.
- Python virtualenv package
Dependencies are listed in requirements.txt. Dependencies are automatically installed during pygeometa's installation.
virtualenv my-env
cd my-env
. bin/activate
git clone https://github.com/geopython/pygeometa.git
cd pygeometa
pip install -r requirements.txt
python setup.py build
python setup.py install
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
Schemas supported by pygeometa:
- iso19139, reference
- iso19139-hnap, reference
- Local schema, specified with
--schema_local=/path/to/my-schema
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)
Same as installing a package. Use a virtualenv. Also install developer requirements:
pip install -r requirements-dev.txt
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.
# via distutils
python setup.py test
# manually
cd tests
python run_tests.py
All bugs, enhancements and issues can be logged on SSC GitLab at https://github.com/geopython/pygeometa/issues
pygeometa originated within the pygdm
project, 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.