SEG-Y ファイルを ZGY に変換する方法

この記事では、SEG-Y 形式のデータを ZGY 形式に変換する方法について説明します。 業界標準の SEG-Y 形式で格納されている地震データは、Seismic DMS を介して Petrel などのアプリケーションで使用するために ZGY に変換できます。 ZGY 変換に関する FAQ と、こちらの OSDU® コミュニティ「Segy から Zgy への変換」でその他の背景情報を参照してください。 このチュートリアルは、変換を実行する方法に関するステップバイステップのガイドラインです。 実際の運用ワークフローは異なる場合があることに注意し、変換を行うために必要な一連の手順のガイドとして使用してください。

前提条件

  • Azure サブスクリプション
  • Azure サブスクリプションで作成された Azure Data Manager for Energy のインスタンス。
  • SEG-Y ファイル
    • Volve データセットの次のいずれかのファイルをテストとして使用できます。 Volve データセット自体は、Equinor から入手できます。

Azure Data Manager for Energy インスタンスの詳細を取得する

最初の手順は、Azure portalAzure Data Manager for Energy インスタンスから次の情報を取得することです。

パラメーター
client_id アプリケーション (クライアント) ID 3dbbbcc2-f28f-44b6-a5ab-xxxxxxxxxxxx
client_secret クライアント シークレット _fl******************
tenant_id ディレクトリ (テナント) ID 72f988bf-86f1-41af-91ab-xxxxxxxxxxxx
base_url URL https://<instance>.energy.azure.com
data-partition-id データ パーティション <data-partition-name>

この情報は、チュートリアルの後半で使用します。

Postman の設定

次に、Postman を設定します。

  1. Postman デスクトップ アプリをダウンロードしてインストールします。

  2. Postman で次のファイルをインポートします。

    ファイルをインポートするには:

    1. Postman で [インポート] を選択します。

    Postman の [インポート] ボタンを示すスクリーンショット。

    1. 各ファイルの URL を検索ボックスに貼り付けます。

    Postman での URL を使用したコレクションと環境ファイルのインポートを示すスクリーンショット。

  3. Postman 環境で、Azure Data Manager for Energy インスタンスの詳細からの情報を使用して CURRENT VALUE を更新します

    1. Postman の左側のメニューで、[環境] を選択し、[SEGYtoZGY 環境] を選択します。

    2. CURRENT VALUE 列に、「Azure Data Manager for Energy インスタンスの詳細を取得する」の表に記載されている情報を入力します。

    SEGYtoZGY 環境で現在の値を入力する場所を示すスクリーンショット。

SEG-Y ファイルを ZGY ファイルに変換するステップバイステップのプロセス

提供されている Postman コレクションには、ガイドとして機能するすべてのサンプル呼び出しがあります。 Postman 呼び出しの同等の cURL コマンドは、[Code] ボタンをクリックして取得することもできます。

Postman の [コード] ボタンを示すスクリーンショット。

法的タグの作成のスクリーンショット。

データセット ファイルを準備する

データセットのメタデータ/マニフェスト ファイル/レコード ファイルを準備します。 マニフェスト ファイルには次のものが含まれます。

  • WorkProduct
  • SeismicBinGrid
  • FileCollection
  • SeismicTraceData

変換では、後で変換を実行するためにストレージ アカウントにアップロードするマニフェスト ファイルが使用されます。 このマニフェスト ファイルは、複数の JSON ファイルを使用してスクリプトを実行することによって作成されます。 このプロセスの JSON ファイルは、Volve データセット用のこちらに格納されます。 データセット定義の基になる場所など、Volve の詳細については、この Web サイトを参照してください。 マニフェスト ファイルを作成するには、次のステップを完了します。

  1. リポジトリを複製し、フォルダー doc/sample-records/volve に移動します
  2. prepare-records.sh bash スクリプトで値を編集します。 法的タグの形式には、Azure Data Manager for Energy インスタンス名とデータ パーティション名がプレフィックスとして付けられるので、<instancename>-<datapartitionname>-<legaltagname> のようになります。
DATA_PARTITION_ID=<your-partition-id>
ACL_OWNER=data.default.owners@<your-partition-id>.<your-tenant>.com
ACL_VIEWER=data.default.viewers@<your-partition-id>.<your-tenant>.com
LEGAL_TAG=<legal-tag-created>
  1. prepare-records.sh スクリプトを実行します。
  2. 出力は、すべてのオブジェクトを含む JSON 配列になり、all_records.json ファイルに保存されます。
  3. 変換のステップで使用するため、その JSON ファイルに filecollection_segy_idwork_product_id の値を保存します。 こうすることで、コンバーターが、all_records.json のこのコンテンツを検索する場所を認識します。

Note

all_records.json ファイルには、各要素の適切なデータも含まれている必要があります。

: SeismicBinGrid の ZGY 座標を計算するときに、次のパラメーターが使用されます。

  • P6BinGridOriginEasting
  • P6BinGridOriginI
  • P6BinGridOriginJ
  • P6BinGridOriginNorthing
  • P6ScaleFactorOfBinGrid
  • P6BinNodeIncrementOnIaxis
  • P6BinNodeIncrementOnJaxis
  • P6BinWidthOnIaxis
  • P6BinWidthOnJaxis
  • P6MapGridBearingOfBinGridJaxis
  • P6TransformationMethod
  • asIngestedCoordinates ブロックから persistableReferenceCrsSeismicBinGridAsIngestedCoordinates に P6 パラメーターと CRS が指定されている場合、変換自体は正常に完了できるはずですが、Petrel では、SpatialAreaAsIngestedCoordinatesSpatialAreaWgs84Coordinates で 5 つのコーナー ポイントも取得されない限り、アンケート ジオメトリが認識されません。

ユーザー アクセス

ユーザーは、users.datalake.admins グループに属している必要があります。 次の呼び出しを使用して、ユーザーの現在のエンタイトルメントを検証します。

Postman でユーザー グループを取得するための API 呼び出しを示すスクリーンショット。

このチュートリアルの後半では、少なくとも 1 つの owner と少なくとも 1 つの viewer が必要になります。 これらのユーザー グループは data.default.ownersdata.default.viewers のようになります。 ご使用のリストから各 1 つをメモしてください。

ユーザーが必要なグループに属していない場合は、次のサンプル呼び出しを使用して必要なエンタイトルメントを追加できます。email-id は上記の呼び出しから返される値 "ID" です。

Postman で管理者としてユーザーを登録するための API 呼び出しを示すスクリーンショット。

エンタイトルメント グループをまだ作成していない場合は、「ユーザーを管理する方法」の説明に従ってください。 所有しているグループを確認する場合は、「特定のユーザーのエンタイトルメント グループを取得する」を使用します。 データ アクセスの分離は、特定のデータ パーティション内のオブジェクトごとに、この専用 ACL (アクセス制御リスト) で実現されます。

サブプロジェクトを準備する

1.データ パーティションを Seismic に登録する

Postman でデータ パーティションを地震テナントとして登録するための API 呼び出しを示すスクリーンショット。

2.サブプロジェクトを作成する

ACL (アクセス制御リスト) の管理者および閲覧者として追加する、以前に作成したエンタイトルメント グループを使用します。 データ パーティションのエンタイトルメントは、必ずしもその中のサブプロジェクトに変換されるとは限らないので、データ パーティションに関係なく、各サブプロジェクトの ACL について明示的に指定することが重要です。

Postman で地震サブプロジェクトを作成するための API 呼び出しを示すスクリーンショット。

3.データセットを作成する

Note

この手順は、seismic ファイルのアップロードに sdutil を使用していない場合にのみ必要です。

Postman で地震データセットを作成するための API 呼び出しを示すスクリーンショット。

ファイルをアップロードする

SEGY ファイルをアップロードする方法は 2 つあります。 1 つ目の選択肢は、Postman/curl 呼び出しを介して sasurl を使用することです。 Postman をダウンロードするか、OS で Curl をセットアップする必要があります。 2 つ目の方法は、SDUTIL 使用することです。 ツールを使用して ADME のインスタンスにログインするには、そのインスタンスの更新トークンを生成する必要があります。 「認証トークンを生成する方法」を参照してください。 または、SDUTIL のコードを変更して、代わりにクライアント資格情報を使用することもできます。 SDUTIL をセットアップしていない場合、セットアップする必要があります。 コードベースをダウンロードし、ルートで config.yaml を編集します。 この構成ファイルの内容を次の yaml に置き換えます。

seistore:
    service: '{"azure": {"azureEnv":{"url": "<instance url>/seistore-svc/api/v3", "appkey": ""}}}'
    url: '<instance url>/seistore-svc/api/v3'
    cloud_provider: azure
    env: glab
    auth-mode: JWT Token
    ssl_verify: false
auth_provider:
    azure: '{ 
        "provider": "azure", 
        "authorize_url": "https://login.microsoftonline.com/", "oauth_token_host_end": "/oauth2/v2.0/token", 
        "scope_end":"/.default openid profile offline_access",
        "redirect_uri":"http://localhost:8080",
        "login_grant_type": "refresh_token",
        "refresh_token": "<RefreshToken acquired earlier>" 
        }'
azure:
    empty: none

方法 1: Postman

sasurl を取得する:

Postman で GCS アップロード URL を取得するための API 呼び出しを示すスクリーンショット。

ファイルをアップロードする:

API 呼び出しの [Body] セクションで、アップロードするファイルを選択する必要があります。

Postman でファイルをアップロードするための API 呼び出しを示すスクリーンショット。

Postman でファイル バイナリをアップロードするための API 呼び出しを示すスクリーンショット。

アップロードを検証する

ファイル バイナリが Postman にアップロードされていることを確認する API 呼び出しを示すスクリーンショット。

方法 2: SDUTIL

sdutil は、seismic サービスにアクセスするための OSDU デスクトップ ユーティリティです。 ファイルのアップロード/ダウンロードに使用されます。 SDUTIL から azure-stable タグを使用します。

Note

python sdutil config init の実行中は、Insert the azure (azureGlabEnv) application key: でプロンプトが表示されても何も入力する必要はありません。

python sdutil config init
python sdutil auth login
python sdutil ls sd://<data-partition-id>/<subproject>/

地震ファイルを Seismic Store にアップロードします。 source.segy という名前の SEGY 形式のファイルの例を次に示します。

python sdutil cp <local folder>/source.segy sd://<data-partition-id>/<subproject>/destination.segy

次に例を示します。

python sdutil cp ST10010ZC11_PZ_PSDM_KIRCH_FULL_T.MIG_FIN.POST_STACK.3D.JS-017536.segy sd://<data-partition-id>/<subproject>/destination.segy

ストレージ レコードを作成する

成果物、地震追跡データ、地震グリッド、ファイル収集について all_records.json ファイルの内容をストレージに挿入します。 そのファイルの内容をコピーして、API 呼び出しの要求本文に貼り付けます。

Postman でストレージ レコードを作成するための API 呼び出しを示すスクリーンショット。

コンバーターを実行する

  1. ZGY 変換 DAG をトリガーし、上で保存した実行コンテキスト値を使用してデータを変換します。

    アップロードされたファイルの ID トークンを sdutil からフェッチするか、Postman からアクセス/ベアラー トークンを使用します。

python sdutil auth idtoken

Postman で変換ワークフローを開始するための API 呼び出しを示すスクリーンショット。

  1. DAG を succeeded の状態になるまで実行します。 ワークフローの状態の呼び出しを使用して、状態を確認できます。 実行 ID は上記の呼び出しの応答に含まれます

Postman で変換ワークフローの状態を確認するための API 呼び出しを示すスクリーンショット。

  1. sdutil または Postman API 呼び出しで次のコマンドを使用すると、変換されたファイルが存在するかどうかを確認できます。

    python sdutil ls sd://<data-partition-id>/<subproject>
    

ファイルが変換されているかどうかを確認する API 呼び出しを示すスクリーンショット。

  1. sdutil cp コマンドを使用すると、ファイルをダウンロードして検査できます。

    python sdutil cp sd://<data-partition-id>/<subproject>/<filename.zgy> <local/destination/path>
    

OSDU® は The Open Group の商標です。

次のステップ