The "seismicquery" web service provides meta data about a seismic query. This web service doesn't actually serve any trace header or sample value. This streaming of trace data is performed by the seismictraces web service instead. The seismicquery web service is typically called prior to retrieving the traces themselves.
INTGeoServer supports 3 types of queries:
Seismic range queries (ex: INLINE=300 to 400)
Seismic path queries (traces along an arbitrary path in a volume)
Seismic discrete queries (traces at discrete points of an arbitrary path in a volume)
Seismic range queries can be of two types:
XSection (used in XSection and 3D visualizations, this is the default type)
Map (used in Map and 3D visualizations). Not all datasets support map queries as it requires fast time slice access. Seismic formats like SEP allow such access natively, but other formats like Segy require a transposition of the data
A typical URL is http://myserver.mycompany.com:8080/INTGeoServer/api/ds/{datasourcetype}/v1/sources/{datasource}/seismic/{seismicuniqueid}/queryinfo
where
datasourcetype: type of a datasource, i.e. geofiles, s3, etc.
datasource: unique id of a datasource
seismicuniqueid: unique id of a seismic
The following parameters are available:
includenormalization: indicates whether the statistics section should be included in the JSON response. This is an optional parameter. The default is false. This parameter is useful when displaying datasets that have no built-in amplitude statistics. If you don't need the server to calculate these statistics, you can improve the performance of the "seismicdata" service by setting this parameter to false. Statistics are usually approximative and meant to be used as part of the normalization of seismic displays. Statistics are often calculated based upon only a small selection of traces (ex: 200 traces that are far apart)
query: a JSON object representing a query. This is an optional parameter. The default is the entire dataset. The format of that object depends on the query type. For range queries, a typical format is:
{
"keys": [
{
"name": "INLINE",
"min": 596,
"max": 596,
"order": "asc",
},
{
"name": "XLINE",
"min": 104,
"max": 1076,
"step": 1,
"order": "asc"
}
],
"emptyTracesKey": {
"name": "XLINE",
"min": 104,
"max": 1076
},
"queryType": "seismicRange",
"traceOrder": "XSection"
}
The example above is a XSection range query for a slice INLINE=596 and XLINE between 104 and 1076.
Each key range has an order. If no order is specified, the sort order is UNSORTED, meaning that the traces will be returned in the order they are found in the file. If an order is specified, it must be either "asc" or "desc". No other values are valid. "asc" corresponds to ASCENDING, "desc" corresponds to DESCENDING.
An emptyTracesKey entry specifies key range for empty traces.
A traceOrder entry specifiies the order of a siesmic dataset, typically:
XSection for XSection queries
Map for Map queries
This is an optional parameter. The default is XSection. The Time key is ignored for XSection queries and is required for Map queries, with identical min and max values (a time slice).
Not all ranges need to be specified, but the order of ranges is important. Depending on the position of each range in the JSON object, you will get different results. For example, if the XLINE range is first and INLINE is second, the traces will be sorted by XLINE then INLINE.
Here is an example response. This response has been formatted to improve readability
{
"from": {
"actor": "akka://DefaultActorSystemControllerActorSystem:FindSeismicQueryInfoJsonActor:FindQueryInfoEntitlementCheckResponse for FindQueryInfoEntitlementCheckRequest of FindSeismicQueryInfoRequest:FindSeismicQueryInfoRequest{klass=AbstractSeismicDataFinder, sourceName=cd4617fa-eb68-4994-84d7-e906f0299fc0, uniqueId=bucketName=intdemobucket2 (java.lang.String)\nobjectName=Gullfaks_Amplitude.xgy (java.lang.String), sourceType=cloudstorage, queryString={\"keys\":[{\"name\":\"INLINE\",\"min\":596,\"max\":596,\"step\":1,\"order\":\"asc\",\"position\":596},{\"name\":\"XLINE\",\"min\":104,\"max\":1076,\"step\":1,\"order\":\"asc\"}],\"options\":null,\"emptyTracesKey\":{\"name\":\"XLINE\",\"min\":104,\"max\":1076},\"queryType\":\"seismicRange\"}, statisticsType=KEEP_NORMALIZATION}"
},
"data": {
"content": {
"numberOfTraces": 973,
"samplesPerTrace": 1234,
"startTime": 64.0,
"sampleRate": 4.0,
"normalization": {
"minimumValue": -71.0,
"maximumValue": 73.0,
"meanValue": 7.7803535,
"rmsValue": 10.103634
}
},
"links": [
{
"rel": "self",
"relEntity": "v1/schema/int/seismic/queryinfo",
"href": "/ivaap/api/ds/cloudstorage/v1/sources/cd4617fa-eb68-4994-84d7-e906f0299fc0/seismic/%7B%22tuple%22%3A%5B%7B%22name%22%3A%22bucketName%22%2C%22value%22%3A%22intdemobucket2%22%7D%2C%7B%22name%22%3A%22objectName%22%2C%22value%22%3A%22Gullfaks_Amplitude.xgy%22%7D%5D%7D/queryinfo",
"children": false,
"hasProjectEntityChildren": false,
"isProjectEntity": false
},
{
"rel": "Seismic Traces",
"name": "Seismic Traces",
"relEntity": "v1/schema/int/seismic/querytrace",
"href": "/ivaap/api/ds/cloudstorage/v1/sources/cd4617fa-eb68-4994-84d7-e906f0299fc0/seismic/%7B%22tuple%22%3A%5B%7B%22name%22%3A%22bucketName%22%2C%22value%22%3A%22intdemobucket2%22%7D%2C%7B%22name%22%3A%22objectName%22%2C%22value%22%3A%22Gullfaks_Amplitude.xgy%22%7D%5D%7D/querytraces",
"children": false,
"hasProjectEntityChildren": false,
"isProjectEntity": false
}
]
}
}
The numberOfTraces entry represents the total number of traces matching the specified query. This could be zero if the query is outside of the limits of the dataset, or if it is limited to an area of the survey where traces are missing. This is an important number to page subsequent calls to the seismictraces web service.
The samplesPerTrace entry represents the number of samples in each trace. The number of samples is identical for all traces. This should be identical to the samplesPerTrace returned by the seismicdata web service.
The startTime entry represents the time (or depth) of the first sample. This should be identical to the startTime returned by the seismicdata web service.
The sampleRate entry represents the time (or depth) increment between two consecutive samples. This should be identical to the sampleRate returned by the seismicdata web service.
The normalization section is identical to the normalization section returned by the seismicdata web service. In most cases, the values are identical, but this could vary based upon the implementation of your own format.
The links sections lists all HATEOAS links leading to the services supported by this dataset.
If the specified seismicuniqueid doesn't match a valid seismic dataset, no JSON response will be provided. The HTTP response will only show a "InvalidUniqueId" (error 404) in its headers.