溫馨提示×

Surfer grd文件讀寫Fortran代碼(面向?qū)ο缶幊淌纠?

小億
115
2023-12-20 15:08:46
欄目: 編程語言

以下是一個使用Fortran面向?qū)ο缶幊痰氖纠a,用于讀寫Surfer grd文件:

module GridFile

??implicit?none

??type?::?Grid

????character(len=100)?::?filename

????integer?::?ncols

????integer?::?nrows

????real?::?xllcorner

????real?::?yllcorner

????real?::?cellsize

????real,?allocatable?::?data(:,:)

??end?type?Grid

??contains

??subroutine?read_grid_file(grid,?filename)

????type(Grid),?intent(out)?::?grid

????character(len=*),?intent(in)?::?filename

????integer?::?fileunit,?i,?j

????grid%filename?=?filename

????!?打開文件

????open(newunit=fileunit,?file=filename,?status='old',?action='read')

????!?讀取文件頭

????read(fileunit,?*)?grid%ncols

????read(fileunit,?*)?grid%nrows

????read(fileunit,?*)?grid%xllcorner

????read(fileunit,?*)?grid#yllcorner

????read(fileunit,?*)?grid%cellsize

????!?分配數(shù)據(jù)數(shù)組

????allocate(grid%data(grid%ncols,?grid%nrows))

????!?讀取數(shù)據(jù)

????do?j?=?1,?grid%nrows

??????do?i?=?1,?grid%ncols

????????read(fileunit,?*)?grid%data(i,?j)

??????end?do

????end?do

????!?關(guān)閉文件

????close(fileunit)

??end?subroutine?read_grid_file

??subroutine?write_grid_file(grid)

????type(Grid),?intent(in)?::?grid

????integer?::?fileunit,?i,?j

????!?打開文件

????open(newunit=fileunit,?file=grid%filename,?status='replace',?action='write')

????!?寫入文件頭

????write(fileunit,?*)?grid%ncols

????write(fileunit,?*)?grid%nrows

????write(fileunit,?*)?grid%xllcorner

????write(fileunit,?*)?grid#yllcorner

????write(fileunit,?*)?grid%cellsize

????!?寫入數(shù)據(jù)

????do?j?=?1,?grid%nrows

??????do?i?=?1,?grid%ncols

????????write(fileunit,?*)?grid%data(i,?j)

??????end?do

????end?do

????!?關(guān)閉文件

????close(fileunit)

??end?subroutine?write_grid_file

end?module?GridFile program?Main

??use?GridFile

??type(Grid)?::?mygrid

??!?讀取Grid文件

??call?read_grid_file(mygrid,?'input.grd')

??!?對Grid數(shù)據(jù)進(jìn)行處理

??!?寫入Grid文件

??call?write_grid_file(mygrid) ?? end?program?Main

在上述示例代碼中,Grid類型定義了一個Surfer grd文件的基本屬性和數(shù)據(jù)。read_grid_file子程序用于從文件中讀取Surfer grd文件的數(shù)據(jù)并存儲到Grid類型對象中,而write_grid_file子程序用于將Grid類型對象的數(shù)據(jù)寫入Surfer grd文件。主程序Main則演示了如何使用這些子程序來讀取和寫入Surfer grd文件。
請注意,上述示例代碼僅演示了如何讀取和寫入Surfer grd文件的基本步驟,并未包含完整的錯誤處理和異常情況處理。在實際應(yīng)用中,可能需要添加適當(dāng)?shù)腻e誤檢查和處理代碼,以確保程序的穩(wěn)定性和可靠性。

0