如何將 SEG-Y 檔案轉換為 ZGY
在本文中,您會了解如何將 SEG-Y 格式的資料轉換為 ZGY 格式。 以業界標準 SEG-Y 格式儲存的地震資料可以轉換成 ZGY,以透過 Seismic DMS 在 Petrel 等應用程式中使用。 請參閱這裡以取得 ZGY 轉換常見問題集,且可以在這裡的 OSDU® 社群中找到更多背景資訊:SEG-Y 至 ZGY 轉換。 本教學課程是如何執行轉換的逐步指導方針。 請注意,實際生產工作流程可能會有所不同,並用來做為完成轉換所需步驟集的指南。
必要條件
- Azure 訂閱
- 在 Azure 訂用帳戶中建立的 Azure Data Manager for Energy 的執行個體。
- SEG-Y 檔案
- 您可以在 Volve 資料集中使用任何下列檔案做為測試。 Volve 資料集本身可從 Equinor 取得。
取得 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:
下載並安裝 Postman 桌面應用程式。
將下列檔案匯入 Postman:
若要匯入檔案:
- 選取 Postman 中的 [匯入]。
- 將每個檔案的 URL 貼到搜尋方塊中。
使用您在用於能源產業的 Azure 資料管理員詳細資料中取得的資訊,更新 Postman 環境的 [目前值 (CURRENT VALUE)]
在 Postman 的左側功能表中,選取 [環境],然後選取 [SEGYtoZGY 環境]。
在 [目前值 (CURRENT VALUE)] 資料行中,輸入「用於能源產業的 Azure 資料管理員執行個體詳細資料」資料表中所述的資訊。
將 SEG-Y 檔案轉換成 ZGY 檔案的逐步流程
提供的 Postman 集合具有做為指南的所有範例呼叫。 您也可以按下 [程式碼] 按鈕,擷取 Postman 呼叫的對等 cURL 命令。
建立法律標籤
準備資料集檔案
準備資料集的中繼資料/資訊清單檔/記錄檔。 資訊清單檔包括:
- WorkProduct
- SeismicBinGrid
- FileCollection
- SeismicTraceData
轉換會使用您將稍後上傳至儲存體帳戶的資訊清單檔案來執行轉換。 此資訊清單檔案是使用多個 JSON 檔案並執行指令碼所建立。 針對 Volve 資料集,此程序的 JSON 檔案會儲存在這裡。 如需 Volve 的詳細資訊,例如資料集定義的來源,請造訪其網站。 完成下列步驟以建立資訊清單檔:
- 複製存放庫並瀏覽至資料夾
doc/sample-records/volve
- 編輯
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>
- 執行
prepare-records.sh
指令碼。 - 輸出為 JSON 陣列,其中包含所有物件,並儲存在
all_records.json
檔案中。 - 將
filecollection_segy_id
和work_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 將不會了解檔案的問卷幾何,除非其也在SpatialArea
、AsIngestedCoordinates
、SpatialArea
和Wgs84Coordinates
下取得 5 個端點。
使用者存取
使用者必須屬於 users.datalake.admins
群組。 使用下列呼叫驗證使用者目前的權利:
稍後在本教學課程中,您至少需要一個 owner
和至少一個 viewer
。 這些使用者群組看起來會像 data.default.owners
和 data.default.viewers
。 請務必記下清單中的每一項。
如果使用者不屬於必要群組,您可以使用下列範例呼叫來新增必要的權利:email-id:這是從上述呼叫傳回的值 "ID"。
如果您尚未建立權利群組,請遵循如何管理使用者中所述的指示操作。 如果您想要查看您擁有的群組,請使用取得指定使用者的權利群組。 透過這個專用的 ACL (存取控制清單) 即可對指定資料分割區內的每個物件達到資料存取隔離。
準備子專案
1.向 Seismic 註冊資料分割區
2.建立子專案
使用您先前建立、要新增為 ACL (存取控制清單) 管理員和檢視者的權利群組。 資料分割區權利不一定會轉譯為其中的子專案,因此不論其所在的資料分割區為何,請務必明確說明用於每個子專案的 ACL。
3.建立資料集
注意
只有在您不使用 sdutil
上傳地震檔案時,才需要此步驟。
上傳檔案
上傳 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:
上傳檔案:
您必須選取檔案,才能在 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 呼叫的要求本文。
執行轉換器
觸發 ZGY 轉換 DAG,以使用您先前儲存的執行內容值來轉換您的資料。
從 sdutil 擷取上傳檔案的識別碼權杖,或使用 Postman 的存取/持有人權杖。
python sdutil auth idtoken
- 讓 DAG 執行至
succeeded
狀態。 您可以使用工作流程狀態呼叫來檢查狀態。 在上述呼叫的回應中取得執行識別碼
您可以在 sdutil 或 Postman API 呼叫中使用下列命令來查看已轉換的檔案是否存在:
python sdutil ls sd://<data-partition-id>/<subproject>
您可以使用 sdutil
cp
命令下載並檢查檔案:python sdutil cp sd://<data-partition-id>/<subproject>/<filename.zgy> <local/destination/path>
OSDU® 是 The Open Group 的商標。