24小时热门版块排行榜    

查看: 1558  |  回复: 2

zzahkj

木虫 (著名写手)

[交流] Arcengine怎么把西安80坐标转换为经纬度? 已有1人参与

菜鸟求助,给点代码吧!谢谢!
回复此楼
不要迷恋哥,哥只是一个过客!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

昆昆的小虫

金虫 (小有名气)


小木虫(金币+0.5):给个红包,谢谢回帖
代码不方便共享 建议去看下书《应用大地测量学》 中国矿业大学出版社
苍老是一段年华
2楼2011-05-28 14:18:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zzahkj

木虫 (著名写手)


yanggis(金币+1): 谢谢分享。。。 2011-05-29 21:47:02
引用回帖:
Originally posted by 昆昆的小虫 at 2011-05-28 14:18:31:
代码不方便共享 建议去看下书《应用大地测量学》 中国矿业大学出版社

哦  主要是我的原图是无带号的即X、Y是6、7为的,另外我的题目也问错了,应该是经纬度转换为西安坐标系,可是我只能把经纬度转换为有带号的即X、Y是8、7位的,我的代码如下  能不能给我指点一下  怎么转换为6、7位的
CODE:
    Dim ProjNo = 0, ZoneWide As Integer '  带宽
        Dim longitude1, latitude1, longitude0, latitude0, X0, Y0, xval, yval As Double
        Dim a, f, e2, ee, NN, T, C, M, iPI, Aa As Double
        iPI = 0.0174532925199433 '  3.1415926535898/180.0;
        ZoneWide = 6   ' 6度带宽
        a = 6378140.0
        f = 1 / 298.257 '   80年西安坐标系参数
        ProjNo = (UserInput_Lon / ZoneWide)
        longitude0 = ProjNo * ZoneWide + ZoneWide / 2
        longitude0 = longitude0 * iPI
        latitude0 = 0
        longitude1 = UserInput_Lon * iPI '  经度转换为弧度
        latitude1 = UserInput_Lat * iPI '    纬度转换为弧度
        e2 = 2 * f - f * f
        ee = e2 * (1.0 - e2)
        NN = a / Math.Sqrt(1.0 - e2 * Math.Sin(latitude1) * Math.Sin(latitude1))
        T = Math.Tan(latitude1) * Math.Tan(latitude1)
        C = ee * Math.Cos(latitude1) * Math.Cos(latitude1)
        Aa = (longitude1 - longitude0) * Math.Cos(latitude1)
        M = a * ((1 - e2 / 4 - 3 * e2 * e2 / 64 - 5 * e2 * e2 * e2 / 256) * latitude1 - (3 * e2 / 8 + 3 * e2 * e2 / 32 + 45 * e2 * e2 * e2 / 1024) * Math.Sin(2 * latitude1) + (15 * e2 * e2 / 256 + 45 * e2 * e2 * e2 / 1024) * Math.Sin(4 * latitude1) - (35 * e2 * e2 * e2 / 3072) * Math.Sin(6 * latitude1))
        xval = NN * (Aa + (1 - T + C) * Aa * Aa * Aa / 6 + (5 - 18 * T + T * T + 72 * C - 58 * ee) * Aa * Aa * Aa * Aa * Aa / 120)
        yval = M + NN * Math.Tan(latitude1) * (Aa * Aa / 2 + (5 - T + 9 * C + 4 * C * C) * Aa * Aa * Aa * Aa / 24 + (61 - 58 * T + T * T + 600 * C - 330 * ee) * Aa * Aa * Aa * Aa * Aa * Aa / 720)
        X0 = 1000000L * (ProjNo + 1) + 500000L
        Y0 = 0
        xval = xval + X0
        yval = yval + Y0
        Dim LocationX As Integer = xval
        Dim LocationY As Double = yval

不要迷恋哥,哥只是一个过客!
3楼2011-05-28 14:48:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zzahkj 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见