sullivan
路人甲
路人甲
  • 注册日期2004-11-04
  • 发帖数9
  • QQ
  • 铜币131枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1995回复:7

坐标(经纬)的转换?

楼主#
更多 发布于:2004-11-04 20:06
请问如何将坐标(x、y)转换成坐标的经纬度啊
喜欢0 评分0
sullivan
路人甲
路人甲
  • 注册日期2004-11-04
  • 发帖数9
  • QQ
  • 铜币131枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2004-11-04 20:39
<P>各位大侠,版主啊,急啊?帮帮忙啊 </P>
举报 回复(0) 喜欢(0)     评分
hyb1011
路人甲
路人甲
  • 注册日期2004-07-22
  • 发帖数73
  • QQ
  • 铜币114枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2004-11-04 20:54
<P>Private Sub Map1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
    
       Dim Loc As New MapObjects2.Point</P><P>
       Set Loc = Map1.ToMapPoint(x, y)</P><P>      '在状态栏中显示
      StatusBar1.Panels(2).Text = "经度:" ; loc.x  
      StatusBar1.Panels(3).Text = "纬度:" ; loc.y
      
End Sub</P>
QQ:22621544 欢迎交流~^^~
举报 回复(0) 喜欢(0)     评分
fnwgz
伴读书童
伴读书童
  • 注册日期2004-09-16
  • 发帖数120
  • QQ
  • 铜币638枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2004-11-05 20:57
<img src="images/post/smile/dvbbs/em01.gif" />
我也许很笨,但是我一直再努力,没有放弃!
举报 回复(0) 喜欢(0)     评分
heqjxiaoyao
路人甲
路人甲
  • 注册日期2003-07-31
  • 发帖数981
  • QQ83031582
  • 铜币910枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2004-11-06 16:50
你的图层必须是经纬度坐标的,也就是地理坐标系统,,如果是投影坐标系统出现的是距离为单位的
希望大家访问我的个人博客: 随笔闲谈: http://rsgisman.bokee.com
举报 回复(0) 喜欢(0)     评分
kmxl
路人甲
路人甲
  • 注册日期2004-10-30
  • 发帖数94
  • QQ
  • 铜币294枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2004-11-12 13:28
薛伟编的MAPOBJECTS-地理信息系统程序设计中有这方面的内容,建议参考
举报 回复(0) 喜欢(0)     评分
pzddzp
路人甲
路人甲
  • 注册日期2004-06-07
  • 发帖数18
  • QQ
  • 铜币192枚
  • 威望0点
  • 贡献值0点
  • 银元0个
6楼#
发布于:2004-11-12 21:09
XY->BL
<P>坐标换算是GIS项目中常遇到的问题,我在一个GIS项目中也遇到这样的问题。下面是我算法的代码应该可以解决你的问题。</P>

<P>'已知X,Y坐标,获得经纬度(单位为度分秒,117.352154表示117度35分21.54秒)
Public Function XY2BL(XX As Double, YY As Double, BBDMS As Double, LLDMS As Double) As Double
Dim X As Double, Y As Double
Dim BBf As Double
Dim L0 As Double
'椭球常量
Dim A As Double, B As Double, C As Double, D As Double
Dim E As Double, EE As Double
'计算的辅助参数
Dim K1 As Double, K2 As Double, K3 As Double, K4 As Double, K5 As Double
Dim H2 As Double
Dim SinB As Double, SinB2 As Double, CosB As Double, CosB2 As Double
Dim T As Double, T2 As Double, T4 As Double
Dim N As Double, N2 As Double, N4 As Double</P>
<P>L0 = Val(Left(CStr(XX), 2)) * 3 '3度带中央子午线
A = 6378245: B = 6356863.01277305
K1 = 111134.8611: K2 = 32005.7799: K3 = 133.9238: K4 = 0.6976: K5 = 0.0039
C = A * A / B: D = B * B / A
E = Sqr(A * A - B * B) / A
EE = Sqr(A * A - B * B) / B
X = YY: Y = XX: Y = Y - 39500000
BBf = X / K1 '单位为度
BBf = BBf * PI / 180
Do While Abs(BBf - BBDMS) > 0.00000001
    BBDMS = BBf
    SinB = Sin(BBDMS): SinB2 = SinB * SinB: CosB = Cos(BBDMS)
    BBf = (X + (K2 * SinB + K3 * SinB * SinB2 + K4 * SinB2 * SinB2 * SinB + K5 * SinB2 * SinB2 * SinB2 * SinB) * CosB) / K1
    BBf = BBf * PI / 180
Loop
H2 = EE * EE * CosB * CosB
N = Y * Sqr(1 + H2) / C: N2 = N * N: N4 = N2 * N2
T = Tan(BBf): T2 = T * T: T4 = T2 * T2
BBf = BBf * 180 / PI
BBDMS = BBf - (1 + H2) * T * (90 * N2 - 7.5 * (5 + 3 * T2 + H2 - 9 * H2 * T2) * N4 + 0.25 * (61 + 90 * T2 + 45 * T4) * N2 * N4) / PI
LLDMS = (180 * N - 30 * (1 + 2 * T2 + H2) * N * N2 + 1.5 * (5 + 28 * T2 + 24 * T4) * N * N4) / (PI * CosB)
LLDMS = L0 + LLDMS
LLDMS = Rad2Dms(LLDMS * PI / 180)
BBDMS = Rad2Dms(BBDMS * PI / 180)
End Function</P>
<P>'弧度到度分秒(125.5423表示125度54分23秒)
Public Function Rad2Dms(Rad As Double) As Double
Dim Degree As Double, Miniute As Double, Second As Double
Dim Sign As Integer '符号
If Rad = 0 Then
    Rad2Dms = 0
    Return
End If
If Rad < 0 Then
    Sign = -1
Else
    Sign = 1
End If
'获得度分秒
Rad = Abs(Rad)
Rad = Rad * 180 / PI
Degree = Fix(Rad)
Miniute = Fix((Rad - Degree) * 60)
Second = Rad * 3600 - Degree * 3600 - Miniute * 60
Rad2Dms = Sign * (Degree + Miniute / 100 + Second / 10000)
End Function</P>
举报 回复(0) 喜欢(0)     评分
闲云野鹤-nx
路人甲
路人甲
  • 注册日期2004-11-16
  • 发帖数9
  • QQ
  • 铜币127枚
  • 威望0点
  • 贡献值0点
  • 银元0个
7楼#
发布于:2004-11-22 11:18
<P>谢谢!支持</P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部