本代码实现在WGS84系统的大地坐标(BLH)和空间直角坐标(XYZ)的互相转换,符合标准语法,可直接使用

如下代码,输出为:
 WGS84:  -2175790.73969891    4461032.11207734     3992337.79032463
 BLH:   38.9999999999998    116.000000000000    33.0000069718808

Module CorrTrans
!// WGS84 系统BLH坐标与空间直角坐标转换
!// Fortran Coder http://fcode.cn
!// Adapted from Acheng's C++ code
Implicit None
Integer , parameter :: DP = Selected_Real_Kind( 12 )
Real(kind=DP) , parameter :: PI = 3.14159265358979323846_DP
Real(kind=DP) , parameter , private :: a = 6378137._DP
Real(kind=DP) , parameter , private :: f = 1.0_DP / 298.257223563_DP
Real(kind=DP) , parameter , private :: t = a * ( 1.0_DP - f )
Real(kind=DP) , parameter , private :: e = sqrt( (a*a - t*t) / (a*a) )
contains
Subroutine XYZ2BLH( x , y , z , B , L , H )
Real(Kind=DP) , Intent( IN ) :: x , y , z
Real(Kind=DP) , Intent( OUT ) :: B , L , H
real(kind=DP) :: N
integer :: i
L = atan( abs(y/x) )
B = atan( abs(z/sqrt(x*x+y*y) ) )
do i = 1 , 5
N = a / sqrt( 1.0_DP - e*e*sin(B)*sin(B) )
H = z / sin(B) - N * ( 1.0_DP - e*e )
B = atan( z*(N+H) / ( sqrt(x*x+y*y)*(N*(1.0_DP-e*e)+H) ) )
end do
if ( x < 0._DP .and. y > 0._DP ) L = PI - L
if ( x > 0._DP .and. y < 0._DP ) L = -1.0_DP * L
if ( x < 0._DP .and. y < 0._DP ) L = -1.0 * PI + L
B = B * 180._DP / PI
L = L * 180._DP / PI
End Subroutine XYZ2BLH Subroutine BLH2XYZ( B , L , H , x , y , z )
Real(Kind=DP) , Intent( IN ) :: B , L , H
Real(Kind=DP) , Intent( OUT ) :: x , y , z
real(kind=DP) :: N , Br , Lr
Br = B * PI / 180._DP
Lr = L * PI / 180._DP
N = a / sqrt( 1.0_DP - e*e*sin(Br)*sin(Br) )
x = ( N + H ) * cos(Br)*cos(Lr)
y = ( N + H ) * cos(Br)*sin(Lr)
z = ( N*(1.0_DP - e*e ) + H ) * sin(Br);
End Subroutine BLH2XYZ End Module CorrTrans Program www_fcode_cn
Use CorrTrans
Implicit None
Real(Kind=DP) :: x , y , z
Real(Kind=DP) :: B , L , H
B = 39._DP ; L = 116._DP ; H = 33._DP
call BLH2XYZ( B , L , H , x , y , z )
write(*,*) 'WGS84:' , x , y , z
call XYZ2BLH( x , y , z , B , L , H )
write(*,*) 'BLH:' , B , L , H
End Program www_fcode_cn

转自:http://fcode.cn/code_prof-89-1.html

[转载]:经纬度与WGS84坐标转换的更多相关文章

  1. 火星坐标、百度坐标、WGS84坐标转换代码(JS、python版)

    火星坐标.百度坐标.WGS84坐标转换代码(JS.python版) 一.JS版本源码 github:https://github.com/wandergis/coordTransform /** * ...

  2. 火星坐标、百度坐标、WGS84坐标转换代码(JS)

    JS版本源码 /** * Created by Wandergis on 2015/7/8. * 提供了百度坐标(BD09).国测局坐标(火星坐标,GCJ02).和WGS84坐标系之间的转换 */ / ...

  3. C# UTM坐标和WGS84坐标转换小工具

    工具根据:http://home.hiwaay.net/~taylorc/toolbox/geography/geoutm.html js代码改编 工具源码github:https://github. ...

  4. WGS84,GCJ02, BD09坐标转换

    public class Gps { private double wgLat; private double wgLon; public Gps(double wgLat, double wgLon ...

  5. python 编写的经纬度坐标转换类

    # -*- coding: utf-8 -*- # /** # * 各地图API坐标系统比较与转换; # * WGS84坐标系:即地球坐标系,国际上通用的坐标系.设备一般包含GPS芯片或者北斗芯片获取 ...

  6. 简谈百度坐标反转至WGS84的三种思路

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 基于百度地图进行数据展示是目前项目中常见场景,但是因为百度地图 ...

  7. IDL通过经纬度定位获取DN值

    以前就想写,但是因为envi可以就一直没弄.今天正好有个机会,就做了这个事情.ENVI中在主窗口中pixel locator可以实现,但是当我们需要读入很多的数据的时候,也就是批量处理的时候,显然编程 ...

  8. WGS84、GCJ-02(火星坐标)、百度坐标,Web墨卡托坐标

    GCJ-02坐标系统(火星坐标)简介:http://blog.csdn.net/giswens/article/details/8775121(存档:http://mapbd.com/cms/2012 ...

  9. BD09坐标(百度坐标) WGS84(GPS坐标) GCJ02(国测局坐标) 的相互转换

    BD09坐标(百度坐标) WGS84(GPS坐标) GCJ02(国测局坐标) 的相互转换 http://www.cnphp6.com/archives/24822 by root ⋅ Leave a ...

随机推荐

  1. 使用Ueditor的心得。

    现在有一个项目,需要富文本插件,以前用的都是国外的CKEditor,后来百度推出了自己的富文本编辑插件Ueditor,试用了一下,感觉不错. 遂决定在新项目中使用该插件. 在使用Ueditor上传图片 ...

  2. 更新包地址安装新版node.js

    # apt-get update # apt-get install -y python-software-properties software-properties-common # add-ap ...

  3. 在网页中插入MSN,Skype,QQ的方法

    MSN源码: <a href="msnim:chat?contact=come400@hotmail.com" target="blank">可以适 ...

  4. Context的使用(转)

    1.Context概念 Context,相信不管是第一天开发Android,还是开发Android的各种老鸟,对于Context的使用一定不陌生~~你在加载资源.启动一个新的Activity.获取系统 ...

  5. source insight 相对路径

    source insight项目 在移动到另外一个地方时,会因为之前是绝对路径而导致,项目中的文件都不可用,需要重新把这些文件添加一遍. 这是个令人讨厌的事情. 解决办法为创建项目时设定为绝对路径.方 ...

  6. mm/swap

    /* *  linux/mm/swap.c * *  Copyright (C) 1991, 1992  Linus Torvalds */ /* * This file should contain ...

  7. nginx配置文件重写url不带index.php

    如题: 代码 location / { root /项目目录/; index index.php; if (-f $request_filename/index.php){ rewrite (.*) ...

  8. OpenGL概述

    简介 状态机 glBegin()与glEnd() glFlush()与glFinish() OpenGL简介 OpenGL是图形硬件的一种软件接口.它被设计为硬件独立的接口,可用于多种不同硬件平台.O ...

  9. Validation failed for one or more entities. See ‘EntityValidationErrors’解决方法【转载】

    摘自:http://www.cnblogs.com/douqiumiao/default.aspx?opt=msg Validation failed for one or more entities ...

  10. 复制到剪贴板的JS实现--ZeroClipboard (兼解决IE下兼容问题)

    复制到剪贴板的JS实现--ZeroClipboard (兼解决IE下兼容问题) 相信绝大多数人都遇到过这样的功能实现,“复制”或者“复制到剪贴板”这样的功能.但是由于各大浏览器的实现方案不一样,导致几 ...