정보 헤더와 그 뒤에 오는 번호가있는 텍스트 파일이 있습니다.이 파일은 읽을 데이터입니다.Fortran은 텍스트 파일을 미리 읽지 않습니다.
헤더에 몇 줄의 줄이 있는지 알 수없고 변수 번호입니다. 내가 파일을 열
filehandle: 65536
total # scientific data sets: 1
file description:
This file contains a Northern Hemisphere polar stereographic map of snow and ice coverage at 1024x1024 resolution. The map was produced using the NOAA/NESDIS Interactive MultisensorSnow and Ice Mapping System (IMS) developed under the directionof the Interactive Processing Branch (IPB) of the Satellite Services Division (SSD). For more information, contact: Mr. Bruce Ramsay at [email protected]
Data Set # 1
Data Label:
Northern Hemisphere 1024x1024 Snow & Ice Chart
Coordinate System: Polar Stereographic
Data Type: BYTE
Format: I3
Dimensions: 1024 1024
Min/Max Values: 0 165
Units: 8-bit Flag
Dimension # 0
Dim Label: Longitude
Dim Format: Device Coordinates
Dim Units: Pixels
Dimension # 1
Dim Label: Latitude
Dim Format: Device Coordinates
Dim Units: Pixels
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0
2 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0
....... : 여기
은 예입니다 사용 :open(newunit=U, file = ValFile, STATUS = 'OLD', ACCESS = 'SEQUENTIAL', ACTION = 'READ')
을 그럼, 라인의 유형 라인 및 테스트하여 파일 라인을 읽기 : 헤더 행 또는 데이터 라인 :
ios = 0
do while (.NOT. is_iostat_end(ios) )
read(U, '(A)', iostat = ios, advance = 'NO') line ! Shouldn't advance to next line
if (is_iostat_end(ios)) stop "End of file reached before data section."
tol = getTypeOfLine(line, nValues) ! nValues = 1024, needed to test if line is data.
if (tol > 0) then ! If the line holds data.
exit ! Exits the loop
else
read(U, '(A)', iostat = ios, advance = 'YES') line ! We advance to the next line
end if
end do
을
하지만 루프의 첫 번째 읽기는 항상 다음 줄로 진행되며 이는 문제입니다. 데이터
read(U, '(1024I1)', iostat = ios) Values(c,:)
1024 세트의 일부 라인을 확장 할 수 있지만, 각각의 세트는 매트릭스 "값"의 행이다
상기 루프를 종료 한 후, 데이터를 판독하는 새로운 루프를 입력한다.
이 두 번째 루프는 테스트 루프 (첫 번째 데이터 행)에서 읽은 마지막 행을 읽지 않습니다.
가능한 해결 방법은 다음 줄로 진행하지 않고 테스트 루프의 줄을 읽는 것입니다. 나는 이것을 위해 사용했다, advance = 'no', 그러나 그것은 여전히 다음 줄로 나아 간다. 왜?.
파일은 어떻게 보이나요? –
진보하지 않는 실제 코드를 보여줍니다. –
나는 명령 백스 페이스의 팬이 아니다.하지만 여기서는 첫 번째 루프가 헤더를 읽은 후 바로 도움이 될 수있다. –