SEG-Y 파일을 ZGY로 변환하는 방법

이 문서에서는 SEG-Y 형식의 데이터를 ZGY 형식으로 변환하는 방법을 알아봅니다. 업계 표준 SEG-Y 형식으로 저장된 Seismic 데이터는 Seismic DMS를 통해 Petrel과 같은 애플리케이션에서 사용할 수 있도록 ZGY로 변환할 수 있습니다. 여기서는 ZGY 변환 FAQ를 참조하고, 더 많은 배경 지식은 OSDU® 커뮤니티의 SEG-Y에서 ZGY로 변환에서 찾을 수 있습니다. 이 자습서는 변환을 수행하는 방법에 대한 단계별 지침입니다. 실제 프로덕션 워크플로는 다를 수 있으며 변환을 수행하는 데 필요한 단계 집합에 대한 가이드로 사용합니다.

필수 조건

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을 검색 상자에 붙여넣습니다.

    URL을 통해 Postman에서 컬렉션 및 환경 파일 가져오기를 보여 주는 스크린샷.

  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 명령을 검색할 수도 있습니다.

Postman의 코드 단추를 보여 주는 스크린샷.

법적 태그 만들기 스크린샷.

데이터 세트 파일 준비

데이터 세트에 대한 메타데이터/매니페스트 파일/레코드 파일을 준비합니다. 매니페스트 파일에는 다음이 포함됩니다.

  • WorkProduct
  • SeismicBinGrid
  • FileCollection
  • SeismicTraceData

변환에서는 나중에 변환을 실행하기 위해 스토리지 계정에 업로드하는 매니페스트 파일을 사용합니다. 이 매니페스트 파일은 여러 JSON 파일을 사용하고 스크립트를 실행하여 만듭니다. 이 프로세스에 대한 JSON 파일은 Volve 데이터 세트용으로 여기에 저장됩니다. 데이터 세트 정의의 원본 위치와 같은 Volve에 대한 자세한 내용은 해당 웹사이트를 방문하세요. 다음 단계를 완료하여 매니페스트 파일을 만듭니다.

  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. 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 블록의 persistableReferenceCrsSeismicBinGrid에 P6 매개 변수가 있고 CRS가 AsIngestedCoordinates에 지정된 경우 변환 자체는 성공적으로 완료될 수 있지만 Petrel은 SpatialArea,AsIngestedCoordinates, SpatialAreaWgs84Coordinates 아래의 5개 꼭지점을 가져오지 않는 한 파일의 측량 기하 도형을 이해하지 못합니다.

사용자 액세스

사용자는 users.datalake.admins 그룹에 속해야 합니다. 다음 호출을 사용하여 사용자의 현재 권한의 유효성을 검사합니다.

Postman에서 사용자 그룹을 가져오기 위한 API 호출을 보여 주는 스크린샷.

이 자습서의 뒷부분에서는 하나 이상의 owner와 하나 이상의 viewer가 필요합니다. 이러한 사용자 그룹은 data.default.ownersdata.default.viewers와 같습니다. 목록에서 각각 하나를 기록해 두세요.

사용자가 필수 그룹의 일부가 아닌 경우 다음 샘플 호출을 사용하여 필수 권한을 추가할 수 있습니다. email-id: 위 호출에서 반환된 "ID" 값입니다.

Postman에서 사용자를 관리자로 등록하기 위한 API 호출을 보여 주는 스크린샷.

권한 그룹을 아직 만들지 않은 경우 사용자를 관리하는 방법에서 설명하는 지침을 따릅니다. 보유하고 있는 그룹을 확인하려면 지정된 사용자에 대한 권한 그룹 가져오기를 사용합니다. 데이터 액세스 격리는 지정된 데이터 파티션 내에서 개체당 이 전용 ACL(액세스 제어 목록)을 사용하여 수행됩니다.

하위 프로젝트 준비

1. Seismic에 데이터 파티션 등록

Postman에서 데이터 파티션을 seismic 테넌트로 등록하기 위한 API 호출을 보여 주는 스크린샷.

2. 하위 프로젝트 만들기

ACL(액세스 제어 목록) 관리자 및 뷰어로 추가하려는 이전에 만들어진 권한 그룹을 사용합니다. 데이터 파티션 권한이 반드시 해당 파티션 내에 있는 하위 프로젝트로 변환되는 것은 아닙니다. 따라서 데이터 파티션에 관계없이 각 하위 프로젝트마다 ACL에 대해 명시적으로 지정해야 합니다.

Postman에서 seismic 하위 프로젝트를 만들기 위한 API 호출을 보여 주는 스크린샷.

3. 데이터 세트 만들기

참고 항목

이 단계는 seismic 파일 업로드에 sdutil을 사용하지 않는 경우에만 필요합니다.

Postman에서 seismic 데이터 세트를 만들기 위한 API 호출을 보여 주는 스크린샷.

파일 업로드

SEGY 파일을 업로드하는 방법에는 두 가지가 있습니다. 한 가지 옵션은 Postman/curl 호출을 통해 sasurl을 사용합니다. Postman을 다운로드하거나 OS에 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 호출의 본문 섹션에서 업로드할 파일을 선택해야 합니다.

Postman에서 파일을 업로드하기 위한 API 호출을 보여 주는 스크린샷.

Postman에서 파일 이진 파일을 업로드하기 위한 API 호출을 보여 주는 스크린샷.

업로드 확인

이진 파일을 확인하기 위해 Postman에 업로드되는 API 호출을 보여 주는 스크린샷.

방법 2: SDUTIL

sdutil은 seismic 서비스에 액세스하기 위한 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 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를 트리거합니다.

    업로드된 파일에 대해 sdutil에서 ID 토큰을 가져오거나 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. sdutilcp 명령을 사용하여 파일을 다운로드하고 검사할 수 있습니다.

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

OSDU®는 The Open Group의 상표입니다.

다음 단계