max533 发表于 2014-9-8 17:57:05

由fortran把緯度和經度由分、秒轉換成小數點的表示法

program convert_lat_lon
implicit none

integer :: stat,lata,lona,latb,lonb
character :: station*6
real*8 :: lat,latc,lon,lonc

   open (11,file="dbar.txt")
   open (22,file="dbar_out.txt")

   stat=0
   do while (stat==0)
   read (11,100,iostat=stat) station,lata,latb,latc,lona,lonb,lonc
100 format (a6,7x,i3,1x,i2,2x,f3.1,3x,i2,1x,i2,2x,f3.1)
   if (stat/=0) exit
   lat=(lata+(latb/60)+(latc/3600.0000))
   lon=(lona+(lonb/60)+(lonc/3600.0000))
   write (22,"(a6,3x,f12.8,3x,f11.8)") station,lat,lon   
   end do
end program
-------------------------------------------------------------------------

想藉由fortran把緯度和經度由分、秒轉換成小數點的表示法
但dbar_out.txt 此檔案卻一直為0KB,沒有寫入,懇請高手大大指教。

vvt 发表于 2014-9-8 18:37:51

100 format (a6,7x,i3,1x,i2,2x,f3.1,3x,i2,1x,i2,2x,f3.1)
修改为
100 format (a6,7x,i3,2x,i2,2x,f4.1,6x,i2,2x,i2,2x,f4.1)

主要问题有:
1.您数据里的空格为全角空格,占2个字符。所以是 2x
2.您数据里的横线也是全角的。所以是 6x
3.您的秒是 41.0 这种格式,应该为 f4.1

max533 发表于 2014-9-8 18:54:52

本帖最后由 max533 于 2014-9-8 18:59 编辑

vvt 发表于 2014-9-8 18:37
100 format (a6,7x,i3,1x,i2,2x,f3.1,3x,i2,1x,i2,2x,f3.1)
修改为
100 format (a6,7x,i3,2x,i2,2x,f4.1,6x ...
感謝您^ ^

vvt 发表于 2014-9-8 19:01:03

C0A980   121.01138889   25.01138889
C0A990   121.01563889   25.00841667
C0A9A0   121.00138889   25.01305556
C0A9B0   121.00588889   25.00091667
C0A9C0   121.01222222   25.00277778
C0A9E0   121.01166667   25.00888889

我这里计算正确。用的 gfortran
页: [1]
查看完整版本: 由fortran把緯度和經度由分、秒轉換成小數點的表示法