爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 5672|回复: 10

[求助] 分享一个自己写的【地理坐标转直角坐标小程序】,希望大神可以进来批评指正

[复制链接]

新浪微博达人勋

发表于 2018-1-28 15:23:23 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 little_five 于 2018-1-28 15:33 编辑

最近在做台风路径突变的统计分析,需要先把经纬度转为平面坐标用的是中国台风1949-2015年的台风最佳路径集

看了好多资料和文献,发现真是隔行如隔山,什么高斯坐标、北京84,什么的完全不懂
后面搜到个简易方法,方法公式如下图
002UWa5Fty6O8T29PvZ83&690.png
这步算出来的貌似没有问题
但是下一步要算台风路径的斜率和角度时,数据感觉很奇怪啊
求大神指导指导

最后附上我的程序
  1. program main
  2. implicit none
  3.    
  4.     character*5 :: liu
  5.     character*4 :: wu,C
  6.     integer :: i,j,k,line,ty_id
  7.     character :: F,G
  8.     character*20 :: name,h
  9.     integer :: status = 0
  10.     integer, allocatable :: ymdt(:),cata(:)
  11.     real, allocatable :: lat(:),lon(:),pres(:),wind(:),x(:),y(:),w(:),N(:)
  12.     character*8 :: year
  13.     real*8, parameter :: pi=3.1415926
  14.     real*8, parameter :: a=6378.137, b=6356.7523
  15.     real*8 :: e2

  16.     e2=(a**2-b**2)/a**2

  17.     do k=1949,2015,1
  18.       write(year,'(I4)')k
  19.       open(unit = 10,file='h:/CH'//trim(adjustl(year))//'BST.txt')
  20.       open(unit = 11,file='h:/CH'//trim(adjustl(year))//'BST.txt',status='replace',position='append')

  21.         do while(.true.)
  22.           read(10,*,iostat=status)liu,wu,line,ty_id,C,F,G,name,h
  23.           if(status/=0)exit
  24.           allocate(ymdt(line),cata(line),lat(line),lon(line),pres(line),wind(line),x(line),y(line),w(line),N(line))
  25.           do i=1,line,1
  26.             read(10,*,iostat=status)ymdt(i),cata(i),lat(i),lon(i),pres(i),wind(i)
  27.             w(i)=dsqrt(1-((sin(lat(i)))**2)*e2)
  28.             N(i)=a/w(i)
  29.             x(i)=N(i)*cos(lat(i)/18000*pi)*cos(lon(i)/18000*pi)
  30.             y(i)=N(i)*cos(lat(i)/18000*pi)*sin(lon(i)/18000*pi)
  31.           end do
  32.           write(11,"(A6,1X,I3,1X,I4,1X,A20)")liu,line,ty_id,name
  33.           do j=1,line,1
  34.             write(11,*)ymdt(j),cata(j),lat(j),lon(j),x(j),y(j)
  35.           end do
  36.        deallocate(ymdt,cata,lat,lon,pres,wind,x,y,w,N)
  37.        end do
  38.     end do
  39. end
复制代码

评分

参与人数 1金钱 +10 贡献 +2 收起 理由
mofangbao + 10 + 2

查看全部评分

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-1-28 16:08:30 | 显示全部楼层
不是说西安80,北京54么?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-1-28 16:11:02 | 显示全部楼层
ljchen1989 发表于 2018-1-28 16:08
不是说西安80,北京54么?

对对对,是这个的,但是我还是什么都不懂,然后看文献那个高斯-克吕格坐标转换,还有什么带之类的,也是看得一脸懵。。。。。。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-1-28 16:11:07 | 显示全部楼层
ljchen1989 发表于 2018-1-28 16:08
不是说西安80,北京54么?

对对对,是这个的,但是我还是什么都不懂,然后看文献那个高斯-克吕格坐标转换,还有什么带之类的,也是看得一脸懵。。。。。。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-1-28 20:42:17 | 显示全部楼层
已经不错啦  不过建议用proj4很强大
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-1-29 08:52:12 | 显示全部楼层
zhangqqqf 发表于 2018-1-29 07:58
觉得不错的样子,谢谢楼主

我的方法应该是错的,算出来的数据不对
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-1-29 08:54:54 | 显示全部楼层
931404656 发表于 2018-1-28 20:42
已经不错啦  不过建议用proj4很强大

我的方法应该是错的算出来的数据不对
然后搜了一天文献也没看出什么来
好郁闷{:cry:}
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-1-29 10:13:13 | 显示全部楼层
我用Fortran写过LCC转lonlat的
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-1-29 12:17:48 | 显示全部楼层
little_five 发表于 2018-1-28 16:11
对对对,是这个的,但是我还是什么都不懂,然后看文献那个高斯-克吕格坐标转换,还有什么带之类的,也是 ...

据说要用3参数或5参数才能转换,然而这些参数属于国家机密
所以,从大地坐标到经纬度坐标,基本没有公式
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-1-29 12:31:53 | 显示全部楼层
931404656 发表于 2018-1-29 10:13
我用Fortran写过LCC转lonlat的

好厉害啊~
不过是我把问题想复杂了,现在不需要转了,哈哈
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表