Извлечение данных оседания из двоичного вывода MODFLOW-2000 с использованием FloPy - PullRequest
0 голосов
/ 01 октября 2018

Я использую MODFLOW-2000 для запуска модели оседания грунта.Однако выходной файл оседания находится в двоичных данных.Есть ли способ использовать скрипт Python для преобразования его в текст, поскольку я делаю сотни сценариев для модели.

1 Ответ

0 голосов
/ 01 октября 2018

Двоичный вывод из пакета SUB имеет тот же формат, что и файлы двоичных голов MODFLOW.Вам нужно знать имя выходной текстовой строки, записанной в двоичный файл.См. Таблицу 1 в интерактивной документации MODFLOW-2005 для пакета SUB, чтобы определить текстовую строку для данного двоичного файла пакета SUB.

Ниже показано, как преобразовать данные Z DISPLACEMENT вдвоичный файл оседания в файл ascii, используя flopy и numpy:

import numpy as np
import flopy

# open the binary file
sobj = flopy.utils.HeadFile('model.zdisplacement.bin', 
                            text='Z DISPLACEMENT')

# get all of the available times in the file
times = sobj.get_times()

# extract the data for the last time in the file
zd = sobj.get_data(totim=times[-1])

# save the z-displacement for the first layer (layer 0) to an ascii file
# zd is a 3D numpy array with a shape of (nlay, nrow, ncol)
np.savetxt('layer0.zdisplacement.txt', zd[0])

Если у вас есть более одного слоя, вам необходимо сохранить данные для каждого слоя.

Вы можете вывести все данные в файл, используя:

for t in sobj.get_times():
    zd = sobj.get_data(totim=t)
    for k in range(nlay):
        fpth = 'layer{}_{}.zdisplacement.txt'.format(k, t)
        np.savetxt(fpth, zd[k])
...