【SuperMap .Net 组件】投影坐标与大地坐标转换

最近刚刚从ArcGIS尝试转到国产的超图二次开发组件上。毕竟是国产的,用起来挺顺手的。 超图 .Net组件的联机帮助其实写得很详细了,而且有超图桌面组件技术支持(QQ 2193372962)在,不会的问题基本能很快的帮我解决。 我就把一些用起来和自己的想法不同的地方记录下来,如果能帮到别人最好,不然就当做一个笔记也是极好的。大笑


投影坐标与大地坐标的转换,帮助上说的清楚:

CoordSysTranslator.Forward(Point2Dspoints, PrjCoordSysprjCoordSys) 在同一地理坐标系下,该方法用于将指定的 Point2Ds 类型的点对象的地理坐标转换到投影坐标。

CoordSysTranslator.Inverse(Point2Ds points, PrjCoordSys prjCoordSys) 在同一地理坐标系下,该方法用于将指定的Point2Ds 类型的点对象的投影坐标转换到地理坐标。

但执行代码后发现组成points的几个点都没有变化。经本人验证发现,这个函数类似值传递而不是引用传递,也就是说想得到变换后的点需要从points里取,具体看代码:


        Dim points As Point2Ds = New Point2Ds(New Point2D() {Point1, Point2, Point3})
        Dim prjCoordSys As PrjCoordSys = m_Workspace.Datasources.Item(DataSourceName).PrjCoordSys

        Dim b As Boolean = CoordSysTranslator.Inverse(points, prjCoordSys)

        Dim geoPoint1 As Point2D = points.ToArray()(0)
        Dim geoPoint2 As Point2D = points.ToArray()(1)
        Dim geoPoint3 As Point2D = points.ToArray()(2)

虽然执行了CorrdSysTranslater.Inverse() ,并且返回值为true,但Point1,Point2,Point3是没变换的,变换后得值在points数组里,需要另外赋值。想来这样做也是为了不破坏原来的数据。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值