Skip to main content

pygeometa is a Python package to generate metadata for geospatial datasets

Project description

Build Status Join the chat at


pygeometa is a Python package to generate metadata for geospatial datasets.


pygeometa is best installed and used within a Python virtualenv.



Dependencies are listed in requirements.txt. Dependencies are automatically installed during pygeometa's installation.

Installing the Package

python3 -m venv my-env
cd my-env
. bin/activate
git clone
cd pygeometa
python build
python install


From the command line

# show all subcommands

# show all supported schemas
pygeometa schemas

# provide a basic sanity check/report on an MCF
pygeometa info --mcf=path/to/file.yml

# generate an ISO 19139 document to stdout
pygeometa generate-metadata --mcf=path/to/file.yml --schema=iso19139

# generate an ISO 19139 document to disk
pygeometa generate-metadata --mcf=path/to/file.yml --schema=iso19139 --output=some_file.xml

# generate an ISO 19139 document to disk with debugging (ERROR, WARNING, INFO, DEBUG)
pygeometa generate-metadata --mcf=path/to/file.yml --schema=iso19139 --output=some_file.xml --verbosity=DEBUG # add verbose (ERROR, WARNING, INFO, DEBUG)

# use your own defined schema
pygeometa generate-metadata --mcf=path/to/file.yml --schema_local=/path/to/my-schema --output=some_file.xml  # to file

Supported schemas

Schemas supported by pygeometa:

Using the API from Python

from pygeometa.core import read_mcf, render_j2_template

# read from disk
mcf_dict = read_mcf('/path/to/file.yml')
# read from string
mcf_dict = read_mcf(mcf_string)

# choose ISO 19139 output schema
from pygeometa.schemas.iso19139 import ISO19139OutputSchema
iso_os = ISO19139OutputSchema()

# default schema
xml_string = iso_os.write(mcf_dict)

# user-defined schema
xml_string = render_j2_template(mcf_dict, template_dir='/path/to/new-schema')

# write to disk
with open('output.xml', 'wb') as ff:


Setting up a Development Environment

Same as installing a package. Use a virtualenv. Also install developer requirements:

pip install -r requirements-dev.txt

Adding a Metadata Schema to the Core

Adding an output metadata schemas to pygeometa involves extending pygeometa.schemas.base.BaseOutputSchema and supporting the write function to return a string of exported metadata content. If you are using Jinja2 templates, see the next section. If you are using another means of generating metadata (lxml, xml.etree, json, etc.), override the ABS write class to emit a string using your tooling/workflow accordingly. See the below sections for examples.

Once you have added your metadata schema, you need to register it with pygeometa's schema registry:

vi pygeometa/schemas/
# edit the SCHEMAS dict with the metadata schema name and dotted path of class

Jinja2 templates

To add support for a new metadata schema using Jinja2 templates:

cp -r pygeometa/schemas/iso19139 pygeometa/schemas/new-schema

Then modify *.j2 files in the new pygeometa/schemas/new-schema directory to comply to new metadata schema.

Custom tooling

To add support for a new metadata schemas using other tooling/workflow:

mkdir pygeometa/schemas/foo
cp pygeometa/schemas/iso19139/ pygeometa/schemas/foo
vi pygeometa/schemas/foo/
# update class name and super().__init__() function accordingly 

### Running Tests

# via setuptools
python test
# manually
cd tests


python sdist bdist_wheel --universal
twine upload dist/*

Code Conventions

Bugs and Issues

All bugs, enhancements and issues are managed on GitHub.


Project details

Download files

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

Files for pygeometa, version 0.6.0
Filename, size File type Python version Upload date Hashes
Filename, size pygeometa-0.6.0-py2.py3-none-any.whl (54.4 kB) File type Wheel Python version py2.py3 Upload date Hashes View
Filename, size pygeometa-0.6.0.tar.gz (33.6 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page