|
//添加数据 private void toolStripButton1_Click(object sender, EventArgs e) {
IScene scene = axSceneControl1.Scene; IGxDialog dlg = new GxDialogClass(); IGxObjectFilterCollection filtercollection = dlg as IGxObjectFilterCollection;
filtercollection.AddFilter(new GxFilterDatasetsAndLayers(), true); IEnumGxObject enumobj; dlg.AllowMultiSelect = true; dlg.Title = "添加数据"; dlg.DoModalOpen(0, out enumobj); if (enumobj != null) { enumobj.Reset(); IGxObject gxobj = enumobj.Next();
while (gxobj != null) { if (gxobj is IGxDataset) { IGxDataset gxdataset = gxobj as IGxDataset; IDataset pdataset = gxdataset.Dataset; switch (pdataset.Type) { case esriDatasetType.esriDTFeatureClass:
IFeatureLayer pfl = new FeatureLayerClass(); pfl.FeatureClass = (IFeatureClass)pdataset;
ILayer layer = pfl; scene.AddLayer(layer, true); pfl.Name = dlg.Name; break;
case esriDatasetType.esriDTFeatureDataset: IFeatureDataset pfeatureds = pdataset as IFeatureDataset; IEnumDataset enumdataset = pfeatureds.Subsets; IDataset dataset = enumdataset.Next(); while (dataset != null) { if (dataset.Type == esriDatasetType.esriDTFeatureClass) {
IFeatureLayer pfly = new FeatureLayerClass(); pfly.FeatureClass = (IFeatureClass)dataset;
ILayer layery = pfly; scene.AddLayer(layery, true); } dataset = enumdataset.Next(); }
break; case esriDatasetType.esriDTRasterDataset: IRasterDataset rasterds = pdataset as IRasterDataset; IRasterLayer rasterlayer = new RasterLayerClass(); rasterlayer.CreateFromDataset(rasterds); ILayer layerr = rasterlayer; scene.AddLayer(layerr, true); break;
case esriDatasetType.esriDTTin: ITin ptin = pdataset as ITin; ITinLayer tinlayer = new TinLayerClass(); tinlayer.Dataset = ptin; ILayer layert = tinlayer as ILayer; scene.AddLayer(layert, true); break;
default: break; } } else if (gxobj is IGxLayer) { IGxLayer gxlayer = gxobj as IGxLayer; ILayer player = gxlayer.Layer; scene.AddLayer(player, true); } gxobj = enumobj.Next(); } }
}
|