У меня есть следующий код Fortran для чтения переменной двумерного массива символов:
program read_metar_station_from_rec
use netcdf
implicit none
! This is the name of the data file we will create.
character (len = *), parameter :: FILE_NAME = "metar.nc"
character (len = *), parameter :: STA_NAME = "stationName"
integer, dimension(nf90_max_var_dims) :: dimIDs
integer :: ncid
integer :: nRecords,maxStaNamLen
integer :: station_varid
integer :: i,j
character, allocatable :: stations(:,:)
! Create the netCDF file. The nf90_clobber parameter tells netCDF to
! overwrite this file, if it already exists.
! Open the file.
call check( nf90_open(FILE_NAME, nf90_nowrite, ncid) )
! Get the varid of stationName.
call check( nf90_inq_varid(ncid, STA_NAME, station_varid) )
! Get dimensions of stationName.
call check( nf90_inquire_variable(ncid, station_varid, dimids = dimIDs))
call check( nf90_Inquire_Dimension(ncid, dimIDs(1), len = maxStaNamLen))
call check( nf90_Inquire_Dimension(ncid, dimIDs(2), len = nRecords) )
allocate(stations(maxStaNamLen,nRecords))
call check( nf90_get_var(ncid, station_varid, stations) )
do i=1,maxStaNamLen
do j=1,100
print *, stations(i,j)
enddo
enddo
! Close the file. This frees up any internal netCDF resources
! associated with the file, and flushes any buffers.
call check( nf90_close(ncid) )
print *, "*** SUCCESS reading example file metar.nc! "
contains
subroutine check(status)
integer, intent ( in) :: status
if(status /= nf90_noerr) then
print *, trim(nf90_strerror(status))
stop "Stopped"
end if
end subroutine check
end program read_metar_station_from_rec
Проблема, с которой я сталкиваюсь, заключается в том, что, если я пытаюсь распечатать первые 5 записей, то вижу только 5 символов, как показано на рисунке ниже:
Если я увеличу количество записей, то увижу те же 5 символов, но между ними будет больше пустых строк. Фактические записи переменной stationName выглядят так в Python:
Я прилагаю ссылку на данные, которые я пытаюсь прочитать:
netcdf файл
Пожалуйста, дайте мне знать, если вопрос не ясен.