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;
}