[seiscomp, scanloc] Install, add .gitignore
131
share/fdsnws/availability-builder-extent.html
Normal file
@ -0,0 +1,131 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="author" content="gempa GmbH">
|
||||
<title>SeisComP - Data Availability</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../css/fdsnws.css">
|
||||
<link rel="stylesheet" type="text/css" href="../../js/tcal/tcal.css">
|
||||
<script type="text/javascript" src="../../js/tcal/tcal.js"></script>
|
||||
<script type="text/javascript" src="../../js/fdsnws-query.js"></script>
|
||||
<script type="text/javascript">
|
||||
A_TCALCONF['format'] = 'Y-m-dT00:00:00';
|
||||
|
||||
window.onload = function() { fdsnwsInitQueryFormLocation('extent'); };
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<p><a href="./">Parent Directory</a></p>
|
||||
<h1>SeisComP Data Availability /extent - URL Builder</h1>
|
||||
<form id="query-form" action="query" method="GET">
|
||||
<fieldset>
|
||||
<legend>Time constraints</legend>
|
||||
<table class="builder">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Start time</td>
|
||||
<td><input type="text" size="10" maxlength="26" name="starttime" value="" class="tcal"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>End time</td>
|
||||
<td><input type="text" size="10" maxlength="26" name="endtime" value="" class="tcal"/></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend>Channel constraints</legend>
|
||||
<table class="builder">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Network</td>
|
||||
<td><input type="text" size="10" name="network" value="" placeholder="AB,C?" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Station</td>
|
||||
<td><input type="text" size="10" name="station" value="" placeholder="ABC,D*" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Location</td>
|
||||
<td><input type="text" size="10" name="location" value="" placeholder="00" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Channel</td>
|
||||
<td><input type="text" size="10" name="channel" value="" placeholder="BH?" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Quality</td>
|
||||
<td><input type="text" size="10" name="quality" value="" placeholder="*" /></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend>Service specific constrains</legend>
|
||||
<table class="builder">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Merge properties</td>
|
||||
<td>
|
||||
<select name="merge" multiple>
|
||||
<option value="samplerate">Sample rate</option>
|
||||
<option value="quality">Quality</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Authentication</td>
|
||||
<td><input type="checkbox" name="queryauth" value="extentauth"/></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend>Output control</legend>
|
||||
<table class="builder">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Order by</td>
|
||||
<td>
|
||||
<select name="orderby">
|
||||
<option value="">Stream ID (default)</option>
|
||||
<option value="timespancount">Number of timespans (ascending)</option>
|
||||
<option value="timespancount_desc">Number of timespans (descending)</option>
|
||||
<option value="latestupdate">Update date (ascending)</option>
|
||||
<option value="latestupdate_desc">Update date (descending)</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Limit</td>
|
||||
<td><input type="number" name="limit" min="0" step="10" value="" placeholder="100" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Include restricted</td>
|
||||
<td><input type="checkbox" name="includerestricted" value="true" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Format</td>
|
||||
<td>
|
||||
<select name="format">
|
||||
<option value="">Text (default)</option>
|
||||
<option value="geocsv">GEO CSV</option>
|
||||
<option value="json">JSON</option>
|
||||
<option value="request">Request</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>No data 404</td>
|
||||
<td><input type="checkbox" name="nodata" value="404" checked="checked" /></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</fieldset>
|
||||
</form>
|
||||
<fieldset>
|
||||
<legend>URL</legend>
|
||||
<p><a id="query-url" href=""></a></p>
|
||||
</fieldset>
|
||||
</body>
|
||||
</html>
|
148
share/fdsnws/availability-builder-query.html
Normal file
@ -0,0 +1,148 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="author" content="gempa GmbH">
|
||||
<title>SeisComP - Data Availability</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../css/fdsnws.css">
|
||||
<link rel="stylesheet" type="text/css" href="../../js/tcal/tcal.css">
|
||||
<script type="text/javascript" src="../../js/tcal/tcal.js"></script>
|
||||
<script type="text/javascript" src="../../js/fdsnws-query.js"></script>
|
||||
<script type="text/javascript">
|
||||
A_TCALCONF['format'] = 'Y-m-dT00:00:00';
|
||||
|
||||
window.onload = fdsnwsInitQueryForm;
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<p><a href="./">Parent Directory</a></p>
|
||||
<h1>SeisComP Data Availability /query - URL Builder</h1>
|
||||
<form id="query-form" action="query" method="GET">
|
||||
<fieldset>
|
||||
<legend>Time constraints</legend>
|
||||
<table class="builder">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Start time</td>
|
||||
<td><input type="text" size="10" maxlength="26" name="starttime" value="" class="tcal"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>End time</td>
|
||||
<td><input type="text" size="10" maxlength="26" name="endtime" value="" class="tcal"/></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend>Channel constraints</legend>
|
||||
<table class="builder">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Network</td>
|
||||
<td><input type="text" size="10" name="network" value="" placeholder="AB,C?" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Station</td>
|
||||
<td><input type="text" size="10" name="station" value="" placeholder="ABC,D*" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Location</td>
|
||||
<td><input type="text" size="10" name="location" value="" placeholder="00" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Channel</td>
|
||||
<td><input type="text" size="10" name="channel" value="" placeholder="BH?" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Quality</td>
|
||||
<td><input type="text" size="10" name="quality" value="" placeholder="*" /></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend>Service specific constrains</legend>
|
||||
<table class="builder">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Merge properties</td>
|
||||
<td>
|
||||
<select name="merge" multiple>
|
||||
<option value="samplerate">Sample rate</option>
|
||||
<option value="quality">Quality</option>
|
||||
<option value="overlap">Overlap</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Gap merge tolerance</td>
|
||||
<td><input type="number" name="mergegaps" min="0" value="" placeholder="0.0" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Authentication</td>
|
||||
<td><input type="checkbox" name="queryauth" value="queryauth"/></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend>Output control</legend>
|
||||
<table class="builder">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Order by</td>
|
||||
<td>
|
||||
<select name="orderby" disabled="disabled">
|
||||
<option value="">Stream ID (default)</option>
|
||||
<option value="timespancount">Number of timespans (ascending)</option>
|
||||
<option value="timespancount_desc">Number of timespans (descending)</option>
|
||||
<option value="latestupdate">Update date (ascending)</option>
|
||||
<option value="latestupdate_desc">Update date (descending)</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Limit</td>
|
||||
<td><input type="number" name="limit" min="0" step="10" value="" placeholder="100" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Include restricted</td>
|
||||
<td><input type="checkbox" name="includerestricted" value="true" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Format</td>
|
||||
<td>
|
||||
<select name="format">
|
||||
<option value="">Text (default)</option>
|
||||
<option value="geocsv">GEO CSV</option>
|
||||
<option value="json">JSON</option>
|
||||
<option value="request">Request</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>No data 404</td>
|
||||
<td><input type="checkbox" name="nodata" value="404" checked="checked" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Show</td>
|
||||
<td>
|
||||
<select name="show" multiple>
|
||||
<option value="latestupdate">Latest update</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Exclude too large</td>
|
||||
<td><input type="checkbox" name="excludetoolarge" value="true" /></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</fieldset>
|
||||
</form>
|
||||
<fieldset>
|
||||
<legend>URL</legend>
|
||||
<p><a id="query-url" href=""></a></p>
|
||||
</fieldset>
|
||||
</body>
|
||||
</html>
|
59
share/fdsnws/availability.html
Normal file
@ -0,0 +1,59 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="author" content="gempa GmbH">
|
||||
<title>SeisComP - Data Availability</title>
|
||||
</head>
|
||||
<body>
|
||||
<p><a href="../">Parent Directory</a></p>
|
||||
<h1>SeisComP Data Availability Web Service</h1>
|
||||
<p>The data availability web service returns detailed time span information of
|
||||
what timeseries data is available at the DMC archive. The request type is
|
||||
<em>HTTP-GET</em> and <em>HTTP-POST</em>. Please refer to <a
|
||||
href="http://www.fdsn.org/webservices">http://www.fdsn.org/webservice</a> for
|
||||
a complete service description.</p>
|
||||
|
||||
<h2>Available URLs</h2>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="query">query</a> - Produces list of continuous time spans for
|
||||
selected channels (network, station, location, channel and quality) and
|
||||
time ranges.
|
||||
</li>
|
||||
<li>
|
||||
<a href="extent">extent</a> - Produces list of available time extents
|
||||
(earliest to latest) for selected channels (network, station, location and
|
||||
quality) and time ranges.
|
||||
</li>
|
||||
<li><a href="version">version</a></li>
|
||||
<li><a href="application.wadl">application.wadl</a></li>
|
||||
<li>builder - URL builder helping you to form your query
|
||||
<ul>
|
||||
<li><a href="builder-query">query</a> - continuous time spans</li>
|
||||
<li><a href="builder-extent">extent</a> - data extents</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h2>Feature Notes</h2>
|
||||
<ul>
|
||||
<li>back-end software: <a href="http://www.seiscomp.de">SeisComP</a></li>
|
||||
<li>The IRISWS availability implementation truncates the timespans of the
|
||||
returned data extents and segments to the requested start and end times (if
|
||||
any). This implementation truncates the start and end time only for the
|
||||
<em>request</em> format. The <em>text</em>, <em>geocsv</em> and
|
||||
<em>json</em> format will return the exact time windows extracted from the
|
||||
waveform archive.
|
||||
</li>
|
||||
<li><em>orderby</em> parameter not implemented for query request (to save
|
||||
memory the data is streamed from the database, to support the merge operation,
|
||||
the data needs to be ordered by time)</li>
|
||||
<li>additional request parameters:
|
||||
<ul>
|
||||
<li><em>excludetoolarge</em> (query): boolean, default: <em>true</em></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
150
share/fdsnws/availability.wadl
Normal file
@ -0,0 +1,150 @@
|
||||
<?xml version="1.0"?>
|
||||
<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="https://www.w3.org/Submission/wadl/wadl.xsd"
|
||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns="http://wadl.dev.java.net/2009/02">
|
||||
<resources base="/fdsnws/availability/1">
|
||||
<resource path="query">
|
||||
<method href="#queryGET"/>
|
||||
<method href="#queryPOST"/>
|
||||
</resource>
|
||||
<resource path="queryauth">
|
||||
<method href="#queryGET"/>
|
||||
<method href="#queryPOST"/>
|
||||
</resource>
|
||||
<resource path="extent">
|
||||
<method href="#extentGET"/>
|
||||
<method href="#extentPOST"/>
|
||||
</resource>
|
||||
<resource path="extentauth">
|
||||
<method href="#extentGET"/>
|
||||
<method href="#extentPOST"/>
|
||||
</resource>
|
||||
<resource path="version">
|
||||
<method name="GET">
|
||||
<response>
|
||||
<representation mediaType="text/plain"/>
|
||||
</response>
|
||||
</method>
|
||||
</resource>
|
||||
<resource path="application.wadl">
|
||||
<method name="GET">
|
||||
<response>
|
||||
<representation mediaType="application/xml"/>
|
||||
</response>
|
||||
</method>
|
||||
</resource>
|
||||
</resources>
|
||||
<method name="GET" id="queryGET">
|
||||
<request>
|
||||
<param name="starttime" style="query" type="xsd:dateTime"/>
|
||||
<param name="endtime" style="query" type="xsd:dateTime"/>
|
||||
<param name="network" style="query" type="xsd:string"/>
|
||||
<param name="station" style="query" type="xsd:string"/>
|
||||
<param name="location" style="query" type="xsd:string"/>
|
||||
<param name="channel" style="query" type="xsd:string"/>
|
||||
<param name="quality" style="query" type="xsd:string"/>
|
||||
<param name="merge" style="query" type="xsd:string" repeating="true">
|
||||
<option value="samplerate"/>
|
||||
<option value="quality"/>
|
||||
<option value="overlap"/>
|
||||
</param>
|
||||
<!-- not supported
|
||||
<param name="orderby" style="query" type="xsd:string" default="nslc_time_quality_samplerate">
|
||||
<option value="nslc_time_quality_samplerate"/>
|
||||
<option value="latestupdate"/>
|
||||
<option value="latestupdate_desc"/>
|
||||
<option value="timespancount"/>
|
||||
<option value="timespancount_desc"/>
|
||||
</param-->
|
||||
<param name="limit" style="query" type="xsd:int"/>
|
||||
<param name="includerestricted" style="query" type="xsd:boolean" default="false"/>
|
||||
<param name="format" style="query" type="xsd:string" default="text">
|
||||
<option value="text" mediaType="text/plain"/>
|
||||
<option value="geocsv" mediaType="text/csv"/>
|
||||
<option value="json" mediaType="application/json"/>
|
||||
<option value="request" mediaType="text/plain"/>
|
||||
</param>
|
||||
<param name="nodata" style="query" type="xsd:int" default="204">
|
||||
<option value="204"/>
|
||||
<option value="404"/>
|
||||
</param>
|
||||
<param name="show" style="query" type="xsd:string">
|
||||
<option value="latestupdate"/>
|
||||
</param>
|
||||
<param name="mergegaps" style="query" type="xsd:float" default="0.0"/>
|
||||
<!-- additional non standard parameter -->
|
||||
<param name="excludetoolarge" style="query" type="xsd:boolean" default="true"/>
|
||||
</request>
|
||||
<response status="200">
|
||||
<representation mediaType="text/plain"/>
|
||||
<representation mediaType="text/csv"/>
|
||||
<representation mediaType="application/json"/>
|
||||
</response>
|
||||
<response status="204 400 401 403 404 413 414 500 503">
|
||||
<representation mediaType="text/plain"/>
|
||||
</response>
|
||||
</method>
|
||||
<method name="POST" id="queryPOST">
|
||||
<response status="200">
|
||||
<representation mediaType="text/plain"/>
|
||||
<representation mediaType="text/csv"/>
|
||||
<representation mediaType="application/json"/>
|
||||
</response>
|
||||
<response status="204 400 401 403 404 413 414 500 503">
|
||||
<representation mediaType="text/plain"/>
|
||||
</response>
|
||||
</method>
|
||||
<method name="GET" id="extentGET">
|
||||
<request>
|
||||
<param name="starttime" style="query" type="xsd:dateTime"/>
|
||||
<param name="endtime" style="query" type="xsd:dateTime"/>
|
||||
<param name="network" style="query" type="xsd:string"/>
|
||||
<param name="station" style="query" type="xsd:string"/>
|
||||
<param name="location" style="query" type="xsd:string"/>
|
||||
<param name="channel" style="query" type="xsd:string"/>
|
||||
<param name="quality" style="query" type="xsd:string"/>
|
||||
<param name="merge" style="query" type="xsd:string" repeating="true">
|
||||
<option value="samplerate"/>
|
||||
<option value="quality"/>
|
||||
</param>
|
||||
<param name="orderby" style="query" type="xsd:string" default="nslc_time_quality_samplerate">
|
||||
<option value="nslc_time_quality_samplerate"/>
|
||||
<option value="latestupdate"/>
|
||||
<option value="latestupdate_desc"/>
|
||||
<option value="timespancount"/>
|
||||
<option value="timespancount_desc"/>
|
||||
</param>
|
||||
<param name="limit" style="query" type="xsd:int"/>
|
||||
<param name="includerestricted" style="query" type="xsd:boolean" default="false"/>
|
||||
<param name="format" style="query" type="xsd:string" default="text">
|
||||
<option value="text" mediaType="text/plain"/>
|
||||
<option value="geocsv" mediaType="text/csv"/>
|
||||
<option value="json" mediaType="application/json"/>
|
||||
<option value="request" mediaType="text/plain"/>
|
||||
</param>
|
||||
<param name="nodata" style="query" type="xsd:int" default="204">
|
||||
<option value="204"/>
|
||||
<option value="404"/>
|
||||
</param>
|
||||
</request>
|
||||
<response status="200">
|
||||
<representation mediaType="text/plain"/>
|
||||
<representation mediaType="text/csv"/>
|
||||
<representation mediaType="application/json"/>
|
||||
</response>
|
||||
<response status="204 400 401 403 404 413 414 500 503">
|
||||
<representation mediaType="text/plain"/>
|
||||
</response>
|
||||
</method>
|
||||
<method name="POST" id="extentPOST">
|
||||
<response status="200">
|
||||
<representation mediaType="text/plain"/>
|
||||
<representation mediaType="text/csv"/>
|
||||
<representation mediaType="application/json"/>
|
||||
</response>
|
||||
<response status="204 400 401 403 404 413 414 500 503">
|
||||
<representation mediaType="text/plain"/>
|
||||
</response>
|
||||
</method>
|
||||
</application>
|
2
share/fdsnws/catalogs.xml
Normal file
@ -0,0 +1,2 @@
|
||||
<Catalogs>
|
||||
</Catalogs>
|
2
share/fdsnws/contributors.xml
Normal file
@ -0,0 +1,2 @@
|
||||
<Contributors>
|
||||
</Contributors>
|
14
share/fdsnws/css/fdsnws.css
Normal file
@ -0,0 +1,14 @@
|
||||
#query-form fieldset {
|
||||
width: 400px;
|
||||
display: table-cell;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
fieldset > legend {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
input {
|
||||
text-align: left;
|
||||
}
|
||||
|
103
share/fdsnws/dataselect-builder.html
Normal file
@ -0,0 +1,103 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="author" content="gempa GmbH">
|
||||
<title>SeisComP FDSNWS - DataSelect</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../css/fdsnws.css">
|
||||
<link rel="stylesheet" type="text/css" href="../../js/tcal/tcal.css">
|
||||
<script type="text/javascript" src="../../js/tcal/tcal.js"></script>
|
||||
<script type="text/javascript" src="../../js/fdsnws-query.js"></script>
|
||||
<script type="text/javascript">
|
||||
A_TCALCONF['format'] = 'Y-m-dT00:00:00';
|
||||
|
||||
window.onload = fdsnwsInitQueryForm;
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<p><a href="./">Parent Directory</a></p>
|
||||
<h1>SeisComP FDSNWS DataSelect - URL Builder</h1>
|
||||
<form id="query-form" action="query" method="GET">
|
||||
<fieldset>
|
||||
<legend>Time constraints</legend>
|
||||
<table class="builder">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Start Time</td>
|
||||
<td><input type="text" size="10" maxlength="26" name="starttime" value="" class="tcal"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>End Time</td>
|
||||
<td><input type="text" size="10" maxlength="26" name="endtime" value="" class="tcal"/></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend>Channel constraints</legend>
|
||||
<table class="builder">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Network</td>
|
||||
<td><input type="text" size="10" name="network" value="" placeholder="AB,C?" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Station</td>
|
||||
<td><input type="text" size="10" name="station" value="" placeholder="ABC,D*" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Location</td>
|
||||
<td><input type="text" size="10" name="location" value="" placeholder="00" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Channel</td>
|
||||
<td><input type="text" size="10" name="channel" value="" placeholder="BH?" /></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend>Service specific constraints</legend>
|
||||
<table class="builder">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Quality</td>
|
||||
<td><select name="quality" disabled="disabled"><option value="B">B</option></select></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Minimum Length (s)</td>
|
||||
<td><input type="text" size="10" name="minimumlength" value="0.0" disabled="disabled"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Longest Only</td>
|
||||
<td><input type="checkbox" name="longestonly" value="false" disabled="disabled"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Authentication</td>
|
||||
<td><input type="checkbox" name="queryauth" value="queryauth"/></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend>Output control</legend>
|
||||
<table class="builder">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Format</td>
|
||||
<td><select name="format" disabled="disabled"><option value="miniseed">miniseed</option></select></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>No Data 404</td>
|
||||
<td><input type="checkbox" name="nodata" value="404" checked="checked"/></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</fieldset>
|
||||
</form>
|
||||
<fieldset>
|
||||
<legend>URL</legend>
|
||||
<p><a id="query-url" href=""></a></p>
|
||||
</fieldset>
|
||||
</body>
|
||||
</html>
|
50
share/fdsnws/dataselect.html
Normal file
@ -0,0 +1,50 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="author" content="gempa GmbH">
|
||||
<title>SeisComP FDSNWS - DataSelect</title>
|
||||
</head>
|
||||
<body>
|
||||
<p><a href="../">Parent Directory</a></p>
|
||||
<h1>SeisComP FDSNWS DataSelect Web Service</h1>
|
||||
<p>The dataselect Web service provides access to time series data in <a
|
||||
href="http://www.iris.edu/data/miniseed.htm">miniSEED</a> format. The data may
|
||||
be filtered e.g. by time, station and network parameters. The request type is
|
||||
<em>HTTP-GET</em> and <em>HTTP-POST</em>. Please refer to
|
||||
<a href="http://www.fdsn.org/webservices">http://www.fdsn.org/webservice</a>
|
||||
for a complete service description.</p>
|
||||
|
||||
<h2>Available URLs</h2>
|
||||
<ul>
|
||||
<li><a href="query">query</a></li>
|
||||
<li><a href="queryauth">queryauth</a></li>
|
||||
<li><a href="version">version</a></li>
|
||||
<li><a href="application.wadl">application.wadl</a></li>
|
||||
<li><a href="builder">builder</a></li>
|
||||
<li><a href="auth">auth</a></li>
|
||||
</ul>
|
||||
|
||||
<h2>Feature Notes</h2>
|
||||
<ul>
|
||||
<li>back-end software: <a href="http://www.seiscomp.de">SeisComP</a></li>
|
||||
<li><em>quality</em> request parameter not implemented (information not
|
||||
available in SeisComP)</li>
|
||||
<li><em>minimumlength</em> request parameter not implemented</li>
|
||||
<li><em>longestonly</em> request parameter not implemented</li>
|
||||
<li>access to restricted networks and stations is only granted through the
|
||||
<em>queryauth</em> method</li>
|
||||
<li>
|
||||
<b>No</b> trimming of miniSEED records to requested time window —
|
||||
This FDSNWS implementation returns the records as available in its data
|
||||
source, e.g., SDS archive. It is guaranteed that the requested time range
|
||||
is within the returned data (if available in the archive) but not that it
|
||||
is exactly the requested time range. FDSNWS does not trim and therefore
|
||||
re-encode miniSEED records. The rationale for that is that miniSEED
|
||||
records are probably further distributed and stored in other archives and
|
||||
we do not see the point in modifying them. Furthermore we do not want to
|
||||
increase the load on the web server with that extra processing step.
|
||||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
65
share/fdsnws/dataselect.wadl
Normal file
@ -0,0 +1,65 @@
|
||||
<?xml version="1.0"?>
|
||||
<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="https://www.w3.org/Submission/wadl/wadl.xsd"
|
||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns="http://wadl.dev.java.net/2009/02">
|
||||
<resources base="/fdsnws/dataselect/1">
|
||||
<resource path="query">
|
||||
<method href="#queryGET"/>
|
||||
<method href="#queryPOST"/>
|
||||
</resource>
|
||||
<resource path="queryauth">
|
||||
<method href="#queryGET"/>
|
||||
<method href="#queryPOST"/>
|
||||
</resource>
|
||||
<resource path="version">
|
||||
<method name="GET">
|
||||
<response>
|
||||
<representation mediaType="text/plain"/>
|
||||
</response>
|
||||
</method>
|
||||
</resource>
|
||||
<resource path="application.wadl">
|
||||
<method name="GET">
|
||||
<response>
|
||||
<representation mediaType="application/xml"/>
|
||||
</response>
|
||||
</method>
|
||||
</resource>
|
||||
</resources>
|
||||
<method name="GET" id="queryGET">
|
||||
<request>
|
||||
<param name="starttime" style="query" type="xsd:dateTime"/>
|
||||
<param name="endtime" style="query" type="xsd:dateTime"/>
|
||||
<param name="network" style="query" type="xsd:string"/>
|
||||
<param name="station" style="query" type="xsd:string"/>
|
||||
<param name="location" style="query" type="xsd:string"/>
|
||||
<param name="channel" style="query" type="xsd:string"/>
|
||||
<param name="quality" style="query" default="B">
|
||||
<option value="B"/>
|
||||
<option value="M"/>
|
||||
</param>
|
||||
<param name="format" style="query" type="xsd:string" default="miniseed">
|
||||
<option value="miniseed"/>
|
||||
</param>
|
||||
<param name="nodata" style="query" type="xsd:int" default="204">
|
||||
<option value="204"/>
|
||||
<option value="404"/>
|
||||
</param>
|
||||
</request>
|
||||
<response status="200">
|
||||
<representation mediaType="application/vnd.fdsn.mseed"/>
|
||||
</response>
|
||||
<response status="204 400 401 403 404 413 414 500 503">
|
||||
<representation mediaType="text/plain"/>
|
||||
</response>
|
||||
</method>
|
||||
<method name="POST" id="queryPOST">
|
||||
<response status="200">
|
||||
<representation mediaType="application/vnd.fdsn.mseed"/>
|
||||
</response>
|
||||
<response status="204 400 401 403 404 413 414 500 503">
|
||||
<representation mediaType="text/plain"/>
|
||||
</response>
|
||||
</method>
|
||||
</application>
|
213
share/fdsnws/event-builder.html
Normal file
@ -0,0 +1,213 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="author" content="gempa GmbH">
|
||||
<title>SeisComP FDSNWS - Event</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../css/fdsnws.css">
|
||||
<link rel="stylesheet" type="text/css" href="../../js/tcal/tcal.css">
|
||||
<script type="text/javascript" src="../../js/tcal/tcal.js"></script>
|
||||
<script type="text/javascript" src="../../js/fdsnws-query.js"></script>
|
||||
<script type="text/javascript">
|
||||
A_TCALCONF['format'] = 'Y-m-dT00:00:00';
|
||||
|
||||
window.onload = fdsnwsInitQueryForm;
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<p><a href="./">Parent Directory</a></p>
|
||||
<h1>SeisComP FDSNWS Event - URL Builder</h1>
|
||||
<form id="query-form" action="query" method="GET">
|
||||
<fieldset>
|
||||
<legend>Time constraints</legend>
|
||||
<table class="builder">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Start Time</td>
|
||||
<td><input type="text" size="10" maxlength="26" name="starttime" value="" class="tcal"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>End Time</td>
|
||||
<td><input type="text" size="10" maxlength="26" name="endtime" value="" class="tcal"/></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend>Geographic constraints</legend>
|
||||
<input type="radio" id="loc-none" name="location" value=""><label for="loc-none">None</label><br>
|
||||
<input type="radio" id="loc-bbox" name="location" value=""><label for="loc-bbox">Bounding Box</label><br>
|
||||
<input type="radio" id="loc-circle" name="location" value=""><label for="loc-circle">Circle</label><br>
|
||||
<table class="builder" id="loc-bbox-input">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Minimum Latitude</td>
|
||||
<td><input type="number" name="minlatitude" min="-90" max="90" step="1" value="" placeholder="-90.0" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Maximum Latitude</td>
|
||||
<td><input type="number" name="maxlatitude" min="-90" max="90" step="1" value="" placeholder="90.0" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Minimum Longitude</td>
|
||||
<td><input type="number" name="minlongitude" min="-180" max="180" step="1" value="" placeholder="-180.0" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Maximum Longitude</td>
|
||||
<td><input type="number" name="maxlongitude" min="-180" max="180" step="1" value="" placeholder="180.0" /></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="builder" id="loc-circle-input">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Latitude</td>
|
||||
<td><input type="number" name="latitude" min="-90" max="90" step="1" value="" placeholder="0.0" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Longitude</td>
|
||||
<td><input type="number" name="longitude" min="-180" max="180" step="1" value="" placeholder="0.0" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Minimum Radius</td>
|
||||
<td><input type="number" name="minradius" min="0" max="180" step="1" value="" placeholder="0.0" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Maximum Radius</td>
|
||||
<td><input type="number" name="maxradius" min="0" max="180" step="1" value="" placeholder="180" /></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend>Service specific constraints</legend>
|
||||
<table class="builder">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Minimum Depth (km)</td>
|
||||
<td><input type="number" name="mindepth" min="-10" value="" placeholder="0.0" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Maximum Depth (km)</td>
|
||||
<td><input type="number" name="maxdepth" min="-10" value="" placeholder="300.0" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Minimum Magnitude</td>
|
||||
<td><input type="number" name="minmagnitude" min="-1" max="12" step="0.1" value="" placeholder="2.0" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Maximum Magnitude</td>
|
||||
<td><input type="number" name="maxmagnitude" min="-1" max="12" step="0.1" value="" placeholder="5.0" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Magnitude Type</td>
|
||||
<td><input type="text" size="10" maxlength="10" name="magnitudetype" value="" placeholder="M" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Event Type</td>
|
||||
<td><input type="text" size="16" name="eventtype" value="" placeholder="earthquake,unknown" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>All Origins</td>
|
||||
<td><input type="checkbox" name="includeallorigins" value="true" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>All Magnitudes</td>
|
||||
<td><input type="checkbox" name="includeallmagnitudes" value="true" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Arrivals</td>
|
||||
<td><input type="checkbox" name="includearrivals" value="true" /></td>
|
||||
</tr>
|
||||
<tr title="Note: Picks are available only in combination with includearrivals=true">
|
||||
<td>Exclude Picks</td>
|
||||
<td><input type="checkbox" name="includepicks" value="false" /></td>
|
||||
</tr>
|
||||
<tr title="Include Preferred Focal Mechanism and Momenttensor Solution">
|
||||
<td>Focal Mechanism</td>
|
||||
<td><input type="checkbox" name="includefocalmechanism" value="true" /></td>
|
||||
</tr>
|
||||
<tr title="Include All Focal Mechanism and Momenttensor Solutions">
|
||||
<td>All Focal Mechanisms</td>
|
||||
<td><input type="checkbox" name="includeallfocalmechanisms" value="true" /></td>
|
||||
</tr>
|
||||
<tr title="Include Moment Tensor Station Contributions">
|
||||
<td>MT Station Contributions</td>
|
||||
<td><input type="checkbox" name="includestationmts" value="true" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Include Comments</td>
|
||||
<td><input type="checkbox" name="includecomments" value="true" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Event ID</td>
|
||||
<td><input type="text" size="10" name="eventid" value="" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Limit</td>
|
||||
<td><input type="number" name="limit" min="1" step="1" value="" placeholder="20" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Offset</td>
|
||||
<td><input type="number" name="offset" min="1" step="1" value="" placeholder="1" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Order By</td>
|
||||
<td>
|
||||
<select name="orderby">
|
||||
<option value="">Time descending (default)</option>
|
||||
<option value="time-asc">Time ascending</option>
|
||||
<option value="magnitude">Magnitude descending</option>
|
||||
<option value="magnitude-asc">Magnitude ascending</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Catalog</td>
|
||||
<td><input type="text" size="10" name="catalog" value="" disabled="disabled" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Contributor</td>
|
||||
<td><input type="text" size="10" name="contributor" value="" placeholder="agency" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Update After</td>
|
||||
<td><input type="text" size="10" maxlength="26" name="updateafter" value="" class="tcal" disabled="disabled"/></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend>Output control</legend>
|
||||
<table class="builder">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Format</td>
|
||||
<td>
|
||||
<select name="format">
|
||||
<option value="">QuakeML (default)</option>
|
||||
<option value="qml-rt">QuakeML-RT</option>
|
||||
<option value="sc3ml">SeisComP XML</option>
|
||||
<option value="text">Text (| delimited)</option>
|
||||
<option value="csv">CSV (, delimited)</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Formatted</td>
|
||||
<td><input type="checkbox" name="formatted" value="true" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>No Data 404</td>
|
||||
<td><input type="checkbox" name="nodata" value="404" checked="checked" /></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</fieldset>
|
||||
</form>
|
||||
<fieldset>
|
||||
<legend>URL</legend>
|
||||
<p><a id="query-url" href=""></a></p>
|
||||
</fieldset>
|
||||
</body>
|
||||
</html>
|
64
share/fdsnws/event.html
Normal file
@ -0,0 +1,64 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="author" content="gempa GmbH">
|
||||
<title>SeisComP FDSNWS - Event</title>
|
||||
</head>
|
||||
<body>
|
||||
<p><a href="../">Parent Directory</a></p>
|
||||
<h1>SeisComP FDSNWS Event Web Service</h1>
|
||||
<p>The event Web service provides access to contributed origin and magnitude
|
||||
estimates in <a href="https://quake.ethz.ch/quakeml">QuakeML</a> format.
|
||||
Events may be filtered e.g. by hypocenter, time and magnitude parameters. The
|
||||
request type is <em>HTTP-GET</em> and <em>HTTP-POST</em>. Please refer to <a
|
||||
href="http://www.fdsn.org/webservices">http://www.fdsn.org/webservice</a> for
|
||||
a complete service description.</p>
|
||||
|
||||
<h2>Available URLs</h2>
|
||||
<ul>
|
||||
<li><a href="query">query</a></li>
|
||||
<li><a href="catalogs">catalogs</a></li>
|
||||
<li><a href="contributors">contributors</a></li>
|
||||
<li><a href="version">version</a></li>
|
||||
<li><a href="application.wadl">application.wadl</a></li>
|
||||
<li><a href="builder">builder</a></li>
|
||||
</ul>
|
||||
|
||||
<h2>Feature Notes</h2>
|
||||
<ul>
|
||||
<li>back-end software: <a href="http://www.seiscomp.de">SeisComP</a></li>
|
||||
<li><em>catalog</em> request parameter not implemented (information not
|
||||
available in SeisComP)</li>
|
||||
<li><em>contributor</em> request parameter is mapped to the
|
||||
<em>agencyID</em></li>
|
||||
<li><em>updatedafter</em> request parameter not implemented: The last
|
||||
modification time in SeisComP is tracked on the object level. If a child
|
||||
of an object is updated the update time is not propagated to all parents.
|
||||
In order to check if a station was updated all children must be evaluated
|
||||
recursively. This operation would be much to expensive.</li>
|
||||
<li>additional request parameters, effective only for xml output:
|
||||
<ul>
|
||||
<li><em>includecomments[,comments]</em>: boolean, default: <em>false</em></li>
|
||||
<li><em>includepicks[,picks]</em>: boolean, default: <em>true</em>,
|
||||
available only in combination with <b><em>includearrivals=true</em></b></li>
|
||||
<li><em>formatted</em>: boolean, default: <em>false</em></li>
|
||||
<li><em>includefocalmechanism[,focalmechanism,fm]</em>: boolean, default: <em>false</em></li>
|
||||
<li><em>includeallfocalmechanisms[,allfocalmechanisms,allfms]</em>: boolean, default: <em>false</em></li>
|
||||
<li><em>includestationmts[,stationmts,stamts]</em>: boolean, default: <em>false</em></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>additional values of request parameters:
|
||||
<ul>
|
||||
<li><em>show</em>
|
||||
<ul>
|
||||
<li>standard: [xml, text]</li>
|
||||
<li>additional: [qml (=xml), qml-rt, sc3ml, csv]</li>
|
||||
<li>default: xml</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
139
share/fdsnws/event.wadl
Normal file
@ -0,0 +1,139 @@
|
||||
<?xml version="1.0"?>
|
||||
<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="https://www.w3.org/Submission/wadl/wadl.xsd"
|
||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns="http://wadl.dev.java.net/2009/02">
|
||||
<resources base="/fdsnws/event/1">
|
||||
<resource path="query">
|
||||
<method name="GET">
|
||||
<request>
|
||||
<param name="starttime" style="query" type="xsd:dateTime"/>
|
||||
<param name="endtime" style="query" type="xsd:dateTime"/>
|
||||
<param name="minlatitude" style="query" type="xsd:float"/>
|
||||
<param name="maxlatitude" style="query" type="xsd:float"/>
|
||||
<param name="minlongitude" style="query" type="xsd:float"/>
|
||||
<param name="maxlongitude" style="query" type="xsd:float"/>
|
||||
<param name="latitude" style="query" type="xsd:float"/>
|
||||
<param name="longitude" style="query" type="xsd:float"/>
|
||||
<param name="minradius" style="query" type="xsd:float"/>
|
||||
<param name="maxradius" style="query" type="xsd:float"/>
|
||||
<param name="mindepth" style="query" type="xsd:float"/>
|
||||
<param name="maxdepth" style="query" type="xsd:float"/>
|
||||
<param name="minmagnitude" style="query" type="xsd:float"/>
|
||||
<param name="maxmagnitude" style="query" type="xsd:float"/>
|
||||
<param name="magnitudetype" style="query" type="xsd:string"/>
|
||||
<param name="eventtype" style="query" type="xsd:string"/>
|
||||
<param name="includeallorigins" style="query" type="xsd:boolean" default="false"/>
|
||||
<param name="includeallmagnitudes" style="query" type="xsd:boolean" default="false"/>
|
||||
<param name="includearrivals" style="query" type="xsd:boolean" default="false"/>
|
||||
<param name="eventid" style="query" repeating="true"/>
|
||||
<param name="limit" style="query" type="xsd:int"/>
|
||||
<param name="offset" style="query" type="xsd:int" default="1">
|
||||
<doc title="definition">
|
||||
The FDSNWS specification uses a weird definition of
|
||||
an offset where the first element is not addressed
|
||||
by 'offset=0' but 'offset=1'. So the implementation
|
||||
will decrement the offset value by one when
|
||||
generating the SQL database query.
|
||||
</doc>
|
||||
</param>
|
||||
<param name="orderby" style="query" type="xsd:string" default="time">
|
||||
<option value="time"/>
|
||||
<option value="time-asc"/>
|
||||
<option value="magnitude"/>
|
||||
<option value="magnitude-asc"/>
|
||||
</param>
|
||||
<param name="contributor" style="query" type="xsd:string"/>
|
||||
<param name="catalog" style="query" type="xsd:string"/>
|
||||
<!-- not implemented -->
|
||||
<!--param name="updateafter" style="query" type="xsd:dateTime"/-->
|
||||
<param name="format" style="query" type="xsd:string" default="xml">
|
||||
<option value="xml" mediaType="application/xml"/>
|
||||
<option value="text" mediaType="text/plain"/>
|
||||
|
||||
<!-- additional, non standard options -->
|
||||
<option value="qml" mediaType="application/xml"/>
|
||||
<option value="qml-rt" mediaType="application/xml"/>
|
||||
<option value="sc3ml" mediaType="application/xml"/>
|
||||
<option value="csv" mediaType="text/plain"/>
|
||||
</param>
|
||||
<param name="nodata" style="query" type="xsd:int" default="204">
|
||||
<option value="204"/>
|
||||
<option value="404"/>
|
||||
</param>
|
||||
|
||||
<!-- additional, non standard parameters, effective only in XML output -->
|
||||
<param name="includepicks" style="query" type="xsd:boolean" default="true">
|
||||
<doc title="definition">
|
||||
Adds pick information to arrivals. Note: Picks will
|
||||
only be available if arrivals are requested.
|
||||
</doc>
|
||||
</param>
|
||||
<param name="includefocalmechanism" style="query" type="xsd:boolean" default="false">
|
||||
<doc title="definition">
|
||||
Adds peferred focal mechanism information including momentensor solution if available.
|
||||
</doc>
|
||||
</param>
|
||||
<param name="includeallfocalmechanisms" style="query" type="xsd:boolean" default="false">
|
||||
<doc title="definition">
|
||||
Adds all focal mechanism information including momentensor solution if available.
|
||||
</doc>
|
||||
</param>
|
||||
<param name="includestationmts" style="query" type="xsd:boolean" default="false">
|
||||
<doc title="definition">
|
||||
Adds all momentensor station contributions.
|
||||
</doc>
|
||||
</param>
|
||||
<!-- includecomments parameter, requires hideComments configuration parameter to be disabled -->
|
||||
<param name="includecomments" style="query" type="xsd:boolean" default="false">
|
||||
<doc title="definition">
|
||||
SeisComP supports comments for most datamodel
|
||||
objects. This parameter controls whether or not
|
||||
comments are included in the output document.
|
||||
</doc>
|
||||
</param>
|
||||
<param name="formatted" style="query" type="xsd:boolean" default="false">
|
||||
<doc>
|
||||
Controls formatted (pretty print) output.
|
||||
</doc>
|
||||
</param>
|
||||
</request>
|
||||
<response status="200">
|
||||
<representation mediaType="application/xml"/>
|
||||
<representation mediaType="text/plain"/>
|
||||
</response>
|
||||
<response status="204 400 401 403 404 413 414 500 503">
|
||||
<representation mediaType="text/plain"/>
|
||||
</response>
|
||||
</method>
|
||||
</resource>
|
||||
<resource path="catalogs">
|
||||
<method name="GET">
|
||||
<response>
|
||||
<representation mediaType="application/xml"/>
|
||||
</response>
|
||||
</method>
|
||||
</resource>
|
||||
<resource path="contributors">
|
||||
<method name="GET">
|
||||
<response>
|
||||
<representation mediaType="application/xml"/>
|
||||
</response>
|
||||
</method>
|
||||
</resource>
|
||||
<resource path="version">
|
||||
<method name="GET">
|
||||
<response>
|
||||
<representation mediaType="text/plain"/>
|
||||
</response>
|
||||
</method>
|
||||
</resource>
|
||||
<resource path="application.wadl">
|
||||
<method name="GET">
|
||||
<response>
|
||||
<representation mediaType="application/xml"/>
|
||||
</response>
|
||||
</method>
|
||||
</resource>
|
||||
</resources>
|
||||
</application>
|
BIN
share/fdsnws/favicon.ico
Normal file
After Width: | Height: | Size: 1.4 KiB |
160
share/fdsnws/js/fdsnws-query.js
Normal file
@ -0,0 +1,160 @@
|
||||
function serialize(form, loc='query') {
|
||||
if ( !form || form.nodeName !== "FORM" ) {
|
||||
return;
|
||||
}
|
||||
|
||||
var query = loc;
|
||||
var element, option, i, j, q = [];
|
||||
for ( i = 0; element = form.elements[i]; i++ ) {
|
||||
if ( element.name === "" || element.disabled || element.offsetParent === null ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// the queryauth input is treated separately
|
||||
if ( element.name === 'queryauth' ) {
|
||||
if ( element.checked ) {
|
||||
query = element.value;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
switch ( element.nodeName ) {
|
||||
case 'INPUT':
|
||||
if ( element.value == "" ) {
|
||||
break;
|
||||
}
|
||||
|
||||
switch ( element.type ) {
|
||||
case 'text':
|
||||
case 'number':
|
||||
case 'hidden':
|
||||
case 'password':
|
||||
case 'button':
|
||||
case 'reset':
|
||||
case 'submit':
|
||||
q.push(element.name + "=" + encodeURIComponent(element.value));
|
||||
break;
|
||||
|
||||
case 'checkbox':
|
||||
case 'radio':
|
||||
if ( element.checked ) {
|
||||
q.push(element.name + "=" + encodeURIComponent(element.value));
|
||||
}
|
||||
break;
|
||||
|
||||
case 'file':
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 'TEXTAREA':
|
||||
if ( element.value == "" ) {
|
||||
break;
|
||||
}
|
||||
|
||||
q.push(element.name + "=" + encodeURIComponent(element.value));
|
||||
break;
|
||||
|
||||
case 'SELECT':
|
||||
switch ( element.type ) {
|
||||
case 'select-one':
|
||||
if ( element.value == "" ) {
|
||||
break;
|
||||
}
|
||||
|
||||
q.push(element.name + "=" + encodeURIComponent(element.value));
|
||||
break;
|
||||
|
||||
case 'select-multiple':
|
||||
values = null
|
||||
for ( j = 0; option = element.options[j]; j++ ) {
|
||||
if ( option.selected ) {
|
||||
v = encodeURIComponent(option.value)
|
||||
if ( values === null ) {
|
||||
values = v;
|
||||
}
|
||||
else {
|
||||
values += "," + v;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ( values !== null ) {
|
||||
q.push(element.name + "=" + values);
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'BUTTON':
|
||||
if ( element.value == "" ) {
|
||||
break;
|
||||
}
|
||||
|
||||
switch ( element.type ) {
|
||||
case 'reset':
|
||||
case 'submit':
|
||||
case 'button':
|
||||
q.push(element.name + "=" + encodeURIComponent(element.value));
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
var params = q.join("&");
|
||||
return params.length === 0 ? query : query + '?' + params;
|
||||
}
|
||||
|
||||
function fdsnwsInitQueryForm() {
|
||||
return fdsnwsInitQueryFormLocation('query')
|
||||
}
|
||||
|
||||
function fdsnwsInitQueryFormLocation(loc) {
|
||||
var queryForm = document.getElementById('query-form');
|
||||
var queryURL = document.getElementById('query-url');
|
||||
|
||||
function updateQueryURL() {
|
||||
var path = window.location.pathname.split('/');
|
||||
path.pop();
|
||||
var url = window.location.origin + path.join('/') + '/' +
|
||||
serialize(queryForm, loc)
|
||||
queryURL.setAttribute('href', url);
|
||||
queryURL.innerHTML = url;
|
||||
}
|
||||
|
||||
function toggleLocation() {
|
||||
for ( i = 0; radio = locRadios[i]; i++ ) {
|
||||
var input = document.getElementById(radio.id + '-input');
|
||||
if ( input ) {
|
||||
//alert('input: ' + input.id);
|
||||
input.style.display = radio.checked ? 'block' : 'none';
|
||||
}
|
||||
}
|
||||
|
||||
updateQueryURL();
|
||||
}
|
||||
|
||||
var element, i;
|
||||
var elements = queryForm.getElementsByTagName('input');
|
||||
var locRadios = []
|
||||
for ( i = 0; element = elements[i]; i++ ) {
|
||||
if ( element.type === 'radio' && element.name === 'location' ) {
|
||||
locRadios.push(element);
|
||||
element.onclick = toggleLocation;
|
||||
}
|
||||
else {
|
||||
element.oninput = updateQueryURL
|
||||
element.onchange = updateQueryURL
|
||||
}
|
||||
}
|
||||
|
||||
var elements = queryForm.getElementsByTagName('select');
|
||||
for ( i = 0; element = elements[i]; i++ ) {
|
||||
element.onchange = updateQueryURL
|
||||
}
|
||||
|
||||
toggleLocation();
|
||||
updateQueryURL();
|
||||
};
|
BIN
share/fdsnws/js/tcal/img/cal.gif
Normal file
After Width: | Height: | Size: 125 B |
BIN
share/fdsnws/js/tcal/img/next_mon.gif
Normal file
After Width: | Height: | Size: 60 B |
BIN
share/fdsnws/js/tcal/img/next_year.gif
Normal file
After Width: | Height: | Size: 70 B |
BIN
share/fdsnws/js/tcal/img/no_cal.gif
Normal file
After Width: | Height: | Size: 138 B |
BIN
share/fdsnws/js/tcal/img/prev_mon.gif
Normal file
After Width: | Height: | Size: 59 B |
BIN
share/fdsnws/js/tcal/img/prev_year.gif
Normal file
After Width: | Height: | Size: 69 B |
100
share/fdsnws/js/tcal/tcal.css
Normal file
@ -0,0 +1,100 @@
|
||||
/*
|
||||
Stylesheet for Tigra Calendar v5.0
|
||||
Product is Public Domain (Free for any kind of applicaiton, customization and derivative works are allowed)
|
||||
URL: http://www.softcomplex.com/products/tigra_calendar/
|
||||
|
||||
- all image paths are relative to path of stylesheet
|
||||
- the styles below can be moved into the document or in existing stylesheet
|
||||
|
||||
*/
|
||||
|
||||
/* input box in default state */
|
||||
.tcalInput {
|
||||
background: url('img/cal.gif') 100% 50% no-repeat;
|
||||
padding-right: 20px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/* additional properties for input boxe in activated state, above still applies unless in conflict */
|
||||
.tcalActive {
|
||||
background-image: url('img/no_cal.gif');
|
||||
}
|
||||
/* container of calendar's pop-up */
|
||||
#tcal {
|
||||
position: absolute;
|
||||
visibility: hidden;
|
||||
z-index: 100;
|
||||
width: 170px;
|
||||
background-color: white;
|
||||
margin-top: 2px;
|
||||
padding: 0 2px 2px 2px;
|
||||
border: 1px solid silver;
|
||||
|
||||
-moz-box-shadow: 3px 3px 4px silver;
|
||||
-webkit-box-shadow: 3px 3px 4px silver;
|
||||
box-shadow: 3px 3px 4px silver;
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color='silver')";
|
||||
filter: progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color='silver');
|
||||
}
|
||||
|
||||
/* table containing navigation and current month */
|
||||
#tcalControls {
|
||||
border-collapse: collapse;
|
||||
border: 0;
|
||||
width: 100%;
|
||||
}
|
||||
#tcalControls td {
|
||||
border-collapse: collapse;
|
||||
border: 0;
|
||||
padding: 0;
|
||||
width: 16px;
|
||||
background-position: 50% 50%;
|
||||
background-repeat: no-repeat;
|
||||
cursor: pointer;
|
||||
}
|
||||
#tcalControls th {
|
||||
border-collapse: collapse;
|
||||
border: 0;
|
||||
padding: 0;
|
||||
line-height: 25px;
|
||||
font-size: 10px;
|
||||
text-align: center;
|
||||
font-family: Tahoma, Geneva, sans-serif;
|
||||
font-weight: bold;
|
||||
white-space: nowrap;
|
||||
}
|
||||
#tcalPrevYear { background-image: url('img/prev_year.gif'); }
|
||||
#tcalPrevMonth { background-image: url('img/prev_mon.gif'); }
|
||||
#tcalNextMonth { background-image: url('img/next_mon.gif'); }
|
||||
#tcalNextYear { background-image: url('img/next_year.gif'); }
|
||||
|
||||
/* table containing week days header and calendar grid */
|
||||
#tcalGrid {
|
||||
border-collapse: collapse;
|
||||
border: 1px solid silver;
|
||||
width: 100%;
|
||||
}
|
||||
#tcalGrid th {
|
||||
border: 1px solid silver;
|
||||
border-collapse: collapse;
|
||||
padding: 3px 0;
|
||||
text-align: center;
|
||||
font-family: Tahoma, Geneva, sans-serif;
|
||||
font-size: 10px;
|
||||
background-color: gray;
|
||||
color: white;
|
||||
}
|
||||
#tcalGrid td {
|
||||
border: 0;
|
||||
border-collapse: collapse;
|
||||
padding: 2px 0;
|
||||
text-align: center;
|
||||
font-family: Tahoma, Geneva, sans-serif;
|
||||
width: 14%;
|
||||
font-size: 11px;
|
||||
cursor: pointer;
|
||||
}
|
||||
#tcalGrid td.tcalOtherMonth { color: silver; }
|
||||
#tcalGrid td.tcalWeekend { background-color: #ACD6F5; }
|
||||
#tcalGrid td.tcalToday { border: 1px solid red; }
|
||||
#tcalGrid td.tcalSelected { background-color: #FFB3BE; }
|
355
share/fdsnws/js/tcal/tcal.js
Normal file
@ -0,0 +1,355 @@
|
||||
// Tigra Calendar v5.2 (11/20/2011)
|
||||
// http://www.softcomplex.com/products/tigra_calendar/
|
||||
// License: Public Domain... You're welcome.
|
||||
|
||||
// default settins - this structure can be moved in separate file in multilangual applications
|
||||
var A_TCALCONF = {
|
||||
'cssprefix' : 'tcal',
|
||||
'months' : ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
|
||||
'weekdays' : ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
|
||||
'longwdays' : ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
|
||||
'yearscroll' : true, // show year scroller
|
||||
'weekstart' : 0, // first day of week: 0-Su or 1-Mo
|
||||
'prevyear' : 'Previous Year',
|
||||
'nextyear' : 'Next Year',
|
||||
'prevmonth' : 'Previous Month',
|
||||
'nextmonth' : 'Next Month',
|
||||
'format' : 'm/d/Y' // 'd-m-Y', Y-m-d', 'l, F jS Y'
|
||||
};
|
||||
|
||||
var A_TCALTOKENS = [
|
||||
// A full numeric representation of a year, 4 digits
|
||||
{'t': 'Y', 'r': '19\\d{2}|20\\d{2}', 'p': function (d_date, n_value) { d_date.setFullYear(Number(n_value)); return d_date; }, 'g': function (d_date) { var n_year = d_date.getFullYear(); return n_year; }},
|
||||
// Numeric representation of a month, with leading zeros
|
||||
{'t': 'm', 'r': '0?[1-9]|1[0-2]', 'p': function (d_date, n_value) { d_date.setMonth(Number(n_value) - 1); return d_date; }, 'g': function (d_date) { var n_month = d_date.getMonth() + 1; return (n_month < 10 ? '0' : '') + n_month }},
|
||||
// A full textual representation of a month, such as January or March
|
||||
{'t': 'F', 'r': A_TCALCONF.months.join('|'), 'p': function (d_date, s_value) { for (var m = 0; m < 12; m++) if (A_TCALCONF.months[m] == s_value) { d_date.setMonth(m); return d_date; }}, 'g': function (d_date) { return A_TCALCONF.months[d_date.getMonth()]; }},
|
||||
// Day of the month, 2 digits with leading zeros
|
||||
{'t': 'd', 'r': '0?[1-9]|[12][0-9]|3[01]', 'p': function (d_date, n_value) { d_date.setDate(Number(n_value)); if (d_date.getDate() != n_value) d_date.setDate(0); return d_date }, 'g': function (d_date) { var n_date = d_date.getDate(); return (n_date < 10 ? '0' : '') + n_date; }},
|
||||
// Day of the month without leading zeros
|
||||
{'t': 'j', 'r': '0?[1-9]|[12][0-9]|3[01]', 'p': function (d_date, n_value) { d_date.setDate(Number(n_value)); if (d_date.getDate() != n_value) d_date.setDate(0); return d_date }, 'g': function (d_date) { var n_date = d_date.getDate(); return n_date; }},
|
||||
// A full textual representation of the day of the week
|
||||
{'t': 'l', 'r': A_TCALCONF.longwdays.join('|'), 'p': function (d_date, s_value) { return d_date }, 'g': function (d_date) { return A_TCALCONF.longwdays[d_date.getDay()]; }},
|
||||
// English ordinal suffix for the day of the month, 2 characters
|
||||
{'t': 'S', 'r': 'st|nd|rd|th', 'p': function (d_date, s_value) { return d_date }, 'g': function (d_date) { n_date = d_date.getDate(); if (n_date % 10 == 1 && n_date != 11) return 'st'; if (n_date % 10 == 2 && n_date != 12) return 'nd'; if (n_date % 10 == 3 && n_date != 13) return 'rd'; return 'th'; }}
|
||||
|
||||
];
|
||||
|
||||
function f_tcalGetHTML (d_date) {
|
||||
|
||||
var e_input = f_tcalGetInputs(true);
|
||||
if (!e_input) return;
|
||||
|
||||
var s_pfx = A_TCALCONF.cssprefix,
|
||||
s_format = A_TCALCONF.format;
|
||||
|
||||
// today from config or client date
|
||||
var d_today = f_tcalParseDate(A_TCALCONF.today, A_TCALCONF.format);
|
||||
if (!d_today)
|
||||
d_today = f_tcalResetTime(new Date());
|
||||
|
||||
// selected date from input or config or today
|
||||
var d_selected = f_tcalParseDate(e_input.value, s_format);
|
||||
if (!d_selected)
|
||||
d_selected = f_tcalParseDate(A_TCALCONF.selected, A_TCALCONF.format);
|
||||
if (!d_selected)
|
||||
d_selected = new Date(d_today);
|
||||
|
||||
// show calendar for passed or selected date
|
||||
d_date = d_date ? f_tcalResetTime(d_date) : new Date(d_selected);
|
||||
|
||||
var d_firstDay = new Date(d_date);
|
||||
d_firstDay.setDate(1);
|
||||
d_firstDay.setDate(1 - (7 + d_firstDay.getDay() - A_TCALCONF.weekstart) % 7);
|
||||
|
||||
var a_class, s_html = '<table id="' + s_pfx + 'Controls"><tbody><tr>'
|
||||
+ (A_TCALCONF.yearscroll ? '<td id="' + s_pfx + 'PrevYear" ' + f_tcalRelDate(d_date, -1, 'y') + ' title="' + A_TCALCONF.prevyear + '"></td>' : '')
|
||||
+ '<td id="' + s_pfx + 'PrevMonth"' + f_tcalRelDate(d_date, -1) + ' title="' + A_TCALCONF.prevmonth + '"></td><th>'
|
||||
+ A_TCALCONF.months[d_date.getMonth()] + ' ' + d_date.getFullYear()
|
||||
+ '</th><td id="' + s_pfx + 'NextMonth"' + f_tcalRelDate(d_date, 1) + ' title="' + A_TCALCONF.nextmonth + '"></td>'
|
||||
+ (A_TCALCONF.yearscroll ? '<td id="' + s_pfx + 'NextYear"' + f_tcalRelDate(d_date, 1, 'y') + ' title="' + A_TCALCONF.nextyear + '"></td>' : '')
|
||||
+ '</tr></tbody></table><table id="' + s_pfx + 'Grid"><tbody><tr>';
|
||||
|
||||
// print weekdays titles
|
||||
for (var i = 0; i < 7; i++)
|
||||
s_html += '<th>' + A_TCALCONF.weekdays[(A_TCALCONF.weekstart + i) % 7] + '</th>';
|
||||
s_html += '</tr>' ;
|
||||
|
||||
// print calendar table
|
||||
var n_date, n_month, d_current = new Date(d_firstDay);
|
||||
while (d_current.getMonth() == d_date.getMonth() ||
|
||||
d_current.getMonth() == d_firstDay.getMonth()) {
|
||||
|
||||
s_html +='<tr>';
|
||||
for (var n_wday = 0; n_wday < 7; n_wday++) {
|
||||
|
||||
a_class = [];
|
||||
n_date = d_current.getDate();
|
||||
n_month = d_current.getMonth();
|
||||
|
||||
if (d_current.getMonth() != d_date.getMonth())
|
||||
a_class[a_class.length] = s_pfx + 'OtherMonth';
|
||||
if (d_current.getDay() == 0 || d_current.getDay() == 6)
|
||||
a_class[a_class.length] = s_pfx + 'Weekend';
|
||||
if (d_current.valueOf() == d_today.valueOf())
|
||||
a_class[a_class.length] = s_pfx + 'Today';
|
||||
if (d_current.valueOf() == d_selected.valueOf())
|
||||
a_class[a_class.length] = s_pfx + 'Selected';
|
||||
|
||||
s_html += '<td' + f_tcalRelDate(d_current) + (a_class.length ? ' class="' + a_class.join(' ') + '">' : '>') + n_date + '</td>';
|
||||
d_current.setDate(++n_date);
|
||||
}
|
||||
s_html +='</tr>';
|
||||
}
|
||||
s_html +='</tbody></table>';
|
||||
|
||||
return s_html;
|
||||
}
|
||||
|
||||
function f_tcalRelDate (d_date, d_diff, s_units) {
|
||||
|
||||
var s_units = (s_units == 'y' ? 'FullYear' : 'Month');
|
||||
var d_result = new Date(d_date);
|
||||
if (d_diff) {
|
||||
d_result['set' + s_units](d_date['get' + s_units]() + d_diff);
|
||||
if (d_result.getDate() != d_date.getDate())
|
||||
d_result.setDate(0);
|
||||
}
|
||||
return ' onclick="f_tcalUpdate(' + d_result.valueOf() + (d_diff ? ',1' : '') + ')"';
|
||||
}
|
||||
|
||||
function f_tcalResetTime (d_date) {
|
||||
d_date.setMilliseconds(0);
|
||||
d_date.setSeconds(0);
|
||||
d_date.setMinutes(0);
|
||||
d_date.setHours(12);
|
||||
return d_date;
|
||||
}
|
||||
|
||||
// closes calendar and returns all inputs to default state
|
||||
function f_tcalCancel () {
|
||||
|
||||
var s_pfx = A_TCALCONF.cssprefix;
|
||||
var e_cal = document.getElementById(s_pfx);
|
||||
if (e_cal)
|
||||
e_cal.style.visibility = '';
|
||||
var a_inputs = f_tcalGetInputs();
|
||||
for (var n = 0; n < a_inputs.length; n++) {
|
||||
f_tcalRemoveClass(a_inputs[n], s_pfx + 'Active');
|
||||
|
||||
// gempa fix: fire onchange event
|
||||
if (a_inputs[n].onchange) {
|
||||
a_inputs[n].onchange();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function f_tcalUpdate (n_date, b_keepOpen) {
|
||||
|
||||
var e_input = f_tcalGetInputs(true);
|
||||
if (!e_input) return;
|
||||
|
||||
d_date = new Date(n_date);
|
||||
var s_pfx = A_TCALCONF.cssprefix;
|
||||
|
||||
if (b_keepOpen) {
|
||||
var e_cal = document.getElementById(s_pfx);
|
||||
if (!e_cal || e_cal.style.visibility != 'visible') return;
|
||||
e_cal.innerHTML = f_tcalGetHTML(d_date, e_input);
|
||||
}
|
||||
else {
|
||||
e_input.value = f_tcalGenerateDate(d_date, A_TCALCONF.format);
|
||||
f_tcalCancel();
|
||||
}
|
||||
}
|
||||
|
||||
function f_tcalOnClick () {
|
||||
|
||||
// see if already opened
|
||||
var s_pfx = A_TCALCONF.cssprefix;
|
||||
var s_activeClass = s_pfx + 'Active';
|
||||
var b_close = f_tcalHasClass(this, s_activeClass);
|
||||
|
||||
// close all clalendars
|
||||
f_tcalCancel();
|
||||
if (b_close) return;
|
||||
|
||||
// get position of input
|
||||
f_tcalAddClass(this, s_activeClass);
|
||||
|
||||
var n_left = f_getPosition (this, 'Left'),
|
||||
n_top = f_getPosition (this, 'Top') + this.offsetHeight;
|
||||
|
||||
var e_cal = document.getElementById(s_pfx);
|
||||
if (!e_cal) {
|
||||
e_cal = document.createElement('div');
|
||||
e_cal.onselectstart = function () { return false };
|
||||
e_cal.id = s_pfx;
|
||||
document.getElementsByTagName("body").item(0).appendChild(e_cal);
|
||||
}
|
||||
e_cal.innerHTML = f_tcalGetHTML(null);
|
||||
e_cal.style.top = n_top + 'px';
|
||||
e_cal.style.left = (n_left + this.offsetWidth - e_cal.offsetWidth) + 'px';
|
||||
e_cal.style.visibility = 'visible';
|
||||
}
|
||||
|
||||
function f_tcalParseDate (s_date, s_format) {
|
||||
|
||||
if (!s_date) return;
|
||||
|
||||
var s_char, s_regexp = '^', a_tokens = {}, a_options, n_token = 0;
|
||||
for (var n = 0; n < s_format.length; n++) {
|
||||
s_char = s_format.charAt(n);
|
||||
if (A_TCALTOKENS_IDX[s_char]) {
|
||||
a_tokens[s_char] = ++n_token;
|
||||
s_regexp += '(' + A_TCALTOKENS_IDX[s_char]['r'] + ')';
|
||||
}
|
||||
else if (s_char == ' ')
|
||||
s_regexp += '\\s';
|
||||
else
|
||||
s_regexp += (s_char.match(/[\w\d]/) ? '' : '\\') + s_char;
|
||||
}
|
||||
var r_date = new RegExp(s_regexp + '$');
|
||||
if (!s_date.match(r_date)) return;
|
||||
|
||||
var s_val, d_date = f_tcalResetTime(new Date());
|
||||
d_date.setDate(1);
|
||||
|
||||
for (n = 0; n < A_TCALTOKENS.length; n++) {
|
||||
s_char = A_TCALTOKENS[n]['t'];
|
||||
if (!a_tokens[s_char])
|
||||
continue;
|
||||
s_val = RegExp['$' + a_tokens[s_char]];
|
||||
d_date = A_TCALTOKENS[n]['p'](d_date, s_val);
|
||||
}
|
||||
|
||||
return d_date;
|
||||
}
|
||||
|
||||
function f_tcalGenerateDate (d_date, s_format) {
|
||||
|
||||
var s_char, s_date = '';
|
||||
for (var n = 0; n < s_format.length; n++) {
|
||||
s_char = s_format.charAt(n);
|
||||
s_date += A_TCALTOKENS_IDX[s_char] ? A_TCALTOKENS_IDX[s_char]['g'](d_date) : s_char;
|
||||
}
|
||||
return s_date;
|
||||
}
|
||||
|
||||
function f_tcalGetInputs (b_active) {
|
||||
|
||||
var a_inputs = document.getElementsByTagName('input'),
|
||||
e_input, s_rel, a_result = [];
|
||||
|
||||
for (n = 0; n < a_inputs.length; n++) {
|
||||
|
||||
e_input = a_inputs[n];
|
||||
if (!e_input.type || e_input.type != 'text')
|
||||
continue;
|
||||
|
||||
if (!f_tcalHasClass(e_input, 'tcal'))
|
||||
continue;
|
||||
|
||||
if (b_active && f_tcalHasClass(e_input, A_TCALCONF.cssprefix + 'Active'))
|
||||
return e_input;
|
||||
|
||||
a_result[a_result.length] = e_input;
|
||||
}
|
||||
return b_active ? null : a_result;
|
||||
}
|
||||
|
||||
function f_tcalHasClass (e_elem, s_class) {
|
||||
var s_classes = e_elem.className;
|
||||
if (!s_classes)
|
||||
return false;
|
||||
var a_classes = s_classes.split(' ');
|
||||
for (var n = 0; n < a_classes.length; n++)
|
||||
if (a_classes[n] == s_class)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
function f_tcalAddClass (e_elem, s_class) {
|
||||
if (f_tcalHasClass (e_elem, s_class))
|
||||
return;
|
||||
|
||||
var s_classes = e_elem.className;
|
||||
e_elem.className = (s_classes ? s_classes + ' ' : '') + s_class;
|
||||
}
|
||||
|
||||
function f_tcalRemoveClass (e_elem, s_class) {
|
||||
var s_classes = e_elem.className;
|
||||
if (!s_classes || s_classes.indexOf(s_class) == -1)
|
||||
return false;
|
||||
|
||||
var a_classes = s_classes.split(' '),
|
||||
a_newClasses = [];
|
||||
|
||||
for (var n = 0; n < a_classes.length; n++) {
|
||||
if (a_classes[n] == s_class)
|
||||
continue;
|
||||
a_newClasses[a_newClasses.length] = a_classes[n];
|
||||
}
|
||||
e_elem.className = a_newClasses.join(' ');
|
||||
return true;
|
||||
}
|
||||
|
||||
function f_getPosition (e_elemRef, s_coord) {
|
||||
var n_pos = 0, n_offset,
|
||||
e_elem = e_elemRef;
|
||||
|
||||
while (e_elem) {
|
||||
n_offset = e_elem["offset" + s_coord];
|
||||
n_pos += n_offset;
|
||||
e_elem = e_elem.offsetParent;
|
||||
}
|
||||
|
||||
e_elem = e_elemRef;
|
||||
while (e_elem != document.body) {
|
||||
n_offset = e_elem["scroll" + s_coord];
|
||||
if (n_offset && e_elem.style.overflow == 'scroll')
|
||||
n_pos -= n_offset;
|
||||
e_elem = e_elem.parentNode;
|
||||
}
|
||||
return n_pos;
|
||||
}
|
||||
|
||||
function f_tcalInit () {
|
||||
|
||||
if (!document.getElementsByTagName)
|
||||
return;
|
||||
|
||||
var e_input, a_inputs = f_tcalGetInputs();
|
||||
for (var n = 0; n < a_inputs.length; n++) {
|
||||
e_input = a_inputs[n];
|
||||
e_input.onclick = f_tcalOnClick;
|
||||
f_tcalAddClass(e_input, A_TCALCONF.cssprefix + 'Input');
|
||||
}
|
||||
|
||||
window.A_TCALTOKENS_IDX = {};
|
||||
for (n = 0; n < A_TCALTOKENS.length; n++)
|
||||
A_TCALTOKENS_IDX[A_TCALTOKENS[n]['t']] = A_TCALTOKENS[n];
|
||||
}
|
||||
|
||||
function f_tcalAddOnload (f_func) {
|
||||
if (document.addEventListener) {
|
||||
window.addEventListener('load', f_func, false);
|
||||
}
|
||||
else if (window.attachEvent) {
|
||||
window.attachEvent('onload', f_func);
|
||||
}
|
||||
else {
|
||||
var f_onLoad = window.onload;
|
||||
if (typeof window.onload != 'function') {
|
||||
window.onload = f_func;
|
||||
}
|
||||
else {
|
||||
window.onload = function() {
|
||||
f_onLoad();
|
||||
f_func();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
f_tcalAddOnload (f_tcalInit);
|
187
share/fdsnws/station-builder.html
Normal file
@ -0,0 +1,187 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="author" content="gempa GmbH">
|
||||
<title>SeisComP FDSNWS - Station</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../css/fdsnws.css">
|
||||
<link rel="stylesheet" type="text/css" href="../../js/tcal/tcal.css">
|
||||
<script type="text/javascript" src="../../js/tcal/tcal.js"></script>
|
||||
<script type="text/javascript" src="../../js/fdsnws-query.js"></script>
|
||||
<script type="text/javascript">
|
||||
A_TCALCONF['format'] = 'Y-m-dT00:00:00';
|
||||
|
||||
window.onload = fdsnwsInitQueryForm;
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<p><a href="./">Parent Directory</a></p>
|
||||
<h1>SeisComP FDSNWS Station - URL Builder</h1>
|
||||
<form id="query-form" action="query" method="GET">
|
||||
<fieldset>
|
||||
<legend>Time constraints</legend>
|
||||
<table class="builder">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Start Time</td>
|
||||
<td><input type="text" size="10" maxlength="26" name="starttime" value="" class="tcal"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>End Time</td>
|
||||
<td><input type="text" size="10" maxlength="26" name="endtime" value="" class="tcal"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Start Before</td>
|
||||
<td><input type="text" size="10" maxlength="26" name="startbefore" value="" class="tcal"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Start After</td>
|
||||
<td><input type="text" size="10" maxlength="26" name="startafter" value="" class="tcal"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>End Before</td>
|
||||
<td><input type="text" size="10" maxlength="26" name="endbefore" value="" class="tcal"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>End After</td>
|
||||
<td><input type="text" size="10" maxlength="26" name="endafter" value="" class="tcal"/></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend>Channel constraints</legend>
|
||||
<table class="builder">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Network</td>
|
||||
<td><input type="text" size="10" name="network" value="" placeholder="AB,C?" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Station</td>
|
||||
<td><input type="text" size="10" name="station" value="" placeholder="ABC,D*" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Location</td>
|
||||
<td><input type="text" size="10" name="location" value="" placeholder="00" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Channel</td>
|
||||
<td><input type="text" size="10" name="channel" value="" placeholder="BH?" /></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend>Geographic constraints</legend>
|
||||
<input type="radio" id="loc-none" name="location" value=""><label for="loc-none">None</label><br>
|
||||
<input type="radio" id="loc-bbox" name="location" value=""><label for="loc-bbox">Bounding Box</label><br>
|
||||
<input type="radio" id="loc-circle" name="location" value=""><label for="loc-circle">Circle</label><br>
|
||||
<table class="builder" id="loc-bbox-input">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Minimum Latitude</td>
|
||||
<td><input type="number" name="minlatitude" min="-90" max="90" step="1" value="" placeholder="-90.0" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Maximum Latitude</td>
|
||||
<td><input type="number" name="maxlatitude" min="-90" max="90" step="1" value="" placeholder="90.0" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Minimum Longitude</td>
|
||||
<td><input type="number" name="minlongitude" min="-180" max="180" step="1" value="" placeholder="-180.0" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Maximum Longitude</td>
|
||||
<td><input type="number" name="maxlongitude" min="-180" max="180" step="1" value="" placeholder="180.0" /></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="builder" id="loc-circle-input">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Latitude</td>
|
||||
<td><input type="number" name="latitude" min="-90" max="90" step="1" value="" placeholder="0.0" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Longitude</td>
|
||||
<td><input type="number" name="longitude" min="-180" max="180" step="1" value="" placeholder="0.0" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Minimum Radius</td>
|
||||
<td><input type="number" name="minradius" min="0" max="180" step="1" value="" placeholder="0.0" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Maximum Radius</td>
|
||||
<td><input type="number" name="maxradius" min="0" max="180" step="1" value="" placeholder="180" /></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend>Service specific constraints</legend>
|
||||
<table class="builder">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Level</td>
|
||||
<td>
|
||||
<select name="level">
|
||||
<option value="network">Network</option>
|
||||
<option value="" selected="selected">Station (default)</option>
|
||||
<option value="channel">Channel</option>
|
||||
<option value="response">Response</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Exclude Restricted Channels</td>
|
||||
<td><input type="checkbox" name="includerestricted" value="false" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Include Data Availability</td>
|
||||
<td><input type="checkbox" name="includeavailability" value="true" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Update After</td>
|
||||
<td><input type="text" size="10" maxlength="26" name="updateafter" value="" class="tcal" disabled="disabled" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Match Time Series</td>
|
||||
<td><input type="checkbox" name="matchtimeseries" value="true" /></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend>Output control</legend>
|
||||
<table class="builder">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Format</td>
|
||||
<td>
|
||||
<select name="format">
|
||||
<option value="">FDSN Station XML (default)</option>
|
||||
<option value="text">Text (| delimited)</option>
|
||||
<option value="sc3ml">SeisComP XML</option>
|
||||
<option value="stationxml">Station XML (deprecated)</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Formatted</td>
|
||||
<td><input type="checkbox" name="formatted" value="true" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>No Data 404</td>
|
||||
<td><input type="checkbox" name="nodata" value="404" checked="checked" /></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</fieldset>
|
||||
</form>
|
||||
<fieldset>
|
||||
<legend>URL</legend>
|
||||
<p><a id="query-url" href=""></a></p>
|
||||
</fieldset>
|
||||
</body>
|
||||
</html>
|
55
share/fdsnws/station.html
Normal file
@ -0,0 +1,55 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="author" content="gempa GmbH">
|
||||
<title>SeisComP FDSNWS - Station</title>
|
||||
</head>
|
||||
<body>
|
||||
<p><a href="../">Parent Directory</a></p>
|
||||
<h1>SeisComP FDSNWS Station Web Service</h1>
|
||||
<p>The station Web service provides access to network, station, channel and
|
||||
response metadata in <a href="http://www.fdsn.org/xml/station">FDSN Station
|
||||
XML</a> format. The metadata may be filtered e.g. by geographic region and
|
||||
time, also the information depth level is selectable. The
|
||||
request type is <em>HTTP-GET</em>. Please refer to
|
||||
<a href="http://www.fdsn.org/webservices">http://www.fdsn.org/webservice</a>
|
||||
for a complete service description.</p>
|
||||
|
||||
<h2>Available URLs</h2>
|
||||
<ul>
|
||||
<li><a href="query">query</a></li>
|
||||
<li><a href="version">version</a></li>
|
||||
<li><a href="application.wadl">application.wadl</a></li>
|
||||
<li><a href="builder">builder</a></li>
|
||||
</ul>
|
||||
|
||||
<h2>Feature Notes</h2>
|
||||
<ul>
|
||||
<li>back-end software: <a href="http://www.seiscomp.de">SeisComP</a></li>
|
||||
<li><em>matchtimeseries</em> request parameter only available if
|
||||
dataavailability information is enabled via configuration</li>
|
||||
<li><em>updatedafter</em> request parameter not implemented: The last
|
||||
modification time in SeisComP is tracked on the object level. If a child
|
||||
of an object is updated the update time is not propagated to all parents.
|
||||
In order to check if a station was updated all children must be evaluated
|
||||
recursively. This operation would be much to expensive.</li>
|
||||
<li>additional request parameters, effective only for xml output:
|
||||
<ul>
|
||||
<li><em>formatted</em>: boolean, default: <em>false</em></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>additional values of request parameters:
|
||||
<ul>
|
||||
<li><em>format</em>
|
||||
<ul>
|
||||
<li>standard: [xml, text]</li>
|
||||
<li>additional: [fdsnxml (=xml), stationxml, sc3ml]</li>
|
||||
<li>default: xml</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
95
share/fdsnws/station.wadl
Normal file
@ -0,0 +1,95 @@
|
||||
<?xml version="1.0"?>
|
||||
<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="https://www.w3.org/Submission/wadl/wadl.xsd"
|
||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns="http://wadl.dev.java.net/2009/02">
|
||||
<resources base="/fdsnws/station/1">
|
||||
<resource path="query">
|
||||
<method name="GET">
|
||||
<request>
|
||||
<param name="starttime" style="query" type="xsd:dateTime"/>
|
||||
<param name="endtime" style="query" type="xsd:dateTime"/>
|
||||
<param name="startbefore" style="query" type="xsd:dateTime"/>
|
||||
<param name="startafter" style="query" type="xsd:dateTime"/>
|
||||
<param name="endbefore" style="query" type="xsd:dateTime"/>
|
||||
<param name="endafter" style="query" type="xsd:dateTime"/>
|
||||
<param name="network" style="query" type="xsd:string"/>
|
||||
<param name="station" style="query" type="xsd:string"/>
|
||||
<param name="location" style="query" type="xsd:string"/>
|
||||
<param name="channel" style="query" type="xsd:string"/>
|
||||
<param name="minlatitude" style="query" type="xsd:float"/>
|
||||
<param name="maxlatitude" style="query" type="xsd:float"/>
|
||||
<param name="minlongitude" style="query" type="xsd:float"/>
|
||||
<param name="maxlongitude" style="query" type="xsd:float"/>
|
||||
<param name="latitude" style="query" type="xsd:float"/>
|
||||
<param name="longitude" style="query" type="xsd:float"/>
|
||||
<param name="minradius" style="query" type="xsd:float"/>
|
||||
<param name="maxradius" style="query" type="xsd:float"/>
|
||||
<param name="level" style="query" type="xsd:string" default="station">
|
||||
<option value="network"/>
|
||||
<option value="station"/>
|
||||
<option value="channel"/>
|
||||
<option value="response"/>
|
||||
</param>
|
||||
<param name="includerestricted" style="query" type="xsd:boolean" default="false"/>
|
||||
<param name="includeavailability" style="query" type="xsd:boolean" default="false"/>
|
||||
<!-- matchtimeseries parameter, requires data availability feature to be enabled -->
|
||||
<param name="matchtimeseries" style="query" type="xsd:boolean" default="false"/>
|
||||
<param name="nodata" style="query" type="xsd:int" default="204">
|
||||
<option value="204"/>
|
||||
<option value="404"/>
|
||||
</param>
|
||||
<param name="format" style="query" type="xsd:string" default="xml">
|
||||
<option value="xml" mediaType="application/xml"/>
|
||||
<option value="text" mediaType="text/plain"/>
|
||||
|
||||
<!-- additional, non standard options -->
|
||||
<option value="fdsnxml" mediaType="application/xml"/>
|
||||
<option value="stationxml" mediaType="application/xml"/>
|
||||
<option value="sc3ml" mediaType="application/xml"/>
|
||||
</param>
|
||||
|
||||
<!-- additional, non standard parameters -->
|
||||
<param name="formatted" style="query" type="xsd:boolean" default="false">
|
||||
<doc>
|
||||
Controls formatted (pretty print) output.
|
||||
</doc>
|
||||
</param>
|
||||
|
||||
<!-- not implemented -->
|
||||
<!--param name="updateafter" style="query" type="xsd:dateTime"/-->
|
||||
</request>
|
||||
<response status="200">
|
||||
<representation mediaType="application/xml"/>
|
||||
<representation mediaType="text/plain"/>
|
||||
</response>
|
||||
<response status="204 400 401 403 404 413 414 500 503">
|
||||
<representation mediaType="text/plain"/>
|
||||
</response>
|
||||
</method>
|
||||
<method name="POST">
|
||||
<response status="200">
|
||||
<representation mediaType="application/xml"/>
|
||||
<representation mediaType="text/plain"/>
|
||||
</response>
|
||||
<response status="204 400 401 403 404 413 414 500 503">
|
||||
<representation mediaType="text/plain"/>
|
||||
</response>
|
||||
</method>
|
||||
</resource>
|
||||
<resource path="version">
|
||||
<method name="GET">
|
||||
<response>
|
||||
<representation mediaType="text/plain"/>
|
||||
</response>
|
||||
</method>
|
||||
</resource>
|
||||
<resource path="application.wadl">
|
||||
<method name="GET">
|
||||
<response>
|
||||
<representation mediaType="application/xml"/>
|
||||
</response>
|
||||
</method>
|
||||
</resource>
|
||||
</resources>
|
||||
</application>
|