Fortran читает вывод Arcview

У меня есть несколько выходных файлов из ArcGIS, состоящих из больших наборов данных высот.
Я пытаюсь использовать FORTRAN для чтения и обработки это потому, что объем данных очень велик.
У меня есть усеченный пример файла ниже:

ncols         23

nrows         21

xllcorner     539204.730

yllcorner     3834204.851

cellsize      50

nodata_value  -9999

-9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 
-9999 -9999 -9999 -9999 -9999 -9999 -9999 3.079 3.886 3.12 -
-9999 -9999 -9999 -9999 -9999 -9999 2.963 3.751 5.434 3.696 
-9999 -9999 -9999 -9999 -9999 1.927 1.509 1.358 1.897 1.402 
-9999 -9999 -9999 -9999 2.423 1.501 0.912 0.874 0.932 0.975 
-9999 -9999 -9999 2.994 2.563 1.613 0.781 0.401 0.598 0.815 
-9999 -9999 2.228 1.57 1.823 1.137 0.463 0.43 0.459 0.74 0.9
-9999 2.153 1.686 0.904 0.538 0.532 0.534 0.275 0.172 0.347 
-9999 1.532 0.935 0.416 0.365 0.575 0.493 0.28 0.17 0.251 0.
-9999 1.506 1.061 0.481 0.263 0.379 0.287 0.356 0.354 0.247 
-9999 1.793 1.823 1.032 0.349 0.43 0.406 0.437 0.473 0.337 0

Я пытаюсь создать массив координат и высот для выполнения некоторых вычислений.
Я новичок в Fortran, и у меня возникают проблемы с чтением этого файла и созданием массивов.


person user2869405    schedule 11.10.2013    source источник
comment
Это кажется довольно простым READ(file_num,*) упражнением. Не могли бы вы показать нам, что вы пробовали?   -  person Kyle Kanos    schedule 11.10.2013


Ответы (1)


Целочисленные значения выровнены по левому краю? Тогда я, вероятно, прочитал бы эти строки в строку и использовал ввод-вывод по списку для чтения целых чисел из части строки. Что-то типа:

character (len=80) :: line

read ( UnitNum, '(A)' )  line
read (line (14:50), * ) Ncols

Затем пропустите пустые строки, повторив чтение line.

Выделите массив в правильные размеры, затем просто выполните:

read ( UnitNum, *) array

Дайте нам знать, как далеко это вас заведет...

person M. S. B.    schedule 11.10.2013
comment
Поскольку Фортран хранит массивы в порядке столбцов, оператор read ( UnitNum, *) array, скорее всего, представит пользователю транспонирование того, что он ожидает. - person High Performance Mark; 11.10.2013