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.
Installation
pygeometa is best installed and used within a Python virtualenv.
Requirements
- Python 3 and above
- Python virtualenv package
Dependencies
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 https://github.com/geopython/pygeometa.git cd pygeometa python setup.py build python setup.py install
Running
From the command line
# show all subcommands pygeometa # 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:
- dcat, reference
- iso19139, reference
- iso19139-hnap, reference
- iso19139-2, reference
- wmo-cmp, reference
- wmo-wigos, reference
- Local schema, specified with
--schema_local=/path/to/my-schema
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: ff.write(xml_string)
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 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/__init__.py
# 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/__init__.py pygeometa/schemas/foo vi pygeometa/schemas/foo/__init__.py # update class name and super().__init__() function accordingly ### Running Tests ```bash # via setuptools python setup.py test # manually cd tests python run_tests.py
Releasing
python setup.py sdist bdist_wheel --universal twine upload dist/*
Code Conventions
Bugs and Issues
All bugs, enhancements and issues are managed on GitHub.
Contact
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
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 |
Hashes for pygeometa-0.6.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 49a6f61d26e6a29e925ec1d7b783cc6d8da9013ec8730c35f813ee6f84a7c810 |
|
MD5 | 942d453669950aa91987c1dcf20755bd |
|
BLAKE2-256 | 196d8b60ab0a69e7db1e538ca7deec0fbcaceeb26ed617c1bbc9fd3758b19c65 |