shared-snippets/python/seedconverter/inventoryconverter.py
2024-08-28 17:22:21 +02:00

62 lines
2.4 KiB
Python

import os
import argparse
from obspy import read_inventory
def convert_inventory(input_file,
output_format,
output_dir="."):
"""
Function to read Inventory from provided file and convert it to FDSN Station XML format.
The supported input file formats are: INVENTORYXML, RESP, SC3ML, SEED, STATIONTXT, STATIONXML, XSEED
:type input_file: str
:param input_file: File name or path to the input inventory file.
:type output_format: str
:param output_format: Format of the output inventory file.
Supported formats: CSS, KML, SACPZ, SHAPEFILE, STATIONTXT, STATIONXML.
:type output_dir: str, optional
:param output_dir: Directory to which output files are written.
Defaults to current directory.
"""
inv = read_inventory(input_file)
result_filename = os.path.splitext(os.path.basename(input_file))[0] + "." + _get_extension(output_format)
inv.write(output_dir + "/" + result_filename, format=output_format)
return result_filename
def _get_extension(output_format):
format = output_format.upper()
if format == 'STATIONXML':
return "xml"
elif format == 'STATIONTXT':
return "txt"
elif format == 'SHAPEFILE':
return "shp"
else:
return format.lower()
def main():
parser = argparse.ArgumentParser(description="Convert provided inventory file"
" to another inventory format.")
parser.add_argument("input_file", help="Provide inventory file to convert."
"The supported input file formats are: INVENTORYXML, RESP, SC3ML, "
"SEED, STATIONTXT, STATIONXML, XSEED")
parser.add_argument("--output_format",
help="Format of the output inventory file. "
"Supported formats: CSS, KML, SACPZ, SHAPEFILE, STATIONTXT, STATIONXML.",
type=str, default=None, required=True)
parser.add_argument("--output_dir",
help="Directory to which output files are written. "
"Defaults to current directory.",
type=str, default=".", required=False)
args = parser.parse_args()
filename = convert_inventory(**vars(args))
print('Created file:')
print(filename)
return
if __name__ == "__main__":
main()