{
//取查询条件
String strCode = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();
if (strCode == String.Empty)
{
return;
}
//取查询图层名称
String LayerName = this.comboBox1.SelectedItem.ToString();
//获得当前视图
IScene scene = this.axGlobe.Globe.GlobeDisplay.Scene;
IQueryFilter pQueryFilter = new QueryFilterClass();
IActiveView pActiveView;
pActiveView = (IActiveView)scene;
//清空上一次选择
scene.ClearSelection();
IFeatureLayer pFeatureLayer;
pFeatureLayer = (IFeatureLayer)scene.get_Layer(GetLayerId(LayerName, scene));
pQueryFilter.WhereClause = "NAME='" + strCode + "'";
IFeatureCursor pFeatureCursor;
pFeatureCursor = pFeatureLayer.FeatureClass.Search(pQueryFilter, false);
IFeature pFeature;
pFeature = pFeatureCursor.NextFeature();
while (pFeature != null)
{
scene.SelectFeature(pFeatureLayer, pFeature);
pFeature = pFeatureCursor.NextFeature();
}
ESRI.ArcGIS.Carto.ILayer layer = (ESRI.ArcGIS.Carto.ILayer)scene.get_Layer(GetLayerId(LayerName, scene));
// Get the line feature selected in the layer
ESRI.ArcGIS.Carto.IFeatureLayer featureLayer = (ESRI.ArcGIS.Carto.IFeatureLayer)layer;
ESRI.ArcGIS.Carto.IFeatureSelection featureSelection = (ESRI.ArcGIS.Carto.IFeatureSelection)layer;
ESRI.ArcGIS.Geodatabase.ISelectionSet selectionSet = featureSelection.SelectionSet;
ESRI.ArcGIS.Geodatabase.IFeatureClass featureClass = featureLayer.FeatureClass;
string shapeField = featureClass.ShapeFieldName;
ESRI.ArcGIS.Geodatabase.ISpatialFilter spatialFilterCls = new ESRI.ArcGIS.Geodatabase.SpatialFilterClass();
ESRI.ArcGIS.Geometry.ISpatialReference spatialReference = scene.SpatialReference;
spatialFilterCls.GeometryField = shapeField;
spatialFilterCls.set_OutputSpatialReference(shapeField, spatialReference);
ESRI.ArcGIS.Geodatabase.ICursor cursor;
selectionSet.Search(spatialFilterCls, true, out cursor);
ESRI.ArcGIS.Geodatabase.IFeatureCursor featureCursor = (ESRI.ArcGIS.Geodatabase.IFeatureCursor)cursor;
ESRI.ArcGIS.Geodatabase.IFeature SFeature;
SFeature = featureCursor.NextFeature();
ESRI.ArcGIS.Geometry.IEnvelope envelope = SFeature.Shape.Envelope;
ESRI.ArcGIS.Analyst3D.ICamera camera = this.axGlobe.Globe.GlobeDisplay.ActiveViewer.Camera;
ESRI.ArcGIS.GlobeCore.IGlobeCamera globeCamera = (ESRI.ArcGIS.GlobeCore.IGlobeCamera)camera;
ESRI.ArcGIS.Analyst3D.ISceneViewer sceneViewer = this.axGlobe.Globe.GlobeDisplay.ActiveViewer;
globeCamera.OrientationMode = esriGlobeCameraOrientationMode.esriGlobeCameraOrientationGlobal;
IPoint target = new PointClass();
target.PutCoords(0, 0);
target.Z = 0;
axGlobe.Globe.GlobeDisplay.ActiveViewer.Camera.Target = target;
axGlobe.Globe.GlobeDisplay.ActiveViewer.Camera.ViewingDistance = 1.5;
axGlobe.Globe.GlobeDisplay.ActiveViewer.Camera.ViewFieldAngle = 8.5;
axGlobe.Globe.GlobeDisplay.ActiveViewer.Camera.RollAngle = 0.0;
axGlobe.Globe.GlobeDisplay.ActiveViewer.Camera.RecalcUp();
//定位
globeCamera.SetToZoomToExtents(envelope, this.axGlobe.Globe, sceneViewer);
//显示比例调整
double vfa = this.axGlobe.Globe.GlobeDisplay.ActiveViewer.Camera.ViewFieldAngle;
axGlobe.Globe.GlobeDisplay.ActiveViewer.Camera.ViewFieldAngle = vfa * 6;
axGlobe.Globe.GlobeDisplay.ActiveViewer.Redraw(false);
}