1

私はOcean Frameworkの初心者です。サイズが異なる SeismicCube オブジェクトのコピーに関して問題があります。時間/深さのリサンプリングのために、キューブの K インデックスのサイズを変更する必要がありました。私が知っていたのは、まったく同じプロパティを持つキューブを複製することだけです。このようなもの:

 Template template = source.Template;
 clone = collection.CreateSeismicCube(source, template);

source は元のキューブで、clone は結果です。クローンのサイズを別のサイズに変更する方法を見つけることは可能ですか? 特にインデックス K のサイズ (トレース長)。CreateSeismicCube のオーバーロード メソッドを調査しましたが、正しいパラメーターを入力する方法がまだわかりません。この問題についての解決策はありますか?前もって感謝します。

4

1 に答える 1

1

When you create a seismic cube using the overload that clones from another seismic cube you do not have the ability to resize it in any direction (I, J, or K). If you desire a different K dimension for your new cube, then you have to create it providing the long list of arguments that includes the vectors describing its rotation and spacing. You can generate the vectors from the original cube using the samples nearest the origin sample (0,0,0) of the original seismic cube.

Consider that you have the following locations in the cube expressed by their I,J,K indexes. Since the K vector is easy to generate, only needing sample rate, I'll focus on I and J here.

First, get positions at the origin and two neighborhing traces.

Point3 I0J0 = inputCube.PositionAtIndex( new IndexDouble3( 0, 0, 0 ) );
Point3 I1J0 = inputCube.PositionAtIndex( new IndexDouble3( 1, 0, 0 ) );
Point3 I0J1 = inputCube.PositionAtIndex( new IndexDouble3( 0, 1, 0 ) );

Now build segments in the I and J directions and use them to create the vectors.

Vector3 iVector = new Vector3( new Segment3( I0J0, I1J0 ) );
Vector3 jVector = new Vector3( new Segment3( I0J0, I0J1 ) );

Now create the K vector from the input cube sampling. Note that you have to negate the value.

Vector3 kVector = new Vector3( 0, 0, -inputCube.SampleSpacingIJK.Z );
于 2014-11-10T09:33:37.887 に答える