[seiscomp, scanloc] Install, add .gitignore
This commit is contained in:
105
bin/inv2dlsv
Executable file
105
bin/inv2dlsv
Executable file
@ -0,0 +1,105 @@
|
||||
#!/usr/bin/env seiscomp-python
|
||||
# -*- coding: utf-8 -*-
|
||||
############################################################################
|
||||
# Copyright (C) GFZ Potsdam #
|
||||
# All rights reserved. #
|
||||
# #
|
||||
# GNU Affero General Public License Usage #
|
||||
# This file may be used under the terms of the GNU Affero #
|
||||
# Public License version 3.0 as published by the Free Software Foundation #
|
||||
# and appearing in the file LICENSE included in the packaging of this #
|
||||
# file. Please review the following information to ensure the GNU Affero #
|
||||
# Public License version 3.0 requirements will be met: #
|
||||
# https://www.gnu.org/licenses/agpl-3.0.html. #
|
||||
############################################################################
|
||||
|
||||
import sys
|
||||
import io
|
||||
from seiscomp.legacy.fseed import *
|
||||
from seiscomp.legacy.db.seiscomp3 import sc3wrap
|
||||
from seiscomp.legacy.db.seiscomp3.inventory import Inventory
|
||||
import seiscomp.datamodel
|
||||
import seiscomp.io
|
||||
|
||||
ORGANIZATION = "EIDA"
|
||||
|
||||
|
||||
def iterinv(obj):
|
||||
return (j for i in obj.values() for j in i.values())
|
||||
|
||||
|
||||
def main():
|
||||
if len(sys.argv) < 1 or len(sys.argv) > 3:
|
||||
print("Usage inv2dlsv [in_xml [out_dataless]]", file=sys.stderr)
|
||||
return 1
|
||||
|
||||
if len(sys.argv) > 1:
|
||||
inFile = sys.argv[1]
|
||||
else:
|
||||
inFile = "-"
|
||||
|
||||
if len(sys.argv) > 2:
|
||||
out = sys.argv[2]
|
||||
else:
|
||||
out = ""
|
||||
|
||||
sc3wrap.dbQuery = None
|
||||
|
||||
ar = seiscomp.io.XMLArchive()
|
||||
if not ar.open(inFile):
|
||||
raise IOError(inFile + ": unable to open")
|
||||
|
||||
obj = ar.readObject()
|
||||
if obj is None:
|
||||
raise TypeError(inFile + ": invalid format")
|
||||
|
||||
sc3inv = seiscomp.datamodel.Inventory.Cast(obj)
|
||||
if sc3inv is None:
|
||||
raise TypeError(inFile + ": invalid format")
|
||||
|
||||
inv = Inventory(sc3inv)
|
||||
inv.load_stations("*", "*", "*", "*")
|
||||
inv.load_instruments()
|
||||
|
||||
vol = SEEDVolume(inv, ORGANIZATION, "", resp_dict=False)
|
||||
|
||||
for net in iterinv(inv.network):
|
||||
for sta in iterinv(net.station):
|
||||
for loc in iterinv(sta.sensorLocation):
|
||||
for strm in iterinv(loc.stream):
|
||||
try:
|
||||
vol.add_chan(
|
||||
net.code,
|
||||
sta.code,
|
||||
loc.code,
|
||||
strm.code,
|
||||
strm.start,
|
||||
strm.end,
|
||||
)
|
||||
|
||||
except SEEDError as exc:
|
||||
print(
|
||||
f"Error ({net.code},{sta.code},{loc.code},{strm.code}): {str(exc)}",
|
||||
file=sys.stderr,
|
||||
)
|
||||
|
||||
if not out or out == "-":
|
||||
output = io.BytesIO()
|
||||
vol.output(output)
|
||||
stdout = sys.stdout.buffer if hasattr(sys.stdout, "buffer") else sys.stdout
|
||||
stdout.write(output.getvalue())
|
||||
stdout.flush()
|
||||
output.close()
|
||||
else:
|
||||
with open(sys.argv[2], "wb") as fd:
|
||||
vol.output(fd)
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
sys.exit(main())
|
||||
except Exception as e:
|
||||
print(f"Error: {str(e)}", file=sys.stderr)
|
||||
sys.exit(1)
|
Reference in New Issue
Block a user