分享方式:


如何將 SEG-Y 檔案轉換為 ZGY

在本文中,您會了解如何將 SEG-Y 格式的資料轉換為 ZGY 格式。 以業界標準 SEG-Y 格式儲存的地震資料可以轉換成 ZGY,以透過 Seismic DMS 在 Petrel 等應用程式中使用。 請參閱這裡以取得 ZGY 轉換常見問題集,且可以在這裡的 OSDU® 社群中找到更多背景資訊:SEG-Y 至 ZGY 轉換。 本教學課程是如何執行轉換的逐步指導方針。 請注意,實際生產工作流程可能會有所不同,並用來做為完成轉換所需步驟集的指南。

必要條件

取得 Azure Data Manager for Energy 執行個體的詳細資料

第一個步驟是從 Azure 入口網站中的 Azure Data Manager for Energy 執行個體取得下列資訊:

參數 範例
client_id 應用程式 (用戶端) 識別碼 3dbbbcc2-f28f-44b6-a5ab-xxxxxxxxxxxx
client_secret 用戶端密碼 _fl******************
tenant_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 貼到搜尋方塊中。

    顯示透過 URL 在 Postman 中匯入集合和環境檔案的螢幕擷取畫面。

  3. 使用您在用於能源產業的 Azure 資料管理員詳細資料中取得的資訊,更新 Postman 環境的 [目前值 (CURRENT VALUE)]

    1. 在 Postman 的左側功能表中,選取 [環境],然後選取 [SEGYtoZGY 環境]

    2. 在 [目前值 (CURRENT VALUE)] 資料行中,輸入「用於能源產業的 Azure 資料管理員執行個體詳細資料」資料表中所述的資訊。

    顯示在 SEGYtoZGY 環境中要在何處輸入目前值的螢幕擷取畫面。

將 SEG-Y 檔案轉換成 ZGY 檔案的逐步流程

提供的 Postman 集合具有做為指南的所有範例呼叫。 您也可以按下 [程式碼] 按鈕,擷取 Postman 呼叫的對等 cURL 命令。

顯示 Postman 中 [程式碼] 按鈕的螢幕擷取畫面。

建立法律標籤的螢幕擷取畫面。

準備資料集檔案

準備資料集的中繼資料/資訊清單檔/記錄檔。 資訊清單檔包括:

  • WorkProduct
  • SeismicBinGrid
  • FileCollection
  • SeismicTraceData

轉換會使用您將稍後上傳至儲存體帳戶的資訊清單檔案來執行轉換。 此資訊清單檔案是使用多個 JSON 檔案並執行指令碼所建立。 針對 Volve 資料集,此程序的 JSON 檔案會儲存在這裡。 如需 Volve 的詳細資訊,例如資料集定義的來源,請造訪其網站。 完成下列步驟以建立資訊清單檔:

  1. 複製存放庫並瀏覽至資料夾 doc/sample-records/volve
  2. 編輯 prepare-records.sh Bash 指令碼中的值。 回想一下,法律標籤的格式前面會加用於能源產業的 Azure 資料管理員執行個體名稱和資料分割區名稱,因此看起來會像 <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. filecollection_segy_idwork_product_id 值儲存在該 JSON 檔案中,以用於轉換步驟。 如此一來,轉換器就知道要在哪裡尋找您的 all_records.json 的此內容。

注意

all_records.json 檔案也必須包含每個元素的適當資料。

範例:計算 SeismicBinGrid 的 ZGY 座標時,會使用下列參數:

  • P6BinGridOriginEasting
  • P6BinGridOriginI
  • P6BinGridOriginJ
  • P6BinGridOriginNorthing
  • P6ScaleFactorOfBinGrid
  • P6BinNodeIncrementOnIaxis
  • P6BinNodeIncrementOnJaxis
  • P6BinWidthOnIaxis
  • P6BinWidthOnJaxis
  • P6MapGridBearingOfBinGridJaxis
  • P6TransformationMethod
  • asIngestedCoordinates 區塊 persistableReferenceCrs 如果 SeismicBinGrid 具有 P6 參數,且在 AsIngestedCoordinates 下指定 CRS,則轉換本身應該能夠順利完成,但 Petrel 將不會了解檔案的問卷幾何,除非其也在 SpatialAreaAsIngestedCoordinatesSpatialAreaWgs84Coordinates 下取得 5 個端點。

使用者存取

使用者必須屬於 users.datalake.admins 群組。 使用下列呼叫驗證使用者目前的權利:

顯示在 Postman 中 API 呼叫取得使用者群組的螢幕擷取畫面。

稍後在本教學課程中,您至少需要一個 owner 和至少一個 viewer。 這些使用者群組看起來會像 data.default.ownersdata.default.viewers。 請務必記下清單中的每一項。

如果使用者不屬於必要群組,您可以使用下列範例呼叫來新增必要的權利:email-id:這是從上述呼叫傳回的值 "ID"。

顯示在 Postman 中 API 呼叫將使用者登錄為管理員的螢幕擷取畫面。

如果您尚未建立權利群組,請遵循如何管理使用者中所述的指示操作。 如果您想要查看您擁有的群組,請使用取得指定使用者的權利群組。 透過這個專用的 ACL (存取控制清單) 即可對指定資料分割區內的每個物件達到資料存取隔離。

準備子專案

1.向 Seismic 註冊資料分割區

顯示在 Postman 中 API 呼叫將資料磁碟分割登錄為 seismic 租用戶的螢幕擷取畫面。

2.建立子專案

使用您先前建立、要新增為 ACL (存取控制清單) 管理員和檢視者的權利群組。 資料分割區權利不一定會轉譯為其中的子專案,因此不論其所在的資料分割區為何,請務必明確說明用於每個子專案的 ACL。

顯示在 Postman 中 API 呼叫建立 seismic 子專案的螢幕擷取畫面。

3.建立資料集

注意

只有在您不使用 sdutil 上傳地震檔案時,才需要此步驟。

顯示在 Postman 中 API 呼叫建立 seismic 資料集的螢幕擷取畫面。

上傳檔案

上傳 SEGY 檔案的方式有兩種。 其中一個選項是透過 Postman / curl 呼叫來使用 sasurl。 您必須在 OS 上下載 Postman 或設定 Curl。 第二種方法是使用 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 中 API 呼叫取得 GCS 上傳 URL 的螢幕擷取畫面。

上傳檔案:

您必須選取檔案,才能在 API 呼叫的 [本文] 區段中上傳。

顯示在 Postman 中 API 呼叫上傳檔案的螢幕擷取畫面。

顯示在 Postman 中 API 呼叫上傳檔案二進位的螢幕擷取畫面。

確認上傳

顯示在 Postman 中 API 呼叫驗證檔案二進位已上傳的螢幕擷取畫面。

方法 2:SDUTIL

sdutil 是用來存取地震服務的 OSDU 桌面公用程式。 我們會將其用來上傳/下載檔案。 使用來自 SDUTIL 的 azure-stable 標記。

注意

執行 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 存放區。 以下是名為 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,以使用您先前儲存的執行內容值來轉換您的資料。

    從 sdutil 擷取上傳檔案的識別碼權杖,或使用 Postman 的存取/持有人權杖。

python sdutil auth idtoken

顯示在 Postman 中 API 呼叫啟動轉換工作流程的螢幕擷取畫面。

  1. 讓 DAG 執行至 succeeded 狀態。 您可以使用工作流程狀態呼叫來檢查狀態。 在上述呼叫的回應中取得執行識別碼

顯示在 Postman 中 API 呼叫檢查轉換工作流程狀態的螢幕擷取畫面。

  1. 您可以在 sdutil 或 Postman API 呼叫中使用下列命令來查看已轉換的檔案是否存在:

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

顯示 API 呼叫檢查檔案是否已轉換的螢幕擷取畫面。

  1. 您可以使用 sdutilcp 命令下載並檢查檔案:

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

OSDU® 是 The Open Group 的商標。

下一步