The International Federation of Digital Seismograph Networks (FDSN) has defined web services for accessing waveform, station and event information. Data centres adopting these, such as GeoNet and IRIS, will be able to offer their data in a consistent way.
The FDSN specification defines an internationally recognized, standard interface. Programs that access data via these FDSN web services should also be compatible with any other data centre implementing FDSN interfaces.
GeoNet is currently in the process of upgrading our FDSN webservices. Our current service at service.geonet.org.nz is only supporting station and waveform requests.
Our new service is in beta and can be tested using beta-service.geonet.org.nz. It will include all three services and will be more robust. If you test our beta please provide us with feedback, especially if you can break it! Please include an example of your request with your feedback. Please provide feedback by raising an issue in our github repository.
Where is the beta FDSN webservice at now:
|station||Full station service, including historical stations|
|event||Full event service|
|dataselect||Only 2016 waveform data is available|
GeoNet uses the following address to support our implementation
The syntax of the queries can be displayed at:
Request waveforms from a strong motion sensor (location 20) at station TDHS for all channels and sample rates (channel ?N?) for the period starting from 2016-09-01 at 16:37 for 300 seconds.
Output is a miniseed file. This example uses Curl to download data from a **single query** to the file test.mseed:
This example uses **multiple queries** using POST, in this case saving to test_post.mseed: `curl -v --data-binary @post_input.txt http://service.geonet.org.nz/fdsnws/dataselect/1/query -o test_post.mseed` The contents of post_input.txt:
curl "http://service.geonet.org.nz/fdsnws/dataselect/1/query?network=NZ&station=CHST&location=01&channel=LOG&starttime=2017-01-09T00:00:00&endtime=2017-01-09T23:00:00" -o test.mseed
NZ ALRZ 10 EHN 2017-01-09T00:00:00 2017-01-09T02:00:00 NZ ALRZ 10 AC* 2017-01-02T00:00:00 2017-01-10T00:00:00 NZ ALRZ 10 B? 2017-01-09T00:00:00 2017-01-10T00:00:00
Request event information for the Kaikoura earthquake. This is a single event request using the Public ID of the earthquake.
Request information about aftershocks from the first 24-hours afterwards above M6. This searches the catalogue and retrieves all available events.
Output is in QuakeML format
Note: Event is currently only available at beta-service.geonet.org.nz
Request station metadata for stations within a 0.5 degree radius from the Kaikoura earthquake epicentre.
Output is in StationXML format
Python and the Obspy module are commonly used in the scientific community. Below are the equivalent python examples to the URL-based ones above. Outputs are the trace, catalogue and inventory objects, they can be exported as files in various formats if needed. See Obspy documentation and Obspy tutorial for more examples and information.
In Obspy you don't need to specify the full address of GeoNet's service, i.e. service.geonet.org.nz you can simply use the FDSN client shortcut "GEONET".
Note if you want to use test the beta version replace "GEONET" with "http://beta-service.geonet.org.nz"
from obspy import UTCDateTime
from obspy.clients.fdsn import Client as FDSN_Client
client = FDSN_Client("GEONET") t = UTCDateTime("2016-09-01T16:37:00.000") st = client.get_waveforms("NZ", "TDHS","20", "?N?", t, t + 300) st.plot()
Request information for a single earthquake using it's Public ID, this example uses the M7.8 Kaikoura earthquake
cat = client.get_events(eventid="2016p858000")
Add to this the earthquakes of magnitude 6 for 24 hours following the earthquake
cat += client.get_events(starttime="2016-11-13 11:05:00.000", endtime="2016-11-14 11:00:00.000", minmagnitude=6)
This request is for station information, down to the channel level, for stations within a 0.5 degree radius around the epicentre of the Kaikoura earthquake
inventory = client.get_stations(latitude=-42.693,longitude=173.022,maxradius=0.5, level="station")