日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

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

發(fā)布時(shí)間:2024/3/24 python 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 petrel软件中的等值线导出然后加入Geomap4.0中成图/用python处理petrel导出的等值线以便于加入Geomap4.0中 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

從petrel軟件導(dǎo)出來(lái)的等值線格式不能直接加入Geomap軟件,所以需要進(jìn)行一些數(shù)據(jù)預(yù)處理
做這個(gè)事情是想探索一下Geomap4.0的使用方法,畢竟Geomap3.6用了太久,也該換新的了。
遇到的第一個(gè)難題就是Geomap4.0需要加載的數(shù)據(jù)和3.6完全不同,不知道該把數(shù)據(jù)處理成什么樣子。
思索了n長(zhǎng)時(shí)間后,想出了一個(gè)解決方法:就是先建立一個(gè)3.6版本的工區(qū),然后拿4.0版本打開(kāi),然后再導(dǎo)出成4.0版本的數(shù)據(jù),這個(gè)數(shù)據(jù)不就是4.0可以加載的數(shù)據(jù)了么。我可真牛逼,所以開(kāi)始動(dòng)工。

基本流程

1. petrel導(dǎo)出等值線格式為Zmap+
2. 用python的pandas庫(kù)處理數(shù)據(jù)***重點(diǎn)***

  • 用Pandas讀取數(shù)據(jù),給四列數(shù)據(jù)加個(gè)名字,x,y,num,z
  • 刪除z列的重復(fù)項(xiàng)
  • 將數(shù)據(jù)按照num分割開(kāi) 存進(jìn)一個(gè)列表
  • 創(chuàng)建一個(gè)一行的空值的DataFrame,列名為x,y,num,z
  • 把空的DataFrame加到每個(gè)分隔開(kāi)的數(shù)據(jù)后面
  • 將所有數(shù)據(jù)整合在一起
  • 3. 在geomap4.0加載等值線

    一、導(dǎo)出的Zmap+格式和的數(shù)據(jù)長(zhǎng)這樣(原數(shù)據(jù))

    二、Geomap4.0可加載的等值線數(shù)據(jù)長(zhǎng)這樣(處理后)

    三、用python的pandas庫(kù)處理數(shù)據(jù)

    1. 讀取數(shù)據(jù)

    import pandas as pd fpath = "petrel_Zmap.txt" df = pd.read_table(fpath,sep = '\s+', # 表明輸入數(shù)據(jù)按照空格以及多個(gè)空格分列#delim_whitespace = True,header = None,names = ['x', 'y', 'num', 'z'],engine='python')

    2.刪除z列重復(fù)項(xiàng)

    #新增一列 判斷以num列分組 z值的重復(fù)項(xiàng) df['bool'] = df.duplicated("num") #刪除“Z”重復(fù)項(xiàng) df.loc[df['bool'], 'z'] = "" print(df.head(5))

    結(jié)果為

    3.按照num列分隔數(shù)據(jù)存入列表

    #計(jì)算循環(huán)次數(shù) number = df['num'].max() #創(chuàng)建列表存放 按照num列分割開(kāi)的數(shù)據(jù) 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])

    結(jié)果為

    4.創(chuàng)建空DataFrame加到上面列表每個(gè)元素后

    #創(chuàng)建一行空的DataFrame s = pd.DataFrame({"x":[" "], "y":[" "], "num":[" "], "z":[" "], 'bool':[" "]})#將空得DataFrame 加到每個(gè) 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])

    結(jié)果為

    5.合并列表所有數(shù)據(jù),刪除無(wú)用行

    #準(zhǔn)備一個(gè)用于 存放全部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)

    結(jié)果為:

    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+格式輸出,然后導(dǎo)入該程序 會(huì)覆蓋原文件,可以加載進(jìn)Geomap4.0 導(dǎo)入等值線即可 @author: gbr """ import pandas as pd import easyguitry:fpath = easygui.fileopenbox()df = pd.read_table(fpath,sep = '\s+', # 表明輸入數(shù)據(jù)按照空格以及多個(gè)空格分列#delim_whitespace = True,header = None,names = ['x', 'y', 'num', 'z'],engine='python')#計(jì)算循環(huán)次數(shù)number = df['num'].max()#新增一列 判斷以num列分組 z值的重復(fù)項(xiàng)df'bool'] = df.duplicated("num")#刪除“Z”重復(fù)項(xiàng)df.loc[df['bool'], 'z'] = ""#創(chuàng)建列表 存放按照num列分割開(kāi)的數(shù)據(jù) df_split = [a for a in range(number)]for i in range(number):df_split[i] = df[df.loc[:, 'num']==i+1]#創(chuàng)建一行空的DataFrames = pd.DataFrame({"x":[" "], "y":[" "], "num":[" "], "z":[" "], 'bool':[" "]})#將空得DataFrame 加到每個(gè) df_split 后面for i in range(number):df_split[i] = pd.concat([df_split[i], s], ignore_index = True, sort=False)#準(zhǔn)備一個(gè)用于 存放全部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寫得簡(jiǎn)單的圖形界面,方便沒(méi)有基礎(chǔ)的人可以使用,而且加入了報(bào)錯(cuò)功能,可以輸出錯(cuò)誤類型。
    由于打包成exe發(fā)現(xiàn)執(zhí)行效率很低,點(diǎn)exe文件運(yùn)行后好久才能出現(xiàn)圖形界面選擇來(lái)選擇文件,所以暫時(shí)不知道怎么可以提高運(yùn)行效率。

    總結(jié)

    以上是生活随笔為你收集整理的petrel软件中的等值线导出然后加入Geomap4.0中成图/用python处理petrel导出的等值线以便于加入Geomap4.0中的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。