当前位置:编程学习 > 网站相关 >>

ArcGlobe二次开发,鼠标拾取点转换成地理坐标错误

    第一次发帖,不知道有什么要注意的,有什么不足请大家多多指教。
    C#+ArcEngine Globe二次开发,通过鼠标拾取点转换得到地理坐标。看帮助文档和别人基本都是这么做的,直接利用WindowToGeographic函数就能从二维屏幕坐标转换到三维空间大地坐标,我的代码如下:   
    IGlobeViewUtil globeViewUtil = axGlobeControl1.GlobeCamera as IGlobeViewUtil;
    IGlobeDisplay pGlobeDisplay = axGlobeControl1.GlobeDisplay;
    double dLon = 0;
    double dLat = 0;
    double dAlt = 0;
    globeViewUtil.WindowToGeographic(pGlobeDisplay, pGlobeDisplay.ActiveViewer, e.x, e.y,
        true, out dLon, out dLat, out dAlt);//由屏幕获取经纬度和高程
    这里我有点儿疑问。鼠标在屏幕上点击可获取一个二维坐标,映射到三维场景中其实就从观察点到屏幕坐标的一条射线,转换到三维空间不可能是一个特定的点,除非给定深度值或者说能严格限定视线长度的条件。我不知道这个函数是怎么确定的,猜想可能是得到视线和三维地形的交点,也就是说拾取的这个点在地面上。
    但是我现在做这一步的时候,周围的地形高度都在100米左右,鼠标拾取的点地理坐标的高度有七百多米,使得相应的经纬度也成了错误的。如下图所示:

    e是鼠标点取的位置(跟踪了下应该没问题),转换出来的应该是P的位置,但是实际上得到了P'的位置,由于高度不对,使得经纬度也有很大的偏差。直观的感受就是视线长度不对,还没有延伸到和地面的交点上。中间只用了一个函数,一直不知道为什么会出现这个问题。是不是有什么地方需要设置?菜鸟求指导,先谢谢了。 ArcEngine ArcGlobe WindowToGeographic 鼠标拾取 三维点 --------------------编程问答-------------------- 这个问题也是我比较关注的! --------------------编程问答--------------------
引用 1 楼 yangbin999288 的回复:
这个问题也是我比较关注的!

终于有一个人回我了,好开心~~~
你也遇到过类似问题吗? --------------------编程问答-------------------- 你如果了解3维空间的鼠标拾取事件就知道:
鼠标拾取点,就是二维坐标的屏幕鼠标点击点,垂直投影下的一条射线,射线(垂直于屏幕的平面法向量)有一系列的深度,拾取点就是这条射线与3维空间物体(在此处只有地形一种物体)第一个相交的点的3维坐标(X,Y,Z),即是(LON,LAT,HEIGHT),也就是输出值。

   其实射线与物体(3维空间)相交可能不止一个点(如果只有一个地形地球,就有2个焦点),取第一个交点做为返回值;
   如果还有其他的三维物体,相交就有可能有多个交点(这些交点会存储在一个path路径上(交点数组队列))返回值同样是默认为第一个交点;
   如果你的3维空间还有如建筑物等,那这个默认的返回值就不是你想得到的地形的交点了;
   但与地形交点已经存储在路径当中,可以通过其他方式排出,就可得到地形的正确交交点;
没有用过ArcEngine Globe不知道有没有排出如相交对象的函数;或是函数设置,通过给定路径当中的第几个点参数,等等...
--------------------编程问答--------------------
引用 3 楼 blue_sky_bird 的回复:
   如果还有其他的三维物体,相交就有可能有多个交点(这些交点会存储在一个path路径上(交点数组队列))返回值同样是默认为第一个交点;
   如果你的3维空间还有如建筑物等,那这个默认的返回值就不是你想得到的地形的交点了

谢谢~
场景里没有其他的建筑物遮挡,人能直接看到地面。不知道是什么问题…… --------------------编程问答-------------------- 有几种可能性:
  1.地形文件整体高程有偏移量(如加载是不是在(0,0,0),而是(0,0,Z);
  2.有其它的物体:(在此高程位置)
     A.如空间的点(比方是SHP文件的特征feature的图形、线、或者点)
     B.如金子塔图片的组织图在此高度有设置图层;
     C.有透明通道的图在此高程位置,如叠加的云层图等等
     D.其它的不明显物体等等; --------------------编程问答--------------------
引用 1 楼 yangbin999288 的回复:
这个问题也是我比较关注的!

杨老师也有时间来这里逛啊
补充:企业软件 ,  地理信息系统
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,