petrel软件中的等值线导出然后加入Geomap4.0中成图/用python处理petrel导出的等值线以便于加入Geomap4.0中

3 篇文章 0 订阅
2 篇文章 0 订阅

从petrel软件导出来的等值线格式不能直接加入Geomap软件,所以需要进行一些数据预处理
做这个事情是想探索一下Geomap4.0的使用方法,毕竟Geomap3.6用了太久,也该换新的了。
遇到的第一个难题就是Geomap4.0需要加载的数据和3.6完全不同,不知道该把数据处理成什么样子。
思索了n长时间后,想出了一个解决方法:就是先建立一个3.6版本的工区,然后拿4.0版本打开,然后再导出成4.0版本的数据,这个数据不就是4.0可以加载的数据了么。我可真牛逼,所以开始动工。

基本流程

1. petrel导出等值线格式为Zmap+
2. 用python的pandas库处理数据***重点***

  1. 用Pandas读取数据,给四列数据加个名字,x,y,num,z
  2. 删除z列的重复项
  3. 将数据按照num分割开 存进一个列表
  4. 创建一个一行的空值的DataFrame,列名为x,y,num,z
  5. 把空的DataFrame加到每个分隔开的数据后面
  6. 将所有数据整合在一起

3. 在geomap4.0加载等值线

一、导出的Zmap+格式和的数据长这样(原数据)

在这里插入图片描述

二、Geomap4.0可加载的等值线数据长这样(处理后)

在这里插入图片描述

三、用python的pandas库处理数据

1. 读取数据

import pandas as pd
fpath = "petrel_Zmap.txt"
df = pd.read_table(fpath,
                sep = '\s+',   # 表明输入数据按照空格以及多个空格分列
                #delim_whitespace = True,
                header = None,
                names = ['x', 'y', 'num', 'z'],
                engine='python')

2.删除z列重复项

#新增一列 判断以num列分组 z值的重复项
df['bool'] = df.duplicated("num")
#删除“Z”重复项
df.loc[df['bool'], 'z'] = ""
print(df.head(5))

结果为
在这里插入图片描述

3.按照num列分隔数据存入列表

#计算循环次数
number = df['num'].max()
#创建列表存放 按照num列分割开的数据
df_split = [a for a in range(number)]
for i in range(number):
    df_split[i] = df[df.loc[:, 'num']==i+1]
    print(df_split[i])

结果为在这里插入图片描述

4.创建空DataFrame加到上面列表每个元素后

#创建一行空的DataFrame
s = pd.DataFrame({"x":[" "], "y":[" "], "num":[" "], "z":[" "], 'bool':[" "]})

#将空得DataFrame 加到每个 df_split 后面
for i in range(number):
    df_split[i] = pd.concat([df_split[i], s], ignore_index = True, sort=False)
    print(df_split[i])

结果为
在这里插入图片描述

5.合并列表所有数据,删除无用行

#准备一个用于 存放全部split的变量
df_merge = df_split[0].copy()

for i in range(number - 1):
    df_merge = pd.concat([df_merge, df_split[i+1]], ignore_index = True, sort = False)
df = df_merge.copy()
del df['num']
del df['bool']
print(df)

结果为:
在这里插入图片描述

6.保存成文件

df.to_csv("zmap_to_gm4.txt", sep = '\t', index = False)

四、所有代码汇总

#-*- coding: utf-8 -*-
"""
Created on Mon Jun 21 11:16:01 2021
将petrel中的等值线以Zmap+格式输出,然后导入该程序
会覆盖原文件,可以加载进Geomap4.0
导入等值线即可
@author: gbr
"""
import pandas as pd
import easygui

try:
    fpath = easygui.fileopenbox()

    df = pd.read_table(fpath,
                sep = '\s+',   # 表明输入数据按照空格以及多个空格分列
                #delim_whitespace = True,
                header = None,
                names = ['x', 'y', 'num', 'z'],
                engine='python')

#计算循环次数
    number = df['num'].max()

#新增一列 判断以num列分组 z值的重复项
    df'bool'] = df.duplicated("num")

#删除“Z”重复项
    df.loc[df['bool'], 'z'] = ""

#创建列表 存放按照num列分割开的数据 
    df_split = [a for a in range(number)]
    
    for i in range(number):
        df_split[i] = df[df.loc[:, 'num']==i+1]
    
#创建一行空的DataFrame
    s = pd.DataFrame({"x":[" "], "y":[" "], "num":[" "], "z":[" "], 'bool':[" "]})

#将空得DataFrame 加到每个 df_split 后面
    for i in range(number):
        df_split[i] = pd.concat([df_split[i], s], ignore_index = True, sort=False)
    
#准备一个用于 存放全部split的变量
    df_merge = df_split[0].copy()

    for i in range(number - 1):
        df_merge = pd.concat([df_merge, df_split[i+1]], ignore_index = True, sort = False)
    
    df = df_merge.copy()
    del df['num']
    del df['bool']

    df.to_csv(fpath, sep = '\t', index = False)
except Exception as re:
    print("Error")
    a= easygui.msgbox(msg = re, title = 'Error', ok_button = "退出")

总的代码里加入了用easygui写得简单的图形界面,方便没有基础的人可以使用,而且加入了报错功能,可以输出错误类型。
由于打包成exe发现执行效率很低,点exe文件运行后好久才能出现图形界面选择来选择文件,所以暂时不知道怎么可以提高运行效率。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Petrel操作手册是一本详细介绍Petrel软件使用方法和操作技巧的指南。Petrel是一款非常强大的地质和油田工程软件,广泛应用于石油行业的地质勘探和油藏开发等方面。 该操作手册主要包括以下内容: 1. 软件介绍:手册首先会对Petrel软件进行全面介绍,包括软件的功能、特点和适用领域等。读者可以先对软件进行整体了解,为后续的操作打下基础。 2. 界面和操作:手册会详细介绍Petrel软件的界面布局和各个功能区的作用,包括地质编辑、模型构建、数据分析等。读者可以了解到每个功能按钮的作用和使用方法。 3. 数据导入和处理软件的使用离不开数据的导入和处理,手册会指导读者如何导入各种地质和工程数据,并进行预处理和清洗。同时还会介绍常用的数据处理技术和方法。 4. 地质建模和渲染:地质建模是Petrel软件的核心功能之一,手册会详细介绍如何进行地质建模和渲染,包括模型构建、网格生成、属性分析等。读者可以逐步了解如何通过Petrel软件进行地质建模和分析。 5. 油藏模拟和优化:手册还会介绍Petrel软件的油藏模拟和优化功能,包括模型参数设定、模拟运行、结果分析等。读者可以了解如何利用Petrel软件进行油藏模拟和优化,提高油田开发效率。 总之,Petrel操作手册是一本详尽的指南,能够帮助读者全面了解和使用Petrel软件。无论是初学者还是有一定经验的用户,都可以通过手册提供的操作技巧和方法,更好地利用Petrel软件进行地质勘探和油藏开发工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值