ArcGlobe点击IGlobeServerLayer图层读取信息

ArcGISServer将点图层发布成Globe服务,AE开发中自定义识别工具,读取点数据信息。
1) 通过Locate方法获取图层对象,图层对象中的SearchOID就是你点中的要素Objectid。
2) 通过GlobeServer.Identify读取结果集IGlobeServerIdentifyResults。
 
代码如下:
 public override void OnMouseDown(int Button, int Shift, int X, int Y)
        {
            if (Button != 1) return;

            //Get the element that the user selects
            ESRI.ArcGIS.Geometry.IPoint ppPoint = new ESRI.ArcGIS.Geometry.PointClass();
            ESRI.ArcGIS.Geometry.IZAware zAware = ppPoint as ESRI.ArcGIS.Geometry.IZAware;
            zAware.ZAware = true;
            object ppObject;
            object ppOwner;
            globeDisplay.Locate(globeDisplay.ActiveViewer, X, Y, false, false, out ppPoint, out ppOwner, out ppObject);

            if (ppPoint == null) return;

            if (!(ppOwner is IGlobeServerLayer)) return;

            Help_Globe.FlashPoint(ppPoint);


            gLayer = ppOwner as IGlobeServerLayer;
            IGlobeLayerInfo gLayeInfo = gLayer.GlobeLayerInfo;


            if (gLayeInfo.Name != "3dd文件中的点图层名称") return;

            IGlobeServerIdentifyResults results = gLayer.GlobeServer.Identify(gLayer.GlobeServerLayerID, gLayer.SearchOID, gLayeInfo.Extent.Envelope);
            if (results.Count > 0)
            {
                IGlobeServerIdentifyResult result = results.get_Element(0);
                object dwmc = result.Properties.GetProperty("DW_MC");

                if (Convert.IsDBNull(dwmc) || dwmc == null) return;

                FormWuZhongInfo dlg = new FormWuZhongInfo(dwmc.ToString(), dwmc.ToString());
                dlg.Text = dwmc.ToString();
                dlg.ShowDialog();
                
            }
            return;

          
}

  

posted on 2015-01-13 16:15  janehlp  阅读(278)  评论(0编辑  收藏  举报