Partager via


Comment convertir un fichier SEG-Y en ZGY

Dans cet article, vous allez apprendre à convertir des données mises en forme SEG-Y au format ZGY. Les données sismiques stockées au format SEG-Y standard de l’industrie peuvent être converties en ZGY pour une utilisation dans des applications telles que Petrel via le DMS Seismic. Consultez le FAQ sur la conversion ZGY. Vous trouverez davantage d’informations dans la communauté OSDU® ici : Conversion de SEG-Y en ZGY Ce tutoriel est un guide pas à pas pour effectuer la conversion. Notez que le workflow de production réel peut différer. Utilisez cet article comme guide décrivant l’ensemble d’étapes requis pour effectuer la conversion.

Prérequis

Obtenir les détails de votre instance Azure Data Manager pour Energy

La première étape consiste à obtenir les informations suivantes auprès de votre instance Azure Data Manager pour Energy dans le Portail Azure :

Paramètre Valeur Exemple
client_id ID d’application (client) 00001111-aaaa-2222-bbbb-3333cccc4444
client_secret Clés secrètes client _fl******************
tenant_id ID de l’annuaire (locataire) 72f988bf-86f1-41af-91ab-xxxxxxxxxxxx
base_url URL https://<instance>.energy.azure.com
data-partition-id Partition(s) de données <data-partition-name>

Vous aurez besoin de cette information plus loin dans le tutoriel.

Configurer Postman

Configurez ensuite Postman :

  1. Téléchargez et installez l’application bureau Postman.

  2. Importez les fichiers suivants dans Postman :

    Pour importer les fichiers :

    1. Sélectionnez Importer dans Postman.

    Capture d’écran montrant le bouton Importer dans Postman.

    1. Collez l’URL de chaque fichier dans la zone de recherche.

    Capture d’écran montrant l’importation de fichiers de collection et d’environnement dans Postman via URL.

  3. Dans l’environnement Postman, mettez à jour CURRENT VALUE avec les détails de votre instance Azure Data Manager pour Energy.

    1. Dans le menu de gauche de Postman, sélectionnez Environments, puis SEGYtoZGY Environment.

    2. Dans la colonne CURRENT VALUE, entrez les informations décrites dans le tableau figurant dans « Obtenir les détails de votre instance Azure Data Manager pour Energy ».

    Capture d’écran montrant où entrer les valeurs actuelles dans l’environnement SEGYtoZGY.

Processus pas à pas pour convertir le fichier SEG-Y en fichier ZGY

La collection Postman fournie contient tous les exemples d’appels pour servir de guide. Vous pouvez également récupérer la commande cURL équivalente pour un appel Postman en cliquant sur le bouton Code.

Capture d’écran montrant le bouton Code dans Postman.

Capture d’écran de la création d’une étiquette juridique.

Préparer les fichiers de jeu de données

Préparez les métadonnées, le fichier de manifeste et le fichier d’enregistrements du jeu de données. Le fichier manifeste inclut les éléments suivants :

  • WorkProduct
  • SeismicBinGrid
  • FileCollection
  • SeismicTraceData

La conversion utilise un fichier manifeste que vous chargerez ultérieurement sur votre compte de stockage afin d’exécuter la conversion. Ce fichier manifeste est créé à l’aide de plusieurs fichiers JSON et en exécutant un script. Les fichiers JSON de ce processus sont stockés ici pour le jeu de données Volve. Pour plus d’informations sur Volve, notamment d’où proviennent les définitions des jeux de données, visitez leur site web. Effectuez les étapes suivantes afin de créer le fichier manifeste :

  1. Clonez le référentiel et accédez au dossier doc/sample-records/volve.
  2. Modifiez les valeurs dans le script bash prepare-records.sh. Rappelez-vous que le format de l’étiquette juridique est préfixé du nom de l’instance Azure Data Manager for Energy et du nom de la partition de données. Il ressemble donc à <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. Exécutez le script prepare-records.sh.
  2. La sortie est un tableau JSON avec tous les objets, et elle est enregistrée dans le fichier all_records.json.
  3. Enregistrez les valeurs filecollection_segy_id et work_product_id dans ce fichier JSON pour les utiliser dans l’étape de conversion. De cette façon, le convertisseur sait où chercher le contenu de votre all_records.json.

Remarque

Le fichier all_records.json doit également contenir des données appropriées pour chaque élément.

Exemple : Les paramètres suivants sont utilisés lors du calcul des coordonnées ZGY pour SeismicBinGrid :

  • P6BinGridOriginEasting
  • P6BinGridOriginI
  • P6BinGridOriginJ
  • P6BinGridOriginNorthing
  • P6ScaleFactorOfBinGrid
  • P6BinNodeIncrementOnIaxis
  • P6BinNodeIncrementOnJaxis
  • P6BinWidthOnIaxis
  • P6BinWidthOnJaxis
  • P6MapGridBearingOfBinGridJaxis
  • P6TransformationMethod
  • persistableReferenceCrs du bloc asIngestedCoordinates. Si SeismicBinGrid a les paramètres P6 et le CRS spécifié sous AsIngestedCoordinates, la conversion proprement dite devrait s’effectuer correctement, mais Petrel ne comprendra pas la géométrie d’enquête du fichier, sauf s’il obtient également les cinq points d’angle sous SpatialArea,AsIngestedCoordinates, SpatialArea et Wgs84Coordinates.

Accès utilisateur

L’utilisateur doit faire partie du groupe users.datalake.admins. Validez les droits actuels pour l’utilisateur à l’aide de l’appel suivant :

Capture d’écran montrant l’appel d’API pour obtenir des groupes d’utilisateurs dans Postman.

Plus loin dans ce tutoriel, vous aurez besoin d’au moins un owner et d’au moins un viewer. Ces groupes d’utilisateurs ressemblent à data.default.owners et data.default.viewers. Veillez à noter l’un de chaque dans vos listes.

Si l’utilisateur ne fait pas partie du groupe requis, vous pouvez ajouter le droit requis à l’aide de l’exemple d’appel suivant : email-id: est la valeur « ID » retournée par l’appel ci-dessus.

Capture d’écran montrant l’appel d’API pour inscrire un utilisateur en tant qu’administrateur dans Postman.

Si vous n’avez pas encore créé de groupes de droits, suivez les instructions indiquées dans Comment gérer les utilisateurs. Si vous souhaitez voir quels groupes vous avez, utilisez Obtenir des groupes de droits pour un utilisateur donné. L’isolation de l’accès aux données est réalisée grâce à cette ACL (liste de contrôle d’accès) dédiée par objet au sein d’une partition de données donnée.

Préparer le sous-projet

1. Inscrire la partition de données auprès de Seismic

Capture d’écran montrant l’appel d’API pour inscrire une partition de données en tant que locataire Seismic dans Postman.

2. Créer un sous-projet

Utilisez les groupes de droits créés précédemment que vous souhaitez ajouter en tant qu’administrateurs et lecteurs des listes de contrôle d’accès (ACL). Les droits d’une partition de données ne se reflètent pas nécessairement dans les sous-projets qui la composent. Il est donc important d’être explicite quant aux listes ACL de chaque sous-projet, quelle que soit la partition de données dans laquelle il se trouve.

Capture d’écran montrant l’appel d’API pour créer un sous-projet Seismic dans Postman.

3. Créer un jeu de données

Remarque

Cette étape n’est nécessaire que si vous n’utilisez pas sdutil pour charger les fichiers Seismic.

Capture d’écran montrant l’appel d’API pour créer un jeu de données Seismic dans Postman.

Charger le fichier

Il existe deux façons de charger un fichier SEGY. L’une des options consiste à utiliser la sasurl via l’appel curl / Postman. Vous devez télécharger Postman ou configurer Curl sur votre système d’exploitation. La deuxième méthode consiste à utiliser SDUTIL. Pour vous connecter à votre instance pour ADME via l’outil, vous devez générer un jeton d’actualisation pour l’instance. Consultez l’article Comment générer un jeton d’authentification. En guise d’alternative, vous pouvez modifier le code de SDUTIL de façon à utiliser les informations d’identification du client à la place pour vous connecter. Si ce n’est déjà fait, vous devez configurer SDUTIL. Téléchargez le codebase et modifiez le config.yaml à la racine. Remplacez le contenu du fichier de configuration par le yaml suivant.

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

Méthode 1 : Postman

Obtenez la sasurl :

Capture d’écran montrant l’appel d’API pour obtenir une URL de chargement GCS dans Postman.

Chargez le fichier :

Vous devez sélectionner le fichier à charger dans la section Body de l’appel d’API.

Capture d’écran montrant l’appel d’API pour charger un fichier dans Postman.

Capture d’écran montrant l’appel d’API pour charger un fichier binaire dans Postman.

Vérifier le chargement

Capture d’écran montrant l’appel d’API pour vérifier qu’un fichier binaire est chargé dans Postman.

Méthode 2 : SDUTIL

sdutil est un utilitaire de bureau OSDU permettant d’accéder au service Seismic. Nous l’utilisons pour charger/télécharger des fichiers. Utilisez l’étiquette azure-stable de SDUTIL.

Remarque

Lors de l’exécution de python sdutil config init, vous n’avez pas besoin d’entrer quoi que ce soit en réponse à l’invite Insert the azure (azureGlabEnv) application key:.

python sdutil config init
python sdutil auth login
python sdutil ls sd://<data-partition-id>/<subproject>/

Chargez votre fichier sismique dans votre magasin Seismic. Voici un exemple avec un fichier au format SEGY appelé source.segy :

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

Par exemple :

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

Créer des enregistrements de stockage

Insérez le contenu de votre fichier all_records.json dans le stockage pour le produit de travail, les données de trace sismique, la grille sismique et la collecte de fichiers. Copiez et collez le contenu de ce fichier dans le corps de la requête de l’appel d’API.

Capture d’écran montrant l’appel d’API pour créer des enregistrements de stockage dans Postman.

Exécuter le convertisseur

  1. Déclenchez le DAG de conversion ZGY pour convertir vos données à l’aide des valeurs de contexte d’exécution que vous avez enregistrées ci-dessus.

    Récupérez le jeton d’ID de sdutil pour le fichier chargé, ou utilisez un jeton d’accès/jeton du porteur à partir de Postman.

python sdutil auth idtoken

Capture d’écran montrant l’appel d’API pour démarrer le workflow de conversion dans Postman.

  1. Laissez le DAG s’exécuter jusqu’à l’état succeeded. Vous pouvez vérifier l’état à l’aide de l’appel d’état du workflow. L’ID d’exécution se trouve dans la réponse à l’appel ci-dessus.

Capture d’écran montrant l’appel d’API pour vérifier l’état du workflow de conversion dans Postman.

  1. Vous pouvez voir si le fichier converti est présent en exécutant la commande suivante dans sdutil ou dans l’appel d’API Postman :

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

Capture d’écran montrant l’appel d’API pour vérifier si le fichier a été converti.

  1. Vous pouvez télécharger et inspecter le fichier en utilisant la commande sdutil cp :

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

OSDU® est une marque déposée de The Open Group.

Étapes suivantes