[seiscomp, scanloc] Install, add .gitignore
This commit is contained in:
84
bin/scdumpobject
Executable file
84
bin/scdumpobject
Executable file
@ -0,0 +1,84 @@
|
||||
#!/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 seiscomp.client, seiscomp.datamodel, seiscomp.io
|
||||
|
||||
|
||||
class ObjectDumper(seiscomp.client.Application):
|
||||
|
||||
def __init__(self):
|
||||
seiscomp.client.Application.__init__(self, len(sys.argv), sys.argv)
|
||||
self.setMessagingEnabled(True)
|
||||
self.setDatabaseEnabled(True, False)
|
||||
self.setMessagingUsername("")
|
||||
|
||||
def createCommandLineDescription(self):
|
||||
seiscomp.client.Application.createCommandLineDescription(self)
|
||||
self.commandline().addGroup("Dump")
|
||||
self.commandline().addStringOption("Dump", "public-id,P", "publicID")
|
||||
|
||||
def loadEventParametersObject(self, publicID):
|
||||
for tp in (
|
||||
seiscomp.datamodel.Pick,
|
||||
seiscomp.datamodel.Amplitude,
|
||||
seiscomp.datamodel.Origin,
|
||||
seiscomp.datamodel.Event,
|
||||
seiscomp.datamodel.FocalMechanism,
|
||||
seiscomp.datamodel.Magnitude,
|
||||
seiscomp.datamodel.StationMagnitude,
|
||||
):
|
||||
|
||||
obj = self.query().loadObject(tp.TypeInfo(), publicID)
|
||||
obj = tp.Cast(obj)
|
||||
if obj:
|
||||
ep = seiscomp.datamodel.EventParameters()
|
||||
ep.add(obj)
|
||||
return ep
|
||||
|
||||
def loadInventoryObject(self, publicID):
|
||||
for tp in (
|
||||
seiscomp.datamodel.Network,
|
||||
seiscomp.datamodel.Station,
|
||||
seiscomp.datamodel.Sensor,
|
||||
seiscomp.datamodel.SensorLocation,
|
||||
seiscomp.datamodel.Stream,
|
||||
):
|
||||
|
||||
obj = self.query().loadObject(tp.TypeInfo(), publicID)
|
||||
obj = tp.Cast(obj)
|
||||
if obj:
|
||||
return obj
|
||||
|
||||
def run(self):
|
||||
publicID = self.commandline().optionString("public-id")
|
||||
obj = self.loadEventParametersObject(publicID)
|
||||
if obj is None:
|
||||
obj = self.loadInventoryObject(publicID)
|
||||
if obj is None:
|
||||
raise ValueError("unknown object '" + publicID + "'")
|
||||
|
||||
# dump formatted XML archive to stdout
|
||||
ar = seiscomp.io.XMLArchive()
|
||||
ar.setFormattedOutput(True)
|
||||
ar.create("-")
|
||||
ar.writeObject(obj)
|
||||
ar.close()
|
||||
return True
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = ObjectDumper()
|
||||
app()
|
Reference in New Issue
Block a user