分享方式:


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

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

必要條件

取得適用於能源實例的 Azure 數據管理員詳細數據

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

參數 範例
client_id 應用程式 (用戶端) 識別碼 3dbbbcc2-f28f-44b6-a5ab-xxxxxxxxxxxx
client_secret 用戶端密碼 _佛羅里達州******************
tenant_id 目錄 (租用戶) 識別碼 72f988bf-86f1-41af-91ab-xxxxxxxxx
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. 在 Postman 環境中,使用適用於能源實例的 Azure 數據管理員資訊更新 CURRENT VALUE

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

    2. 在 [ CURRENT VALUE] 數據行中,輸入「取得您的 Azure Data Manager for Energy 實例詳細數據」數據表中所述的資訊。

    此螢幕快照顯示在 SEGYtoZGY 環境中輸入目前值的位置。

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

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

顯示 Postman 中 [程序代碼] 按鈕的螢幕快照。

建立法律標籤的螢幕快照。

準備數據集檔案

準備數據集的元數據/指令清單檔/記錄檔。 指令清單檔案包括:

  • WorkProduct
  • SeismicBinGrid
  • FileCollection
  • SeismicTraceData

轉換會使用您稍後上傳至記憶體帳戶的指令清單檔案來執行轉換。 此指令清單檔案是使用多個 JSON 檔案和執行腳本所建立。 此程式的 JSON 檔案會 儲存在這裡 供 Volve 資料集使用。 如需 Volve 的詳細資訊,例如數據集定義的來源,請瀏覽 其網站。 完成下列步驟,以建立指令清單檔:

  1. 複製存放 並瀏覽至資料夾 doc/sample-records/volve
  2. 編輯bash文稿中的 prepare-records.sh 值。 回想一下,法律標籤的格式前面會加上適用於能源的 Azure Data Manager 實體名稱和資料分割名稱,因此看起來會像 <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_id JSON 檔案中的 和 work_product_id 值,以用於轉換步驟。 如此一來,轉換器就會知道要在哪裡尋找您 all_records.json的內容。

注意

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

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

  • P6BinGridOriginEasting
  • P6BinGridOriginI
  • P6BinGridOriginJ
  • P6BinGridOriginNorthing
  • P6ScaleFactorOfBinGrid
  • P6BinNodeIncrementOnIaxis
  • P6BinNodeIncrementOnJaxis
  • P6BinWidthOnIaxis
  • P6BinWidthOnJaxis
  • P6MapGridBearingOfBinGridJaxis
  • P6TransformationMethod
  • persistableReferenceCrsasIngestedCoordinates從 區塊 如果 SeismicBinGrid 具有 指定的 AsIngestedCoordinatesP6 參數和 CRS,則轉換本身應該能夠順利完成,但 Petrel 將不會瞭解檔案的問卷幾何,除非它也會在 、AsIngestedCoordinatesSpatialAreaWgs84CoordinatesSpatialArea取得 5 個角點。

使用者存取

用戶必須是群組的 users.datalake.admins 一部分。 使用下列呼叫驗證使用者目前的權利:

顯示在Postman中取得使用者群組之 API 呼叫的螢幕快照。

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

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

此螢幕快照顯示 API 呼叫,以在 Postman 中註冊用戶為系統管理員。

如果您尚未建立權利群組,請依照如何管理使用者中所述的指示操作。 如果您想要查看您擁有哪些群組,請使用 取得指定使用者的權利群組。 數據存取隔離是透過指定資料分割內每個物件的這個專用 ACL (存取控制清單) 來達成。

準備子專案

1.向地震註冊數據分割

此螢幕快照顯示 API 呼叫,以在 Postman 中將數據分割註冊為地震租使用者。

2.建立子專案

使用您先前建立的權利群組,您想要新增為 ACL (存取控制 List) 系統管理員和檢視者。 數據分割權利不一定會轉譯為其中子專案,因此請務必明確說明每個子專案的 ACL,不論其位於哪個數據分割。

此螢幕快照顯示在Postman中建立地震子專案的API呼叫。

3.建立數據集

注意

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

顯示在Postman中建立地震數據集之 API 呼叫的螢幕快照。

上傳檔案

有兩種方式可以上傳 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中取得 GCS 上傳 URL 的 API 呼叫。

上傳檔案:

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

顯示 API 呼叫以在 Postman 中上傳檔案的螢幕快照。

顯示 API 呼叫以在 Postman 中上傳檔案二進位檔的螢幕快照。

確認上傳

顯示 API 呼叫以驗證 Postman 中上傳檔案二進位檔的螢幕快照。

方法 2:SDUTIL

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

注意

執行 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>/

將您的地震檔案上傳至地震存放區。 以下是名為的 SEGY 格式檔案 source.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 呼叫的要求本文。

顯示 API 呼叫以在 Postman 中建立記憶體記錄的螢幕快照。

執行轉換器

  1. 觸發 ZGY 轉換 DAG,以使用您先前儲存的執行內容值來轉換您的數據。

    從 sdutil 擷取上傳檔案的標識碼令牌,或使用 Postman 的存取/持有人令牌。

python sdutil auth idtoken

顯示 API 呼叫以在 Postman 中啟動轉換工作流程的螢幕快照。

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

顯示 API 呼叫以檢查 Postman 中轉換工作流程狀態的螢幕快照。

  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® 是開放群組的商標。

下一步