2013-10-11 1 views
0

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

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 и у меня проблемы с чтением в этом файле и созданием массивов.

+3

Это кажется довольно прямо вперед 'READ (file_num , *) 'упражнение. Не могли бы вы показать нам, что вы пробовали? –

ответ

0

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

character (len=80) :: line 

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

Затем пропустить пустые строки, повторяя Распознать line.

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

read (UnitNum, *) array 

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

+1

Поскольку Fortran хранит массивы в основном порядке столбца, оператор 'read (UnitNum, *) array', скорее всего, предоставит пользователю транспонирование того, что он ожидает. –