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/INTGeoServer/json/seismicquery?json={"file":"testXGY1.xgy","showNormalizationStats":true,"query":{"queryType":"seismicRange","keys":[{"name":"INLINE","min":251.0,"max":251.0,"step":1.0},{"name":"XLINE","min":200.0,"max":300.0,"step":1.0},{"name":"Time","min":0.0,"max":5.996,"step":0.004}],"traceOrder":1}}
Here is a formatted version of the JSON object passed as a parameter:
{
"file":"testXGY1.xgy",
"showNormalizationStats":true,
"query":{
"queryType":"seismicRange",
"keys":[
{
"name":"INLINE",
"min":251.0,
"max":251.0,
"step":1.0
},
{
"name":"XLINE",
"min":200.0,
"max":300.0,
"step":1.0
},
{
"name":"Time",
"min":0.0,
"max":5.996,
"step":0.004
}
],
"traceOrder":1
}
}
The following parameters are available:
file: the relative path of the specified dataset. This is a required parameter. If a path encoder is used, this path is encoded.
showNormalizationStats: indicates whether the statistics section should be included in the JSON response. This is an optional parameter. This parameter is useful if you don't need the server to calculate these statistics, you can improve the performance of the seismicquery 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.
query: a JSON object representing a query. The format of that object depends on the query type.
For range queries, a typical format is:
{
"queryType":"seismicRange",
"keys":[
{
"name":"INLINE",
"min":251.0,
"max":251.0,
"step":1.0
},
{
"name":"XLINE",
"min":200.0,
"max":300.0,
"step":1.0
"order":"desc"
},
{
"name":"Time",
"min":0.0,
"max":5.996,
"step":0.004
}
],
"traceOrder":1
}
The example above is a XSection range query for a slice INLINE=251 and XLINE between 200 and 300.
Each key range has a step. If the step is identical to the natural increment of the dataset, no decimation will occur. However, if a step is bigger than the natural increment, traces will be skipped. For example, if the natural increment of a dataset is 1, a step of 10 will skip 9 traces out of 10.
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.
A traceOrder of 1 indicates a XSection query. The Time key is ignored for XSection queries. A trace order of 2 indicates a Map query. The Time key 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
{
"version":1.1,
"sections":[
101
],
"numberOfSamples":1500,
"numberOfTraces":101,
"startValue":0.0,
"sampleRate":0.004,
"statistics":{
"min":-24.092697,
"max":26.9478,
"mean":2.76918,
"rms":3.8810556,
"percentiles":[
0.0,
0.0,
0.015941482,
0.04087515,
0.06720829,
0.09520638,
0.12476909,
0.1550864,
0.18737173,
0.22066283,
0.25472617,
0.2894727,
0.32496524,
0.36081988,
0.39719146,
0.4342698,
0.47139704,
0.5088227,
0.5463008,
0.58431256,
0.6229076,
0.661401,
0.7005828,
0.74078435,
0.7811172,
0.8212104,
0.86174655,
0.9027857,
0.94389427,
0.98555094,
1.027978,
1.0707445,
1.1140394,
1.1569633,
1.2007961,
1.2451267,
1.2903805,
1.3354559,
1.3821106,
1.4281721,
1.4750195,
1.5230722,
1.5716295,
1.6205082,
1.6703806,
1.7206669,
1.7708979,
1.8235674,
1.876401,
1.9299011,
1.9845495,
2.0400705,
2.0963163,
2.1539612,
2.2123814,
2.2721043,
2.3321028,
2.3943243,
2.4577885,
2.5226412,
2.589923,
2.65769,
2.7267904,
2.7969437,
2.869217,
2.9444036,
3.021119,
3.1001701,
3.1807003,
3.2632504,
3.3485527,
3.4380941,
3.5296373,
3.6240063,
3.723939,
3.8273335,
3.9358196,
4.0475903,
4.1650114,
4.28831,
4.4197483,
4.55698,
4.7010746,
4.853963,
5.01964,
5.193651,
5.3809395,
5.5811787,
5.7998276,
6.038084,
6.3024282,
6.5933743,
6.9230385,
7.299368,
7.733119,
8.244971,
8.866034,
9.661806,
10.77998,
12.608553,
26.9478
]
}
}
The version and sections entries are obsolete attributes. The version indicates which JSON format is being used for the response. Code dependent on the server version should use the serverinfo web service instead.
The numberOfSamples entry represents the number of samples in each trace. The number of samples is identical for all traces. This should be identical to the numberOfSamples returned by the seismicdata web service.
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 startValue entry represents the time (or depth) of the first sample. This should be identical to the startValue 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 statistics section is identical to the statistics 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.
If the specified file doesn't match a valid seismic dataset, no JSON response will be provided. The HTTP response will only show a "File or Directory Not Found" (error 404) in its headers.
The HTTP header also contains a "dataHash" header. The hash code can be used to track whether the data file underlying the specified dataset has been changed since the last time it was loaded from disk.