Преобразование файла SEG-Y в oVDS

В этой статье вы узнаете, как преобразовать форматированные данные SEG-Y в формат Open VDS (oVDS). Сейсмические данные, хранящиеся в стандартном формате SEG-Y отрасли, можно преобразовать в формат oVDS для использования в приложениях с помощью сейсмических DDMS. См. здесь ссылку на сообщество OSDU®: SEG-Y беседу oVDS. Это пошаговое руководство по выполнению преобразования. Обратите внимание, что фактический рабочий процесс может отличаться и использовать его в качестве руководства для требуемого набора шагов для достижения преобразования.

Предварительные условия

  • Файл SEG-Y

Узнайте подробности об экземпляре Azure Data Manager для энергетики

  • Для работы с этим руководством вам потребуются следующие параметры:
Параметр Значение для использования Пример Где найти это значение
DNS УРИ <instance>.energy.azure.com Найдите это значение на странице обзора экземпляра Azure Data Manager для энергетики.
data-partition-id Раздел данных <data-partition-id> Найдите это значение в разделе секции данных в экземпляре Azure Data Manager для энергетики.
access_token значение "access_token" 0.ATcA01-XWHdJ0ES-qDevC6r........... Следуйте руководству по созданию токена аутентификации, чтобы создать access_token и сохранить его.

Следуйте руководству по управлению пользователями, чтобы добавить соответствующие права для пользователя, выполняющего это руководство.

Настройка среды

Убедитесь, что вы cURL установили в системе. Вы используете его для вызова API.

Пошаговый процесс преобразования файла SEG-Y в oVDS

Создайте юридический тег для соответствия данным.

Создание юридического тега для SDMS

cURL --request POST \
  --url https://{DNS}/api/legal/v1/legaltags \
  --header 'Authorization: Bearer {access_token}' \
  --header 'Content-Type: application/json' \
  --header 'Data-Partition-Id:  {data_partition_id}' \
  --data '{
    "name": "<vds_legal_tag_id>",
    "description": "Legal Tag added for Seismic",
    "properties": {
        "countryOfOrigin": [
            "US"
        ],
        "contractId": "No Contract Related",
        "expirationDate": "2099-01-01",
        "dataType": "Public Domain Data",
        "originator": "OSDU",
        "securityClassification": "Public",
        "exportClassification": "EAR99",
        "personalData": "No Personal Data"
    }
}'

Пример ответа:

{
	"name": "<vds_legal_tag_id>",
	"description": "Legal Tag added for Seismic",
	"properties": {
		"countryOfOrigin": [
			"US"
		],
		"contractId": "No Contract Related",
		"expirationDate": "2099-01-01",
		"originator": "OSDU",
		"dataType": "Public Domain Data",
		"securityClassification": "Public",
		"personalData": "No Personal Data",
		"exportClassification": "EAR99"
	}
}

Дополнительные сведения см. в разделе "Управление юридическими тегами".

Подготовка файлов набора данных

Этот файл содержит пример сопоставления заголовков для векторов, а этот файл содержит пример хранимых записей для конвертации VDS.

Проверка доступа пользователей

Чтобы получить группы пользователей, используйте следующую cURL команду:

cURL -X GET "https://<DNS>/api/entitlements/v2/groups" \
     -H "Authorization: Bearer <access_token>" \
     -H "Content-Type: application/json" \
     -H "data-partition-id: <data_partition_id>"

Пример ответа:

{
  "groups": [
    "data.default.owners@<data_partition_id>.<domain>",
    "data.default.viewers@<data_partition_id>.<domain>",
    "users.datalake.admins@<data_partition_id>.<domain>"
  ]
}

Добавление пользователя в группу администрирования

Используйте следующую cURL команду, чтобы добавить пользователя в группу администрирования:

cURL -X POST "https://<DNS>/api/entitlements/v2/groups/users.datalake.admins@<data_partition_id>.<domain>/members" \
     -H "Authorization: Bearer <access_token>" \
     -H "Content-Type: application/json" \
     -H "data-partition-id: <data_partition_id>"
     -d '{
           "email": "<client_id>",
           "role": "OWNER"
       }'

Пример ответа:

{
  "status": "Success",
  "message": "User added to admin group successfully."
}

Если вы не создали группы прав, следуйте указаниям, описанным в разделе "Управление пользователями". Если вы хотите узнать, какие у вас есть группы, используйте получить группы полномочий для данного пользователя. Изоляция доступа к данным достигается с помощью выделенного списка ACL (списка управления доступом) для каждого объекта в заданной секции данных.

Следуйте инструкциям из этого руководства , чтобы подготовить подпроект, который включает в себя следующие действия.

  1. Регистрация секции данных в Seismic — создание клиента
  2. Создание подпроекта
  3. Регистрация набора данных

Отправка файла

Существует два способа отправки SEGY-файла. Один из вариантов — использовать URL-адрес SAS через вызов cURL. Необходимо настроить cURL в ОС. Второй метод — использовать SDUTIL. Чтобы войти в экземпляр ADME с помощью средства, необходимо создать маркер обновления для экземпляра. Узнайте, как создать токен проверки подлинности. Кроме того, можно изменить код SDUTIL, чтобы использовать учетные данные клиента вместо входа. Если вы еще не сделали этого, необходимо настроить SDUTIL. Ознакомьтесь с руководством по настройке SDUTIL. Скачайте базу кода и измените config.yaml в корневом каталоге. Замените содержимое этого файла конфигурации следующим YAML.

seistore:
    service: '{"azure": {"azureEnv":{"url": "https://<DNS>/seistore-svc/api/v3", "appkey": "">}'
    url: 'https://<DNS>/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. Использование cURL для отправки файла

Получить URL-адрес GCS:
cURL -X GET \
    -H "content-type: application/json" \
    -H "Authorization: Bearer <access_token>" \
    "https://<DNS>/seistore-svc/api/v3/dataset/tenant/<data-partition-id>/subproject/<vdssubprojectname>/dataset/<datasetname>"

Пример ответа: Должен быть строкой. Мы называем ее gcsstring.

Получите URL-адрес SAS:

Чтобы получить URL-адрес отправки SAS, используйте следующую cURL команду:

cURL -X 'GET' \
  'https://<DNS>/seistore-svc/api/v3/utility/upload-connection-string?sdpath=sd://<tenant>/<vdssubprojectname>' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer <access_token>'

Пример ответа:

{
  "access_token": "<SAS token>",
  "expires_in": <duration>,
  "token_type": "SAS Url"
}

Измените URL-адрес SAS. Замените имя контейнера в URL-адресе SAS на filepath, то есть gcsstring

filepath="<gcsstring>"
container=$(echo "$filepath" | cut -d'/' -f1)
SASurl=$(echo "<SAS token>" | sed "s|$container|$filepath|")
Отправьте файл SEG-Y:

Используйте следующую команду cURL:

cURL -X PUT -T "<local_file_path>" "<SAS_url>" \
     -H "x-ms-blob-type: BlockBlob"

Пример ответа:

{
  "status": "Success",
  "message": "File uploaded successfully."
}
Проверка отправки

Чтобы проверить отправку файла, используйте следующую cURL команду:

cURL -X 'GET' \
  'https://<DNS>/seistore-svc/api/v3/utility/ls?sdpath=sd://<tenant>/<vdssubprojectname>' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer <access_token>'

Пример ответа:

[
  list of files.
]

Метод 2. SDUTIL

sdutil — это программа рабочего стола OSDU для доступа к сейсмической службе. Мы используем его для отправки и скачивания файлов. Используйте тег azure-stable из SDUTIL.

Примечание.

При выполнении 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>/<vdssubprojectname>/

Отправьте сейсмический файл в хранилище Сейсмических данных. Ниже приведен пример с именем SEGY-format file source.segy:

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

Например:

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

Создание сопоставления векторов заголовков

Этот файл содержит пример сопоставления заголовков векторов. Полезные данные запроса можно получить из примера.

Используйте следующую команду cURL:

cURL -X PUT "https://<DNS>/api/storage/v2/records" \
     -H "Authorization: Bearer <access_token>" \
     -H "Content-Type: application/json" \
     -H "data-partition-id: <data_partition_id>" \
     -d '{
           "id": "<header_key_cmpx>",
           "kind": "<authority>:<schemaSource>:reference-data--HeaderKeyName:1.0.0",
           "acl": {
               "owners": ["data.default.owners@<data_partition_id>.<domain>"],
               "viewers": ["data.default.viewers@<data_partition_id>.<domain>"]
           },
           "legal": {
               "legaltags": ["<vds_legal_tag_id>"],
               "otherRelevantDataCountries": ["US"]
           },
           "data": {
               "Name": "CMPX",
               "Description": "X coordinate of bin center",
               "Code": "CMPX",
               "Source": "Workbook Published/HeaderKeyName.1.0.0.xlsx; commit SHA 38615b34.",
               "CommitDate": "2021-02-25T09:18:48-05:00"
           }
       }'

Пример ответа:

{
  "status": "Created"
}

Создание записей хранилища

Этот файл содержит пример записей хранения для преобразования VDS.

Чтобы создать записи хранения, используйте следующую cURL команду:

cURL --request PUT \
  --url 'https://<DNS>/api/storage/v2/records' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer {{access_token}}' \
  --header 'data-partition-id: {{DATA_PARTITION_ID}}' \
  --data '[
    {
        "data": {
            --put your data here
        },
        "meta": [],
        "kind": "osdu:wks:work-product--WorkProduct:1.0.0",
        "id": "{{work-product-id}}",
        "acl": {
            "owners": [
                "data.default.owners@{{DATA_PARTITION_ID}}{{domain}}"
            ],
            "viewers": [
                "data.default.viewers@{{DATA_PARTITION_ID}}{{domain}}"
            ]
        },
        "legal": {
            "legaltags": [
                "{{vds_legal_tag_id}}"
            ],
            "otherRelevantDataCountries": [
                "NO"
            ],
            "status": "compliant"
        }
    },
    
    
]'
       

Пример ответа:

{
  "status": "Created"
}

Запуск конвертера

  1. Активируйте DAG преобразования VDS, чтобы преобразовать данные с помощью значений контекста выполнения, сохраненных на предыдущем шаге.

    Извлеките токен идентификатора из sdutil для загруженного файла или используйте токен доступа из cURL.

    python sdutil auth idtoken
    

    Чтобы активировать рабочий процесс, используйте следующую cURL команду:

    cURL -X POST "https://<DNS>/api/workflow/v1/workflow/<segy-to-vds-conversion dag id>" \
        -H "Authorization: Bearer <access_token>" \
        -H "Content-Type: application/json" \
        -d '{
            "executionContext": {
                "Payload": {
                    "AppKey": "test-app",
                    "data-partition-id": "<data_partition_id>"
                },
                "vds_url": "sd://<data_partition_id>/<vdssubprojectname>",
                "work_product_id": "<work-product-id>",
                "file_record_id": "<file-record-id>",
                "persistent_id": "<persistent_id>",
                "id_token": "<access_token>"
            }
        }'
    

    Пример ответа:

    {
    "runId": "workflow-12345",
    "status": "Running",
    "message": "Workflow triggered successfully."
    }
    
  2. Пусть DAG запустится до succeeded состояния. Вы можете проверить состояние с помощью вызова состояния рабочего процесса. Идентификатор выполнения находится в ответе предыдущего шага.

    Используйте следующую команду cURL:

    cURL -X GET "https://<DNS>/api/workflow/v1/workflow/segy-to-vds-conversion/<vds_run_id>" \
        -H "Authorization: Bearer <access_token>" \
        -H "Content-Type: application/json"
    

    Пример ответа:

    {
    "runId": "workflow-12345",
    "status": "Completed",
    "message": "Workflow completed successfully."
    }
    

Проверка преобразования файлов

  1. Чтобы проверить преобразование файлов, используйте следующую cURL команду:

        cURL --request GET \
        --url 'http://{{seismic_ddms_host}}/utility/ls?sdpath=sd://{{tenant}}/{{vdsTestSubprojectName}}' \
        --header 'Authorization: Bearer {{access_token}}'
    

    Пример ответа:

        {
        List of datasets
        }
    
  2. Можно увидеть, присутствует ли преобразованный файл с помощью следующей команды в sdutil.

    python sdutil ls sd://<data-partition-id>/vdssubprojectname
    
  3. Убедитесь, что преобразованные файлы присутствуют в указанном расположении в триггере DAG или нет

    python sdutil ls sd://<data-partition-id>/vdssubprojectname/
    
  4. Если вы хотите скачать и проверить файлы VDS, не используйте cp команду, так как она не работает. Преобразование VDS приводит к созданию нескольких файлов, поэтому эта cp команда не скачивает их одной командой. Вместо этого используйте средство SEGYExport или VDSCopy. Эти средства используют ряд вызовов REST, обращаюющихся к схеме именования, для получения сведений обо всех полученных файлах VDS.

OSDU® — это товарный знак Open Group.

Следующие шаги